Only extend storage if FIELD

R=jkummerow@chromium.org

Review URL: https://chromiumcodereview.appspot.com/16818014

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15125 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
verwaest@chromium.org 2013-06-13 16:21:32 +00:00
parent 8bc9d98786
commit 1d5cdf215d
3 changed files with 6 additions and 3 deletions

View File

@ -547,7 +547,8 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm,
ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
// Perform map transition for the receiver if necessary.
if (object->map()->unused_property_fields() == 0) {
if (details.type() == FIELD &&
object->map()->unused_property_fields() == 0) {
// The properties must be extended before we can store the value.
// We jump to a runtime call that extends the properties array.
__ push(receiver_reg);

View File

@ -890,7 +890,8 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm,
ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
// Perform map transition for the receiver if necessary.
if (object->map()->unused_property_fields() == 0) {
if (details.type() == FIELD &&
object->map()->unused_property_fields() == 0) {
// The properties must be extended before we can store the value.
// We jump to a runtime call that extends the properties array.
__ pop(scratch1); // Return address.

View File

@ -850,7 +850,8 @@ void StubCompiler::GenerateStoreTransition(MacroAssembler* masm,
ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
// Perform map transition for the receiver if necessary.
if (object->map()->unused_property_fields() == 0) {
if (details.type() == FIELD &&
object->map()->unused_property_fields() == 0) {
// The properties must be extended before we can store the value.
// We jump to a runtime call that extends the properties array.
__ pop(scratch1); // Return address.