< prev index next >

src/share/vm/oops/objArrayKlass.cpp

Print this page

        

*** 54,63 **** --- 54,65 ---- #include "gc_implementation/g1/heapRegionManager.inline.hpp" #include "gc_implementation/parNew/parOopClosures.inline.hpp" #include "gc_implementation/parallelScavenge/psCompactionManager.hpp" #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" + #include "gc_implementation/shenandoah/shenandoahBarrierSet.inline.hpp" + #include "gc_implementation/shenandoah/shenandoahOopClosures.inline.hpp" #include "oops/oop.pcgc.inline.hpp" #endif // INCLUDE_ALL_GCS ObjArrayKlass* ObjArrayKlass::allocate(ClassLoaderData* loader_data, int n, KlassHandle klass_handle, Symbol* name, TRAPS) { assert(ObjArrayKlass::header_size() <= InstanceKlass::header_size(),
*** 241,250 **** --- 243,258 ---- // are using has optimized modes for arrays of references. At least one // of the asserts below will fail if this is not the case. assert(bs->has_write_ref_array_opt(), "Barrier set must have ref array opt"); assert(bs->has_write_ref_array_pre_opt(), "For pre-barrier as well."); + #if INCLUDE_ALL_GCS + if (UseShenandoahGC) { + ShenandoahBarrierSet::barrier_set()->arraycopy_barrier(src, dst, length); + } + #endif + if (s == d) { // since source and destination are equal we do not need conversion checks. assert(length > 0, "sanity check"); bs->write_ref_array_pre(dst, length); Copy::conjoint_oops_atomic(src, dst, length);
< prev index next >