Index: src/ia32/lithium-ia32.cc |
diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc |
index 0c61e8dd2dfdb44942e027d47bbf5f39eede0062..e81ae935993a370dc2eab3bf2fa38ce3dc609956 100644 |
--- a/src/ia32/lithium-ia32.cc |
+++ b/src/ia32/lithium-ia32.cc |
@@ -915,7 +915,8 @@ void LChunkBuilder::VisitInstruction(HInstruction* current) { |
// the it was just a plain use), so it is free to move the split child into |
// the same register that is used for the use-at-start. |
// See https://code.google.com/p/chromium/issues/detail?id=201590 |
- if (!(instr->ClobbersRegisters() && instr->ClobbersDoubleRegisters())) { |
+ if (!(instr->ClobbersRegisters() && |
+ instr->ClobbersDoubleRegisters(isolate()))) { |
int fixed = 0; |
int used_at_start = 0; |
for (UseIterator it(instr); !it.Done(); it.Advance()) { |
@@ -939,13 +940,13 @@ void LChunkBuilder::VisitInstruction(HInstruction* current) { |
if (FLAG_stress_environments && !instr->HasEnvironment()) { |
instr = AssignEnvironment(instr); |
} |
- if (!CpuFeatures::IsSafeForSnapshot(SSE2) && instr->IsGoto() && |
+ if (!CpuFeatures::IsSafeForSnapshot(isolate(), SSE2) && instr->IsGoto() && |
LGoto::cast(instr)->jumps_to_join()) { |
// TODO(olivf) Since phis of spilled values are joined as registers |
// (not in the stack slot), we need to allow the goto gaps to keep one |
// x87 register alive. To ensure all other values are still spilled, we |
// insert a fpu register barrier right before. |
- LClobberDoubles* clobber = new(zone()) LClobberDoubles(); |
+ LClobberDoubles* clobber = new(zone()) LClobberDoubles(isolate()); |
clobber->set_hydrogen_value(current); |
chunk_->AddInstruction(clobber, current_block_); |
} |
@@ -1918,7 +1919,7 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) { |
LOperand* value = UseRegister(val); |
bool truncating = instr->CanTruncateToInt32(); |
LOperand* xmm_temp = |
- (CpuFeatures::IsSafeForSnapshot(SSE2) && !truncating) |
+ (CpuFeatures::IsSafeForSnapshot(isolate(), SSE2) && !truncating) |
? FixedTemp(xmm1) : NULL; |
LInstruction* result = |
DefineSameAsFirst(new(zone()) LTaggedToI(value, xmm_temp)); |
@@ -1941,7 +1942,8 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) { |
} else { |
ASSERT(to.IsInteger32()); |
bool truncating = instr->CanTruncateToInt32(); |
- bool needs_temp = CpuFeatures::IsSafeForSnapshot(SSE2) && !truncating; |
+ bool needs_temp = |
+ CpuFeatures::IsSafeForSnapshot(isolate(), SSE2) && !truncating; |
LOperand* value = needs_temp ? UseTempRegister(val) : UseRegister(val); |
LOperand* temp = needs_temp ? TempRegister() : NULL; |
LInstruction* result = |
@@ -2259,7 +2261,7 @@ LOperand* LChunkBuilder::GetStoreKeyedValueOperand(HStoreKeyed* instr) { |
return UseFixed(instr->value(), eax); |
} |
- if (!CpuFeatures::IsSafeForSnapshot(SSE2) && |
+ if (!CpuFeatures::IsSafeForSnapshot(isolate(), SSE2) && |
IsDoubleOrFloatElementsKind(elements_kind)) { |
return UseRegisterAtStart(instr->value()); |
} |