MIPS: Omit smi-check for write-barrier unless tagged.

Port r14767 (40dd85ec)

BUG=

Review URL: https://codereview.chromium.org/15745021

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14783 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
palfia@homejinni.com 2013-05-24 01:04:08 +00:00
parent ae74636c9e
commit 344d9057d4

View File

@ -571,6 +571,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);
@ -596,7 +598,9 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm,
name_reg,
scratch1,
kRAHasNotBeenSaved,
kDontSaveFPRegs);
kDontSaveFPRegs,
EMIT_REMEMBERED_SET,
smi_check);
}
} else {
// Write to the properties array.
@ -626,7 +630,9 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm,
name_reg,
receiver_reg,
kRAHasNotBeenSaved,
kDontSaveFPRegs);
kDontSaveFPRegs,
EMIT_REMEMBERED_SET,
smi_check);
}
}
@ -715,6 +721,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);
@ -732,7 +740,9 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm,
name_reg,
scratch1,
kRAHasNotBeenSaved,
kDontSaveFPRegs);
kDontSaveFPRegs,
EMIT_REMEMBERED_SET,
smi_check);
}
} else {
// Write to the properties array.
@ -754,7 +764,9 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm,
name_reg,
receiver_reg,
kRAHasNotBeenSaved,
kDontSaveFPRegs);
kDontSaveFPRegs,
EMIT_REMEMBERED_SET,
smi_check);
}
}