Chromium Code Reviews| 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::VisitStaDataPropertyInLiteral() { |
| } |
| 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,16 +780,31 @@ void BytecodeGraphBuilder::VisitLdaContextSlot() { |
| 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); |
|
rmcilroy
2017/02/07 14:02:14
nit - you could pull out the shared code to a Buil
Jarin
2017/02/07 14:31:05
I thought about this and I'd prefer it this way be
|
| +} |
| + |
| 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); |
| +} |
| + |
| void BytecodeGraphBuilder::VisitStaContextSlot() { |
| const Operator* op = javascript()->StoreContext( |
| bytecode_iterator().GetUnsignedImmediateOperand(2), |