Chromium Code Reviews| Index: src/compiler/js-create-lowering.cc |
| diff --git a/src/compiler/js-create-lowering.cc b/src/compiler/js-create-lowering.cc |
| index a1c267efcefa3ef5a8479f7c93d8d8f36d545b5b..7ecf7a05f53c8be6739d6bb183cef84233bf23da 100644 |
| --- a/src/compiler/js-create-lowering.cc |
| +++ b/src/compiler/js-create-lowering.cc |
| @@ -815,6 +815,7 @@ Reduction JSCreateLowering::ReduceJSCreateFunctionContext(Node* node) { |
| Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) { |
| DCHECK_EQ(IrOpcode::kJSCreateWithContext, node->opcode()); |
| + Handle<ScopeInfo> scope_info = OpParameter<Handle<ScopeInfo>>(node); |
| Node* object = NodeProperties::GetValueInput(node, 0); |
| Node* closure = NodeProperties::GetValueInput(node, 1); |
| Node* effect = NodeProperties::GetEffectInput(node); |
| @@ -823,12 +824,19 @@ Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) { |
| Node* native_context = effect = graph()->NewNode( |
| javascript()->LoadContext(0, Context::NATIVE_CONTEXT_INDEX, true), |
| context, context, effect); |
| - AllocationBuilder a(jsgraph(), effect, control); |
| + AllocationBuilder aa(jsgraph(), effect, control); |
|
Michael Starzinger
2016/09/05 12:10:39
nit: Empty newline before the first AllocationBuil
|
| + aa.Allocate(ContextExtension::kSize); |
| + aa.Store(AccessBuilder::ForMap(), factory()->context_extension_map()); |
| + aa.Store(AccessBuilder::ForContextExtensionScopeInfo(), scope_info); |
| + aa.Store(AccessBuilder::ForContextExtensionExtension(), object); |
| + Node* extension = aa.Finish(); |
| + |
| + AllocationBuilder a(jsgraph(), extension, control); |
| STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered. |
| a.AllocateArray(Context::MIN_CONTEXT_SLOTS, factory()->with_context_map()); |
| a.Store(AccessBuilder::ForContextSlot(Context::CLOSURE_INDEX), closure); |
| a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context); |
| - a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), object); |
| + a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension); |
| a.Store(AccessBuilder::ForContextSlot(Context::NATIVE_CONTEXT_INDEX), |
| native_context); |
| RelaxControls(node); |