Index: src/x64/stub-cache-x64.cc |
diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc |
index 148f65ee0d51e49379f8d2e8b795bc759131a727..f6c81b4c8ca298084c84b8e2116b2f375d947002 100644 |
--- a/src/x64/stub-cache-x64.cc |
+++ b/src/x64/stub-cache-x64.cc |
@@ -880,6 +880,8 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm, |
index -= object->map()->inobject_properties(); |
// TODO(verwaest): Share this code as a code stub. |
+ SmiCheck smi_check = representation.IsTagged() |
+ ? INLINE_SMI_CHECK : OMIT_SMI_CHECK; |
if (index < 0) { |
// Set the property straight into the object. |
int offset = object->map()->instance_size() + (index * kPointerSize); |
@@ -898,7 +900,8 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm, |
ASSERT(storage_reg.is(name_reg)); |
} |
__ RecordWriteField( |
- receiver_reg, offset, name_reg, scratch1, kDontSaveFPRegs); |
+ receiver_reg, offset, name_reg, scratch1, kDontSaveFPRegs, |
+ EMIT_REMEMBERED_SET, smi_check); |
} |
} else { |
// Write to the properties array. |
@@ -920,7 +923,8 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm, |
ASSERT(storage_reg.is(name_reg)); |
} |
__ RecordWriteField( |
- scratch1, offset, name_reg, receiver_reg, kDontSaveFPRegs); |
+ scratch1, offset, name_reg, receiver_reg, kDontSaveFPRegs, |
+ EMIT_REMEMBERED_SET, smi_check); |
} |
} |
@@ -1000,6 +1004,8 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
} |
// TODO(verwaest): Share this code as a code stub. |
+ SmiCheck smi_check = representation.IsTagged() |
+ ? INLINE_SMI_CHECK : OMIT_SMI_CHECK; |
if (index < 0) { |
// Set the property straight into the object. |
int offset = object->map()->instance_size() + (index * kPointerSize); |
@@ -1010,7 +1016,8 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
// Pass the value being stored in the now unused name_reg. |
__ movq(name_reg, value_reg); |
__ RecordWriteField( |
- receiver_reg, offset, name_reg, scratch1, kDontSaveFPRegs); |
+ receiver_reg, offset, name_reg, scratch1, kDontSaveFPRegs, |
+ EMIT_REMEMBERED_SET, smi_check); |
} |
} else { |
// Write to the properties array. |
@@ -1024,7 +1031,8 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
// Pass the value being stored in the now unused name_reg. |
__ movq(name_reg, value_reg); |
__ RecordWriteField( |
- scratch1, offset, name_reg, receiver_reg, kDontSaveFPRegs); |
+ scratch1, offset, name_reg, receiver_reg, kDontSaveFPRegs, |
+ EMIT_REMEMBERED_SET, smi_check); |
} |
} |