| 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;
|
|
|