| OLD | NEW | 
|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/compiler/bytecode-graph-builder.h" | 5 #include "src/compiler/bytecode-graph-builder.h" | 
| 6 | 6 | 
| 7 #include "src/ast/ast.h" | 7 #include "src/ast/ast.h" | 
| 8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" | 
| 9 #include "src/compilation-info.h" | 9 #include "src/compilation-info.h" | 
| 10 #include "src/compiler/compiler-source-position-table.h" | 10 #include "src/compiler/compiler-source-position-table.h" | 
| (...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 763   int flags = bytecode_iterator().GetFlagOperand(2); | 763   int flags = bytecode_iterator().GetFlagOperand(2); | 
| 764   VectorSlotPair feedback = | 764   VectorSlotPair feedback = | 
| 765       CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(3)); | 765       CreateVectorSlotPair(bytecode_iterator().GetIndexOperand(3)); | 
| 766 | 766 | 
| 767   const Operator* op = javascript()->StoreDataPropertyInLiteral(feedback); | 767   const Operator* op = javascript()->StoreDataPropertyInLiteral(feedback); | 
| 768   Node* node = NewNode(op, object, name, value, jsgraph()->Constant(flags)); | 768   Node* node = NewNode(op, object, name, value, jsgraph()->Constant(flags)); | 
| 769   environment()->RecordAfterState(node, Environment::kAttachFrameState); | 769   environment()->RecordAfterState(node, Environment::kAttachFrameState); | 
| 770 } | 770 } | 
| 771 | 771 | 
| 772 void BytecodeGraphBuilder::VisitLdaContextSlot() { | 772 void BytecodeGraphBuilder::VisitLdaContextSlot() { | 
|  | 773   // TODO(mythria): immutable flag is also set to false. This information is not | 
|  | 774   // available in bytecode array. update this code when the implementation | 
|  | 775   // changes. | 
| 773   const Operator* op = javascript()->LoadContext( | 776   const Operator* op = javascript()->LoadContext( | 
| 774       bytecode_iterator().GetUnsignedImmediateOperand(2), | 777       bytecode_iterator().GetUnsignedImmediateOperand(2), | 
| 775       bytecode_iterator().GetIndexOperand(1), false); | 778       bytecode_iterator().GetIndexOperand(1), false); | 
| 776   Node* node = NewNode(op); | 779   Node* node = NewNode(op); | 
| 777   Node* context = | 780   Node* context = | 
| 778       environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); | 781       environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); | 
| 779   NodeProperties::ReplaceContextInput(node, context); | 782   NodeProperties::ReplaceContextInput(node, context); | 
| 780   environment()->BindAccumulator(node); | 783   environment()->BindAccumulator(node); | 
| 781 } | 784 } | 
| 782 | 785 | 
| 783 void BytecodeGraphBuilder::VisitLdaImmutableContextSlot() { |  | 
| 784   const Operator* op = javascript()->LoadContext( |  | 
| 785       bytecode_iterator().GetUnsignedImmediateOperand(2), |  | 
| 786       bytecode_iterator().GetIndexOperand(1), true); |  | 
| 787   Node* node = NewNode(op); |  | 
| 788   Node* context = |  | 
| 789       environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |  | 
| 790   NodeProperties::ReplaceContextInput(node, context); |  | 
| 791   environment()->BindAccumulator(node); |  | 
| 792 } |  | 
| 793 |  | 
| 794 void BytecodeGraphBuilder::VisitLdaCurrentContextSlot() { | 786 void BytecodeGraphBuilder::VisitLdaCurrentContextSlot() { | 
|  | 787   // TODO(mythria): immutable flag is also set to false. This information is not | 
|  | 788   // available in bytecode array. update this code when the implementation | 
|  | 789   // changes. | 
| 795   const Operator* op = javascript()->LoadContext( | 790   const Operator* op = javascript()->LoadContext( | 
| 796       0, bytecode_iterator().GetIndexOperand(0), false); | 791       0, bytecode_iterator().GetIndexOperand(0), false); | 
| 797   Node* node = NewNode(op); | 792   Node* node = NewNode(op); | 
| 798   environment()->BindAccumulator(node); | 793   environment()->BindAccumulator(node); | 
| 799 } | 794 } | 
| 800 |  | 
| 801 void BytecodeGraphBuilder::VisitLdaImmutableCurrentContextSlot() { |  | 
| 802   const Operator* op = javascript()->LoadContext( |  | 
| 803       0, bytecode_iterator().GetIndexOperand(0), true); |  | 
| 804   Node* node = NewNode(op); |  | 
| 805   environment()->BindAccumulator(node); |  | 
| 806 } |  | 
| 807 | 795 | 
| 808 void BytecodeGraphBuilder::VisitStaContextSlot() { | 796 void BytecodeGraphBuilder::VisitStaContextSlot() { | 
| 809   const Operator* op = javascript()->StoreContext( | 797   const Operator* op = javascript()->StoreContext( | 
| 810       bytecode_iterator().GetUnsignedImmediateOperand(2), | 798       bytecode_iterator().GetUnsignedImmediateOperand(2), | 
| 811       bytecode_iterator().GetIndexOperand(1)); | 799       bytecode_iterator().GetIndexOperand(1)); | 
| 812   Node* value = environment()->LookupAccumulator(); | 800   Node* value = environment()->LookupAccumulator(); | 
| 813   Node* node = NewNode(op, value); | 801   Node* node = NewNode(op, value); | 
| 814   Node* context = | 802   Node* context = | 
| 815       environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); | 803       environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); | 
| 816   NodeProperties::ReplaceContextInput(node, context); | 804   NodeProperties::ReplaceContextInput(node, context); | 
| (...skipping 1510 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2327         it->source_position().ScriptOffset(), start_position_.InliningId())); | 2315         it->source_position().ScriptOffset(), start_position_.InliningId())); | 
| 2328     it->Advance(); | 2316     it->Advance(); | 
| 2329   } else { | 2317   } else { | 
| 2330     DCHECK_GT(it->code_offset(), offset); | 2318     DCHECK_GT(it->code_offset(), offset); | 
| 2331   } | 2319   } | 
| 2332 } | 2320 } | 
| 2333 | 2321 | 
| 2334 }  // namespace compiler | 2322 }  // namespace compiler | 
| 2335 }  // namespace internal | 2323 }  // namespace internal | 
| 2336 }  // namespace v8 | 2324 }  // namespace v8 | 
| OLD | NEW | 
|---|