< 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 >