Index: src/full-codegen/x64/full-codegen-x64.cc |
diff --git a/src/full-codegen/x64/full-codegen-x64.cc b/src/full-codegen/x64/full-codegen-x64.cc |
index 67c8ecb908ccd3d4b50c67e9b4581889f4489b00..cf168a598e02ba67fcd5f6b3cf08d7b7a3c785ce 100644 |
--- a/src/full-codegen/x64/full-codegen-x64.cc |
+++ b/src/full-codegen/x64/full-codegen-x64.cc |
@@ -1418,12 +1418,16 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
break; |
case ObjectLiteral::Property::GETTER: |
if (property->emit_store()) { |
- accessor_table.lookup(key)->second->getter = property; |
+ AccessorTable::Iterator it = accessor_table.lookup(key); |
+ it->second->bailout_id = expr->GetIdForPropertySet(property_index); |
+ it->second->getter = property; |
} |
break; |
case ObjectLiteral::Property::SETTER: |
if (property->emit_store()) { |
- accessor_table.lookup(key)->second->setter = property; |
+ AccessorTable::Iterator it = accessor_table.lookup(key); |
+ it->second->bailout_id = expr->GetIdForPropertySet(property_index); |
+ it->second->setter = property; |
} |
break; |
} |
@@ -1440,6 +1444,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
EmitAccessor(it->second->setter); |
PushOperand(Smi::FromInt(NONE)); |
CallRuntimeWithOperands(Runtime::kDefineAccessorPropertyUnchecked); |
+ PrepareForBailoutForId(it->second->bailout_id, BailoutState::NO_REGISTERS); |
} |
// Object literals have two parts. The "static" part on the left contains no |