Index: src/compiler/bytecode-graph-builder.cc |
diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
index d9f52a61b76ad03a381b3fbab4645ef6013da33c..4b2abad3dd3d23c579541519cb08314355494451 100644 |
--- a/src/compiler/bytecode-graph-builder.cc |
+++ b/src/compiler/bytecode-graph-builder.cc |
@@ -770,9 +770,6 @@ |
} |
void BytecodeGraphBuilder::VisitLdaContextSlot() { |
- // TODO(mythria): immutable flag is also set to false. This information is not |
- // available in bytecode array. update this code when the implementation |
- // changes. |
const Operator* op = javascript()->LoadContext( |
bytecode_iterator().GetUnsignedImmediateOperand(2), |
bytecode_iterator().GetIndexOperand(1), false); |
@@ -783,12 +780,27 @@ |
environment()->BindAccumulator(node); |
} |
+void BytecodeGraphBuilder::VisitLdaImmutableContextSlot() { |
+ const Operator* op = javascript()->LoadContext( |
+ bytecode_iterator().GetUnsignedImmediateOperand(2), |
+ bytecode_iterator().GetIndexOperand(1), true); |
+ Node* node = NewNode(op); |
+ Node* context = |
+ environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
+ NodeProperties::ReplaceContextInput(node, context); |
+ environment()->BindAccumulator(node); |
+} |
+ |
void BytecodeGraphBuilder::VisitLdaCurrentContextSlot() { |
- // TODO(mythria): immutable flag is also set to false. This information is not |
- // available in bytecode array. update this code when the implementation |
- // changes. |
const Operator* op = javascript()->LoadContext( |
0, bytecode_iterator().GetIndexOperand(0), false); |
+ Node* node = NewNode(op); |
+ environment()->BindAccumulator(node); |
+} |
+ |
+void BytecodeGraphBuilder::VisitLdaImmutableCurrentContextSlot() { |
+ const Operator* op = javascript()->LoadContext( |
+ 0, bytecode_iterator().GetIndexOperand(0), true); |
Node* node = NewNode(op); |
environment()->BindAccumulator(node); |
} |