< prev index next >

src/share/vm/opto/graphKit.cpp

Print this page
rev 11994 : 8252366: Shenandoah: revert/cleanup changes in graphKit.cpp
Reviewed-by: XXX

*** 1719,1730 **** BasicType elembt = elemtype->array_element_basic_type(); Node* adr = array_element_address(ary, idx, elembt, arytype->size()); if (elembt == T_NARROWOOP) { elembt = T_OBJECT; // To satisfy switch in LoadNode::make() } - assert(elembt != T_OBJECT && elembt != T_ARRAY, "sanity"); Node* ld = make_load(ctl, adr, elemtype, elembt, arytype, MemNode::unordered); return ld; } //-------------------------set_arguments_for_java_call------------------------- // Arguments (pre-popped from the stack) are taken from the JVMS. --- 1719,1734 ---- BasicType elembt = elemtype->array_element_basic_type(); Node* adr = array_element_address(ary, idx, elembt, arytype->size()); if (elembt == T_NARROWOOP) { elembt = T_OBJECT; // To satisfy switch in LoadNode::make() } Node* ld = make_load(ctl, adr, elemtype, elembt, arytype, MemNode::unordered); + #if INCLUDE_ALL_GCS + if (UseShenandoahGC && (elembt == T_OBJECT || elembt == T_ARRAY)) { + ld = ShenandoahBarrierSetC2::bsc2()->load_reference_barrier(this, ld); + } + #endif return ld; } //-------------------------set_arguments_for_java_call------------------------- // Arguments (pre-popped from the stack) are taken from the JVMS.
*** 3882,3900 **** // Final sync IdealKit and GraphKit. final_sync(ideal); } - static void g1_write_barrier_pre_helper(const GraphKit& kit, Node* adr) { - if (UseShenandoahGC && adr != NULL) { - Node* c = kit.control(); - Node* call = c->in(1)->in(1)->in(1)->in(0); - assert(call->is_g1_wb_pre_call(), "g1_wb_pre call expected"); - call->add_req(adr); - } - } - // G1 pre/post barriers void GraphKit::g1_write_barrier_pre(bool do_load, Node* obj, Node* adr, uint alias_idx, --- 3886,3895 ----
*** 3998,4008 **** } __ end_if(); // (pre_val != NULL) } __ end_if(); // (!marking) // Final sync IdealKit and GraphKit. final_sync(ideal); ! g1_write_barrier_pre_helper(*this, adr); } // // Update the card table and add card address to the queue // --- 3993,4011 ---- } __ end_if(); // (pre_val != NULL) } __ end_if(); // (!marking) // Final sync IdealKit and GraphKit. final_sync(ideal); ! ! #if INCLUDE_ALL_GCS ! if (UseShenandoahGC && adr != NULL) { ! Node* c = control(); ! Node* call = c->in(1)->in(1)->in(1)->in(0); ! assert(call->is_g1_wb_pre_call(), "g1_wb_pre call expected"); ! call->add_req(adr); ! } ! #endif } // // Update the card table and add card address to the queue //
< prev index next >