Index: src/x87/full-codegen-x87.cc |
diff --git a/src/x87/full-codegen-x87.cc b/src/x87/full-codegen-x87.cc |
index 94ccbcfb5521d3ddd0fd8855d986f8da8801f0e3..15a7176fa9d102437a9b7bc7fceae4344037c0e8 100644 |
--- a/src/x87/full-codegen-x87.cc |
+++ b/src/x87/full-codegen-x87.cc |
@@ -224,7 +224,8 @@ void FullCodeGenerator::Generate() { |
__ RecordWriteContextSlot(esi, |
context_offset, |
eax, |
- ebx); |
+ ebx, |
+ kDontSaveFPRegs); |
} else if (FLAG_debug_code) { |
Label done; |
__ JumpIfInNewSpace(esi, eax, &done, Label::kNear); |
@@ -708,7 +709,7 @@ void FullCodeGenerator::SetVar(Variable* var, |
if (var->IsContextSlot()) { |
int offset = Context::SlotOffset(var->index()); |
DCHECK(!scratch0.is(esi) && !src.is(esi) && !scratch1.is(esi)); |
- __ RecordWriteContextSlot(scratch0, offset, src, scratch1); |
+ __ RecordWriteContextSlot(scratch0, offset, src, scratch1, kDontSaveFPRegs); |
} |
} |
@@ -842,6 +843,7 @@ void FullCodeGenerator::VisitFunctionDeclaration( |
Context::SlotOffset(variable->index()), |
result_register(), |
ecx, |
+ kDontSaveFPRegs, |
EMIT_REMEMBERED_SET, |
OMIT_SMI_CHECK); |
PrepareForBailoutForId(proxy->id(), NO_REGISTERS); |
@@ -881,6 +883,7 @@ void FullCodeGenerator::VisitModuleDeclaration(ModuleDeclaration* declaration) { |
Context::SlotOffset(variable->index()), |
eax, |
ecx, |
+ kDontSaveFPRegs, |
EMIT_REMEMBERED_SET, |
OMIT_SMI_CHECK); |
PrepareForBailoutForId(declaration->proxy()->id(), NO_REGISTERS); |
@@ -1784,6 +1787,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
__ mov(FieldOperand(ebx, offset), result_register()); |
// Update the write barrier for the array store. |
__ RecordWriteField(ebx, offset, result_register(), ecx, |
+ kDontSaveFPRegs, |
EMIT_REMEMBERED_SET, |
INLINE_SMI_CHECK); |
} else { |
@@ -1942,7 +1946,8 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
Immediate(Smi::FromInt(continuation.pos()))); |
__ mov(FieldOperand(eax, JSGeneratorObject::kContextOffset), esi); |
__ mov(ecx, esi); |
- __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx); |
+ __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx, |
+ kDontSaveFPRegs); |
__ lea(ebx, Operand(ebp, StandardFrameConstants::kExpressionsOffset)); |
__ cmp(esp, ebx); |
__ j(equal, &post_runtime); |
@@ -2016,7 +2021,8 @@ void FullCodeGenerator::VisitYield(Yield* expr) { |
Immediate(Smi::FromInt(l_continuation.pos()))); |
__ mov(FieldOperand(eax, JSGeneratorObject::kContextOffset), esi); |
__ mov(ecx, esi); |
- __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx); |
+ __ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx, |
+ kDontSaveFPRegs); |
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1); |
__ mov(context_register(), |
Operand(ebp, StandardFrameConstants::kContextOffset)); |
@@ -2225,7 +2231,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) { |
// Only the value field needs a write barrier, as the other values are in the |
// root set. |
__ RecordWriteField(eax, JSGeneratorObject::kResultValuePropertyOffset, |
- ecx, edx); |
+ ecx, edx, kDontSaveFPRegs); |
} |
@@ -2433,7 +2439,7 @@ void FullCodeGenerator::EmitStoreToStackLocalOrContextSlot( |
if (var->IsContextSlot()) { |
__ mov(edx, eax); |
int offset = Context::SlotOffset(var->index()); |
- __ RecordWriteContextSlot(ecx, offset, edx, ebx); |
+ __ RecordWriteContextSlot(ecx, offset, edx, ebx, kDontSaveFPRegs); |
} |
} |
@@ -3532,7 +3538,7 @@ void FullCodeGenerator::EmitSetValueOf(CallRuntime* expr) { |
// Update the write barrier. Save the value as it will be |
// overwritten by the write barrier code and is needed afterward. |
__ mov(edx, eax); |
- __ RecordWriteField(ebx, JSValue::kValueOffset, edx, ecx); |
+ __ RecordWriteField(ebx, JSValue::kValueOffset, edx, ecx, kDontSaveFPRegs); |
__ bind(&done); |
context()->Plug(eax); |