< prev index next >
src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
Print this page
rev 50904 : Move Shenandoah stubs generation into ShenandoahBarrierSetAssembler
*** 31,40 ****
--- 31,41 ----
#include "opto/castnode.hpp"
#include "opto/movenode.hpp"
#include "opto/phaseX.hpp"
#include "opto/rootnode.hpp"
#include "opto/runtime.hpp"
+ #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
#include "gc/shenandoah/c2/shenandoahSupport.hpp"
#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
#include "opto/subnode.hpp"
Node* ShenandoahBarrierNode::skip_through_barrier(Node* n) {
*** 2530,2545 ****
break;
}
} else {
if (n->is_Proj()) {
if (n->in(0)->Opcode() == Op_CallLeafNoFP) {
! if (n->in(0)->as_Call()->entry_point() != StubRoutines::shenandoah_wb_C()) {
const_oop = NULL;
break;
}
} else if (n->in(0)->is_MachCallLeaf()) {
! if (n->in(0)->as_MachCall()->entry_point() != StubRoutines::shenandoah_wb_C()) {
const_oop = NULL;
break;
}
}
} else {
--- 2531,2546 ----
break;
}
} else {
if (n->is_Proj()) {
if (n->in(0)->Opcode() == Op_CallLeafNoFP) {
! if (n->in(0)->as_Call()->entry_point() != ShenandoahBarrierSetAssembler::shenandoah_wb_C()) {
const_oop = NULL;
break;
}
} else if (n->in(0)->is_MachCallLeaf()) {
! if (n->in(0)->as_MachCall()->entry_point() != ShenandoahBarrierSetAssembler::shenandoah_wb_C()) {
const_oop = NULL;
break;
}
}
} else {
*** 3974,3984 ****
MergeMemNode* mm = MergeMemNode::make(base);
mm->set_memory_at(alias, wb_mem);
mm->set_memory_at(Compile::AliasIdxRaw, raw_mem);
phase->register_new_node(mm, c);
! Node* call = new CallLeafNoFPNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), StubRoutines::shenandoah_wb_C(), "shenandoah_write_barrier", TypeRawPtr::BOTTOM);
call->init_req(TypeFunc::Control, c);
call->init_req(TypeFunc::I_O, phase->C->top());
call->init_req(TypeFunc::Memory, mm);
call->init_req(TypeFunc::FramePtr, phase->C->top());
call->init_req(TypeFunc::ReturnAdr, phase->C->top());
--- 3975,3985 ----
MergeMemNode* mm = MergeMemNode::make(base);
mm->set_memory_at(alias, wb_mem);
mm->set_memory_at(Compile::AliasIdxRaw, raw_mem);
phase->register_new_node(mm, c);
! Node* call = new CallLeafNoFPNode(ShenandoahBarrierSetC2::shenandoah_write_barrier_Type(), ShenandoahBarrierSetAssembler::shenandoah_wb_C(), "shenandoah_write_barrier", TypeRawPtr::BOTTOM);
call->init_req(TypeFunc::Control, c);
call->init_req(TypeFunc::I_O, phase->C->top());
call->init_req(TypeFunc::Memory, mm);
call->init_req(TypeFunc::FramePtr, phase->C->top());
call->init_req(TypeFunc::ReturnAdr, phase->C->top());
*** 4388,4398 ****
Unique_Node_List memories;
nodes.push(root);
for (uint next = 0; next < nodes.size(); next++) {
Node *n = nodes.at(next);
! if (n->Opcode() == Op_CallLeafNoFP && n->as_Call()->_entry_point == StubRoutines::shenandoah_wb_C()) {
controls.push(n);
if (trace) { tty->print("XXXXXX verifying"); n->dump(); }
for (uint next2 = 0; next2 < controls.size(); next2++) {
Node *m = controls.at(next2);
if (!m->is_Loop() || controls.member(m->in(LoopNode::EntryControl)) || 1) {
--- 4389,4399 ----
Unique_Node_List memories;
nodes.push(root);
for (uint next = 0; next < nodes.size(); next++) {
Node *n = nodes.at(next);
! if (n->Opcode() == Op_CallLeafNoFP && n->as_Call()->_entry_point == ShenandoahBarrierSetAssembler::shenandoah_wb_C()) {
controls.push(n);
if (trace) { tty->print("XXXXXX verifying"); n->dump(); }
for (uint next2 = 0; next2 < controls.size(); next2++) {
Node *m = controls.at(next2);
if (!m->is_Loop() || controls.member(m->in(LoopNode::EntryControl)) || 1) {
< prev index next >