--- old/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp 2017-12-07 13:13:43.976370914 +0000 +++ new/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp 2017-12-07 13:13:42.866349973 +0000 @@ -4062,14 +4062,12 @@ if (UseG1GC) { // Generate the G1 pre-barrier code to log the value of // the referent field in an SATB buffer. - enter(); // g1_write may call runtime g1_write_barrier_pre(noreg, val /* pre_val */, thread /* thread */, tmp, true /* tosca_live */, true /* expand_call */); - leave(); } else if (UseShenandoahGC && ShenandoahKeepAliveBarrier) { shenandoah_write_barrier_pre(noreg, val /* pre_val */, --- old/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp 2017-12-07 13:13:46.676421856 +0000 +++ new/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp 2017-12-07 13:13:45.556400724 +0000 @@ -929,9 +929,11 @@ // Generate the G1 pre-barrier code to log the value of // the referent field in an SATB buffer. + __ enter(); // g1_write may call runtime __ keep_alive_barrier(local_0 /* pre_val */, rthread /* thread */, rscratch2 /* tmp */); + __ leave(); // areturn __ andr(sp, r19, -16); // done with stack __ ret(lr);