| Index: src/compiler/bytecode-graph-builder.cc
|
| diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc
|
| index 558ef12684b5daf93e59d5eb2ab08d9cb469bac1..609ad80c42da4cd6b7aad97379f566f4be0fd64e 100644
|
| --- a/src/compiler/bytecode-graph-builder.cc
|
| +++ b/src/compiler/bytecode-graph-builder.cc
|
| @@ -517,8 +517,10 @@ Node* BytecodeGraphBuilder::GetFunctionClosure() {
|
| Node* BytecodeGraphBuilder::BuildLoadNativeContextField(int index) {
|
| const Operator* op =
|
| javascript()->LoadContext(0, Context::NATIVE_CONTEXT_INDEX, true);
|
| - Node* native_context = NewNode(op, environment()->Context());
|
| - return NewNode(javascript()->LoadContext(0, index, true), native_context);
|
| + Node* native_context = NewNode(op);
|
| + Node* result = NewNode(javascript()->LoadContext(0, index, true));
|
| + NodeProperties::ReplaceContextInput(result, native_context);
|
| + return result;
|
| }
|
|
|
|
|
| @@ -777,9 +779,10 @@ void BytecodeGraphBuilder::VisitLdaContextSlot() {
|
| const Operator* op = javascript()->LoadContext(
|
| bytecode_iterator().GetUnsignedImmediateOperand(2),
|
| bytecode_iterator().GetIndexOperand(1), false);
|
| + Node* node = NewNode(op);
|
| Node* context =
|
| environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
|
| - Node* node = NewNode(op, context);
|
| + NodeProperties::ReplaceContextInput(node, context);
|
| environment()->BindAccumulator(node);
|
| }
|
|
|
| @@ -789,8 +792,7 @@ void BytecodeGraphBuilder::VisitLdaCurrentContextSlot() {
|
| // changes.
|
| const Operator* op = javascript()->LoadContext(
|
| 0, bytecode_iterator().GetIndexOperand(0), false);
|
| - Node* context = environment()->Context();
|
| - Node* node = NewNode(op, context);
|
| + Node* node = NewNode(op);
|
| environment()->BindAccumulator(node);
|
| }
|
|
|
| @@ -798,18 +800,18 @@ void BytecodeGraphBuilder::VisitStaContextSlot() {
|
| const Operator* op = javascript()->StoreContext(
|
| bytecode_iterator().GetUnsignedImmediateOperand(2),
|
| bytecode_iterator().GetIndexOperand(1));
|
| + Node* value = environment()->LookupAccumulator();
|
| + Node* node = NewNode(op, value);
|
| Node* context =
|
| environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
|
| - Node* value = environment()->LookupAccumulator();
|
| - NewNode(op, context, value);
|
| + NodeProperties::ReplaceContextInput(node, context);
|
| }
|
|
|
| void BytecodeGraphBuilder::VisitStaCurrentContextSlot() {
|
| const Operator* op =
|
| javascript()->StoreContext(0, bytecode_iterator().GetIndexOperand(0));
|
| - Node* context = environment()->Context();
|
| Node* value = environment()->LookupAccumulator();
|
| - NewNode(op, context, value);
|
| + NewNode(op, value);
|
| }
|
|
|
| void BytecodeGraphBuilder::BuildLdaLookupSlot(TypeofMode typeof_mode) {
|
| @@ -841,8 +843,7 @@ BytecodeGraphBuilder::Environment* BytecodeGraphBuilder::CheckContextExtensions(
|
| // the same scope as the variable itself has no way of shadowing it.
|
| for (uint32_t d = 0; d < depth; d++) {
|
| Node* extension_slot =
|
| - NewNode(javascript()->LoadContext(d, Context::EXTENSION_INDEX, false),
|
| - environment()->Context());
|
| + NewNode(javascript()->LoadContext(d, Context::EXTENSION_INDEX, false));
|
|
|
| Node* check_no_extension =
|
| NewNode(javascript()->StrictEqual(CompareOperationHint::kAny),
|
| @@ -888,8 +889,7 @@ void BytecodeGraphBuilder::BuildLdaLookupContextSlot(TypeofMode typeof_mode) {
|
| uint32_t slot_index = bytecode_iterator().GetIndexOperand(1);
|
|
|
| const Operator* op = javascript()->LoadContext(depth, slot_index, false);
|
| - Node* context = environment()->Context();
|
| - environment()->BindAccumulator(NewNode(op, context));
|
| + environment()->BindAccumulator(NewNode(op));
|
| }
|
|
|
| // Only build the slow path if there were any slow-path checks.
|
| @@ -1070,9 +1070,8 @@ void BytecodeGraphBuilder::VisitStaKeyedPropertyStrict() {
|
| void BytecodeGraphBuilder::VisitLdaModuleVariable() {
|
| int32_t cell_index = bytecode_iterator().GetImmediateOperand(0);
|
| uint32_t depth = bytecode_iterator().GetUnsignedImmediateOperand(1);
|
| - Node* module =
|
| - NewNode(javascript()->LoadContext(depth, Context::EXTENSION_INDEX, false),
|
| - environment()->Context());
|
| + Node* module = NewNode(
|
| + javascript()->LoadContext(depth, Context::EXTENSION_INDEX, false));
|
| Node* value = NewNode(javascript()->LoadModule(cell_index), module);
|
| environment()->BindAccumulator(value);
|
| }
|
| @@ -1080,9 +1079,8 @@ void BytecodeGraphBuilder::VisitLdaModuleVariable() {
|
| void BytecodeGraphBuilder::VisitStaModuleVariable() {
|
| int32_t cell_index = bytecode_iterator().GetImmediateOperand(0);
|
| uint32_t depth = bytecode_iterator().GetUnsignedImmediateOperand(1);
|
| - Node* module =
|
| - NewNode(javascript()->LoadContext(depth, Context::EXTENSION_INDEX, false),
|
| - environment()->Context());
|
| + Node* module = NewNode(
|
| + javascript()->LoadContext(depth, Context::EXTENSION_INDEX, false));
|
| Node* value = environment()->LookupAccumulator();
|
| NewNode(javascript()->StoreModule(cell_index), module, value);
|
| }
|
|
|