< prev index next >

src/hotspot/cpu/aarch64/gc/shenandoah/shenandoahBarrierSetAssembler_aarch64.cpp

Print this page
rev 50922 : Don't generate arraycopy pre-barrier calls for traversal GC

*** 25,34 **** --- 25,35 ---- #include "gc/shenandoah/brooksPointer.hpp" #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp" #include "gc/shenandoah/shenandoahConnectionMatrix.hpp" #include "gc/shenandoah/shenandoahHeap.hpp" #include "gc/shenandoah/shenandoahHeapRegion.hpp" + #include "gc/shenandoah/shenandoahHeuristics.hpp" #include "gc/shenandoah/shenandoahRuntime.hpp" #include "gc/shenandoah/shenandoahThreadLocalData.hpp" #include "interpreter/interpreter.hpp" #include "interpreter/interp_masm.hpp" #include "runtime/sharedRuntime.hpp"
*** 44,53 **** --- 45,59 ---- address ShenandoahBarrierSetAssembler::_shenandoah_wb = NULL; address ShenandoahBarrierSetAssembler::_shenandoah_wb_C = NULL; void ShenandoahBarrierSetAssembler::arraycopy_prologue(MacroAssembler* masm, DecoratorSet decorators, bool is_oop, Register addr, Register count, RegSet saved_regs) { + if (ShenandoahHeap::heap()->heuristics()->can_do_traversal_gc()) { + // Don't need arraycopy-pre-barrier for traversal. No need to pointlessly + // call out to runtime. + return; + } if (is_oop) { bool dest_uninitialized = (decorators & AS_DEST_NOT_INITIALIZED) != 0; if (!dest_uninitialized) { __ push(saved_regs, sp); if (count == c_rarg0) {
< prev index next >