< prev index next >

src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp

Print this page

        

*** 1186,1196 **** } #endif Node* ShenandoahBarrierSetC2::ideal_node(PhaseGVN* phase, Node* n, bool can_reshape) const { if (is_shenandoah_wb_pre_call(n)) { ! uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type()->domain()->cnt(); if (n->req() > cnt) { Node* addp = n->in(cnt); if (has_only_shenandoah_wb_pre_uses(addp)) { n->del_req(cnt); if (can_reshape) { --- 1186,1196 ---- } #endif Node* ShenandoahBarrierSetC2::ideal_node(PhaseGVN* phase, Node* n, bool can_reshape) const { if (is_shenandoah_wb_pre_call(n)) { ! uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type()->domain_sig()->cnt(); if (n->req() > cnt) { Node* addp = n->in(cnt); if (has_only_shenandoah_wb_pre_uses(addp)) { n->del_req(cnt); if (can_reshape) {
*** 1310,1322 **** bool ShenandoahBarrierSetC2::flatten_gc_alias_type(const TypePtr*& adr_type) const { int offset = adr_type->offset(); if (offset == ShenandoahBrooksPointer::byte_offset()) { if (adr_type->isa_aryptr()) { ! adr_type = TypeAryPtr::make(adr_type->ptr(), adr_type->isa_aryptr()->ary(), adr_type->isa_aryptr()->klass(), false, offset); } else if (adr_type->isa_instptr()) { ! adr_type = TypeInstPtr::make(adr_type->ptr(), ciEnv::current()->Object_klass(), false, NULL, offset); } return true; } else { return false; } --- 1310,1322 ---- bool ShenandoahBarrierSetC2::flatten_gc_alias_type(const TypePtr*& adr_type) const { int offset = adr_type->offset(); if (offset == ShenandoahBrooksPointer::byte_offset()) { if (adr_type->isa_aryptr()) { ! adr_type = TypeAryPtr::make(adr_type->ptr(), adr_type->isa_aryptr()->ary(), adr_type->isa_aryptr()->klass(), false, Type::Offset(offset)); } else if (adr_type->isa_instptr()) { ! adr_type = TypeInstPtr::make(adr_type->ptr(), ciEnv::current()->Object_klass(), false, NULL, Type::Offset(offset)); } return true; } else { return false; }
*** 1327,1337 **** case Op_CallLeaf: case Op_CallLeafNoFP: { assert (n->is_Call(), ""); CallNode *call = n->as_Call(); if (ShenandoahBarrierSetC2::is_shenandoah_wb_pre_call(call)) { ! uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type()->domain()->cnt(); if (call->req() > cnt) { assert(call->req() == cnt + 1, "only one extra input"); Node *addp = call->in(cnt); assert(!ShenandoahBarrierSetC2::has_only_shenandoah_wb_pre_uses(addp), "useless address computation?"); call->del_req(cnt); --- 1327,1337 ---- case Op_CallLeaf: case Op_CallLeafNoFP: { assert (n->is_Call(), ""); CallNode *call = n->as_Call(); if (ShenandoahBarrierSetC2::is_shenandoah_wb_pre_call(call)) { ! uint cnt = ShenandoahBarrierSetC2::write_ref_field_pre_entry_Type()->domain_sig()->cnt(); if (call->req() > cnt) { assert(call->req() == cnt + 1, "only one extra input"); Node *addp = call->in(cnt); assert(!ShenandoahBarrierSetC2::has_only_shenandoah_wb_pre_uses(addp), "useless address computation?"); call->del_req(cnt);
< prev index next >