| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index b9b3eb0819c30ad6d141de5d7cadcb1351218b9b..e91609dba4387ae6c75f80dca8fe84b7ec960a50 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -5653,6 +5653,17 @@ void HOptimizedGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) {
|
| if (property->emit_store()) {
|
| CHECK_ALIVE(VisitForValue(value));
|
| HValue* value = Pop();
|
| +
|
| + // Add [[HomeObject]] to function literals.
|
| + if (FunctionLiteral::NeedsHomeObject(property->value())) {
|
| + Handle<Symbol> sym = isolate()->factory()->home_object_symbol();
|
| + HInstruction* store_home = BuildKeyedGeneric(
|
| + STORE, NULL, value, Add<HConstant>(sym), literal);
|
| + AddInstruction(store_home);
|
| + DCHECK(store_home->HasObservableSideEffects());
|
| + Add<HSimulate>(property->value()->id(), REMOVABLE_SIMULATE);
|
| + }
|
| +
|
| Handle<Map> map = property->GetReceiverType();
|
| Handle<String> name = property->key()->AsPropertyName();
|
| HInstruction* store;
|
| @@ -5674,9 +5685,8 @@ void HOptimizedGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) {
|
| }
|
| }
|
| AddInstruction(store);
|
| - if (store->HasObservableSideEffects()) {
|
| - Add<HSimulate>(key->id(), REMOVABLE_SIMULATE);
|
| - }
|
| + DCHECK(store->HasObservableSideEffects());
|
| + Add<HSimulate>(key->id(), REMOVABLE_SIMULATE);
|
| } else {
|
| CHECK_ALIVE(VisitForEffect(value));
|
| }
|
|
|