< prev index next >
src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp
Print this page
rev 14282 : Factor out keep-alive barrier from usual pre-barrier implementations.
*** 758,777 ****
const Register sender_sp = NOT_LP64(rsi) LP64_ONLY(r13);
const Register thread = NOT_LP64(rcx) LP64_ONLY(r15_thread);
NOT_LP64(__ get_thread(thread));
- if (!UseShenandoahGC || ShenandoahSATBBarrier) {
// Generate the G1 pre-barrier code to log the value of
// the referent field in an SATB buffer.
! __ g1_write_barrier_pre(noreg /* obj */,
! rax /* pre_val */,
thread /* thread */,
! rbx /* tmp */,
! true /* tosca_live */,
! true /* expand_call */);
! }
// _areturn
NOT_LP64(__ pop(rsi)); // get sender sp
__ pop(rdi); // get return address
__ mov(rsp, sender_sp); // set sp to sender sp
--- 758,772 ----
const Register sender_sp = NOT_LP64(rsi) LP64_ONLY(r13);
const Register thread = NOT_LP64(rcx) LP64_ONLY(r15_thread);
NOT_LP64(__ get_thread(thread));
// Generate the G1 pre-barrier code to log the value of
// the referent field in an SATB buffer.
! __ keep_alive_barrier(rax /* pre_val */,
thread /* thread */,
! rbx /* tmp */);
// _areturn
NOT_LP64(__ pop(rsi)); // get sender sp
__ pop(rdi); // get return address
__ mov(rsp, sender_sp); // set sp to sender sp
< prev index next >