mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-14 12:25:21 +00:00
8217745: ZGC: Simplify ZLoadBarrierStubC1
Reviewed-by: neliasso, eosterlund
This commit is contained in:
parent
d800361151
commit
dc07b2bf32
@ -279,13 +279,13 @@ void ZBarrierSetAssembler::generate_c1_load_barrier_stub(LIR_Assembler* ce,
|
||||
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);
|
||||
|
||||
@ -38,21 +38,15 @@ ZLoadBarrierStubC1::ZLoadBarrierStubC1(LIRAccess& access, LIR_Opr ref, address r
|
||||
_tmp(LIR_OprFact::illegalOpr),
|
||||
_runtime_stub(runtime_stub) {
|
||||
|
||||
// Allocate tmp register if needed
|
||||
if (!_ref_addr->is_register()) {
|
||||
assert(_ref_addr->is_address(), "Must be an address");
|
||||
if (_ref_addr->as_address_ptr()->index()->is_valid() ||
|
||||
_ref_addr->as_address_ptr()->disp() != 0) {
|
||||
// Has index or displacement, need tmp register to load address into
|
||||
_tmp = access.gen()->new_pointer_register();
|
||||
} else {
|
||||
// No index or displacement, address available in base register
|
||||
_ref_addr = _ref_addr->as_address_ptr()->base();
|
||||
}
|
||||
}
|
||||
|
||||
assert(_ref_addr->is_address(), "Must be an address");
|
||||
assert(_ref->is_register(), "Must be a register");
|
||||
assert(_ref_addr->is_register() != _tmp->is_register(), "Only one should be a register");
|
||||
|
||||
// Allocate tmp register if needed
|
||||
if (_ref_addr->as_address_ptr()->index()->is_valid() ||
|
||||
_ref_addr->as_address_ptr()->disp() != 0) {
|
||||
// Has index or displacement, need tmp register to load address into
|
||||
_tmp = access.gen()->new_pointer_register();
|
||||
}
|
||||
}
|
||||
|
||||
DecoratorSet ZLoadBarrierStubC1::decorators() const {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user