< 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----------------------------------
< prev index next >