< prev index next >

src/share/vm/opto/parse2.cpp

Print this page

        

*** 38,47 **** --- 38,51 ---- #include "opto/parse.hpp" #include "opto/runtime.hpp" #include "runtime/deoptimization.hpp" #include "runtime/sharedRuntime.hpp" + #if INCLUDE_ALL_GCS + #include "gc_implementation/shenandoah/c2/shenandoahBarrierSetC2.hpp" + #endif + extern int explicit_null_checks_inserted, explicit_null_checks_elided; //---------------------------------array_load---------------------------------- void Parse::array_load(BasicType elem_type) {
*** 49,58 **** --- 53,67 ---- Node* adr = array_addressing(elem_type, 0, &elem); if (stopped()) return; // guaranteed null or range check dec_sp(2); // Pop array and index const TypeAryPtr* adr_type = TypeAryPtr::get_array_body_type(elem_type); Node* ld = make_load(control(), adr, elem, elem_type, adr_type, MemNode::unordered); + #if INCLUDE_ALL_GCS + if (UseShenandoahGC && (elem_type == T_OBJECT || elem_type == T_ARRAY)) { + ld = ShenandoahBarrierSetC2::bsc2()->load_reference_barrier(this, ld); + } + #endif push(ld); } //--------------------------------array_store----------------------------------
*** 2271,2281 **** handle_if_acmp: // If this is a backwards branch in the bytecodes, add Safepoint maybe_add_safepoint(iter().get_dest()); a = pop(); b = pop(); ! c = _gvn.transform( new (C) CmpPNode(b, a) ); c = optimize_cmp_with_klass(c); do_if(btest, c); break; case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx; --- 2280,2290 ---- handle_if_acmp: // If this is a backwards branch in the bytecodes, add Safepoint maybe_add_safepoint(iter().get_dest()); a = pop(); b = pop(); ! c = _gvn.transform(new (C) CmpPNode(b, a) ); c = optimize_cmp_with_klass(c); do_if(btest, c); break; case Bytecodes::_ifeq: btest = BoolTest::eq; goto handle_ifxx;
< prev index next >