Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Unified Diff: src/x64/macro-assembler-x64.cc

Issue 240193002: Serializer enable/disable flags need thread safety. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebase Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/arm/assembler-arm.cc ('K') | « src/x64/assembler-x64.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« src/arm/assembler-arm.cc ('K') | « src/x64/assembler-x64.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698