Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index b36f4f059332b93b0be6eeea2fc52f9bb0b07b2e..68ae8c3f09e983fcf72a70872d74261da75999b9 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -74,8 +74,8 @@ Operand MacroAssembler::ExternalOperand(ExternalReference target, |
Register scratch) { |
if (root_array_available_ && !Serializer::enabled()) { |
intptr_t delta = RootRegisterDelta(target); |
- if (delta != kInvalidRootRegisterDelta && is_int32(delta)) { |
- Serializer::TooLateToEnableNow(); |
+ if (delta != kInvalidRootRegisterDelta && is_int32(delta) && |
+ Serializer::TrySetPermanentlyDisabled()) { |
return Operand(kRootRegister, static_cast<int32_t>(delta)); |
} |
} |
@@ -87,8 +87,8 @@ Operand MacroAssembler::ExternalOperand(ExternalReference target, |
void MacroAssembler::Load(Register destination, ExternalReference source) { |
if (root_array_available_ && !Serializer::enabled()) { |
intptr_t delta = RootRegisterDelta(source); |
- if (delta != kInvalidRootRegisterDelta && is_int32(delta)) { |
- Serializer::TooLateToEnableNow(); |
+ if (delta != kInvalidRootRegisterDelta && is_int32(delta) && |
+ Serializer::TrySetPermanentlyDisabled()) { |
movp(destination, Operand(kRootRegister, static_cast<int32_t>(delta))); |
return; |
} |
@@ -106,8 +106,8 @@ void MacroAssembler::Load(Register destination, ExternalReference source) { |
void MacroAssembler::Store(ExternalReference destination, Register source) { |
if (root_array_available_ && !Serializer::enabled()) { |
intptr_t delta = RootRegisterDelta(destination); |
- if (delta != kInvalidRootRegisterDelta && is_int32(delta)) { |
- Serializer::TooLateToEnableNow(); |
+ if (delta != kInvalidRootRegisterDelta && is_int32(delta) && |
+ Serializer::TrySetPermanentlyDisabled()) { |
movp(Operand(kRootRegister, static_cast<int32_t>(delta)), source); |
return; |
} |
@@ -126,8 +126,8 @@ void MacroAssembler::LoadAddress(Register destination, |
ExternalReference source) { |
if (root_array_available_ && !Serializer::enabled()) { |
intptr_t delta = RootRegisterDelta(source); |
- if (delta != kInvalidRootRegisterDelta && is_int32(delta)) { |
- Serializer::TooLateToEnableNow(); |
+ if (delta != kInvalidRootRegisterDelta && is_int32(delta) && |
+ Serializer::TrySetPermanentlyDisabled()) { |
leap(destination, Operand(kRootRegister, static_cast<int32_t>(delta))); |
return; |
} |
@@ -143,8 +143,8 @@ int MacroAssembler::LoadAddressSize(ExternalReference source) { |
// It's correctness is ensured by the asserts in the Call |
// instruction below. |
intptr_t delta = RootRegisterDelta(source); |
- if (delta != kInvalidRootRegisterDelta && is_int32(delta)) { |
- Serializer::TooLateToEnableNow(); |
+ if (delta != kInvalidRootRegisterDelta && is_int32(delta) && |
+ Serializer::TrySetPermanentlyDisabled()) { |
// Operand is leap(scratch, Operand(kRootRegister, delta)); |
// Opcodes : REX.W 8D ModRM Disp8/Disp32 - 4 or 7. |
int size = 4; |