< prev index next >
src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
Print this page
rev 57329 : 8234974: Shenandoah: Do concurrent roots even when no evacuation is necessary
*** 1016,1026 ****
phase->register_control(ctrl, loop, in_cset_fast_test_iff);
}
void ShenandoahBarrierC2Support::call_lrb_stub(Node*& ctrl, Node*& val, Node* load_addr, Node*& result_mem, Node* raw_mem, bool is_native, PhaseIdealLoop* phase) {
IdealLoopTree*loop = phase->get_loop(ctrl);
! const TypePtr* obj_type = phase->igvn().type(val)->is_oopptr()->cast_to_nonconst();
// The slow path stub consumes and produces raw memory in addition
// to the existing memory edges
Node* base = find_bottom_mem(ctrl, phase);
MergeMemNode* mm = MergeMemNode::make(base);
--- 1016,1026 ----
phase->register_control(ctrl, loop, in_cset_fast_test_iff);
}
void ShenandoahBarrierC2Support::call_lrb_stub(Node*& ctrl, Node*& val, Node* load_addr, Node*& result_mem, Node* raw_mem, bool is_native, PhaseIdealLoop* phase) {
IdealLoopTree*loop = phase->get_loop(ctrl);
! const TypePtr* obj_type = phase->igvn().type(val)->is_oopptr();
// The slow path stub consumes and produces raw memory in addition
// to the existing memory edges
Node* base = find_bottom_mem(ctrl, phase);
MergeMemNode* mm = MergeMemNode::make(base);
*** 2136,2146 ****
}
const Type* t = in(1)->bottom_type();
if (t == TypePtr::NULL_PTR) {
return t;
}
! return t->is_oopptr()->cast_to_nonconst();
}
const Type* ShenandoahEnqueueBarrierNode::Value(PhaseGVN* phase) const {
if (in(1) == NULL) {
return Type::TOP;
--- 2136,2146 ----
}
const Type* t = in(1)->bottom_type();
if (t == TypePtr::NULL_PTR) {
return t;
}
! return t->is_oopptr();
}
const Type* ShenandoahEnqueueBarrierNode::Value(PhaseGVN* phase) const {
if (in(1) == NULL) {
return Type::TOP;
*** 2150,2160 ****
return Type::TOP;
}
if (t == TypePtr::NULL_PTR) {
return t;
}
! return t->is_oopptr()->cast_to_nonconst();
}
int ShenandoahEnqueueBarrierNode::needed(Node* n) {
if (n == NULL ||
n->is_Allocate() ||
--- 2150,2160 ----
return Type::TOP;
}
if (t == TypePtr::NULL_PTR) {
return t;
}
! return t->is_oopptr();
}
int ShenandoahEnqueueBarrierNode::needed(Node* n) {
if (n == NULL ||
n->is_Allocate() ||
*** 3077,3087 ****
if (t2 == TypePtr::NULL_PTR) {
return t2;
}
! const Type* type = t2->is_oopptr()/*->cast_to_nonconst()*/;
return type;
}
Node* ShenandoahLoadReferenceBarrierNode::Identity(PhaseGVN* phase) {
Node* value = in(ValueIn);
--- 3077,3087 ----
if (t2 == TypePtr::NULL_PTR) {
return t2;
}
! const Type* type = t2->is_oopptr();
return type;
}
Node* ShenandoahLoadReferenceBarrierNode::Identity(PhaseGVN* phase) {
Node* value = in(ValueIn);
< prev index next >