| Index: src/ia32/lithium-ia32.cc
|
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
|
| index 965b15af70535c2860f5ba2bf15c8e92b460d895..d5374675b14a7d4911bcb9c01499958d58f88e39 100644
|
| --- a/src/ia32/lithium-ia32.cc
|
| +++ b/src/ia32/lithium-ia32.cc
|
| @@ -938,7 +938,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()) {
|
| @@ -962,13 +963,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_);
|
| }
|
| @@ -1941,7 +1942,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));
|
| @@ -1964,7 +1965,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 =
|
| @@ -2282,7 +2284,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());
|
| }
|
|
|