< prev index next >
src/hotspot/cpu/x86/gc/z/zBarrierSetAssembler_x86.cpp
Print this page
@@ -277,17 +277,17 @@
__ bind(*stub->entry());
Register ref = stub->ref()->as_register();
Register ref_addr = noreg;
- if (stub->ref_addr()->is_register()) {
- // Address already in register
- ref_addr = stub->ref_addr()->as_pointer_register();
- } else {
+ if (stub->tmp()->is_valid()) {
// Load address into tmp register
ce->leal(stub->ref_addr(), stub->tmp());
ref_addr = stub->tmp()->as_pointer_register();
+ } else {
+ // Address already in register
+ ref_addr = stub->ref_addr()->as_address_ptr()->base()->as_pointer_register();
}
assert_different_registers(ref, ref_addr, noreg);
// Save rax unless it is the result register
< prev index next >