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 #ifndef V8_INTERPRETER_BYTECODE_GENERATOR_H_ | 5 #ifndef V8_INTERPRETER_BYTECODE_GENERATOR_H_ |
6 #define V8_INTERPRETER_BYTECODE_GENERATOR_H_ | 6 #define V8_INTERPRETER_BYTECODE_GENERATOR_H_ |
7 | 7 |
8 #include "src/ast/ast.h" | 8 #include "src/ast/ast.h" |
9 #include "src/interpreter/bytecode-array-builder.h" | 9 #include "src/interpreter/bytecode-array-builder.h" |
10 #include "src/interpreter/bytecodes.h" | 10 #include "src/interpreter/bytecodes.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 void VisitVariableLoadForAccumulatorValue( | 73 void VisitVariableLoadForAccumulatorValue( |
74 Variable* variable, FeedbackVectorSlot slot, | 74 Variable* variable, FeedbackVectorSlot slot, |
75 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF); | 75 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF); |
76 MUST_USE_RESULT Register | 76 MUST_USE_RESULT Register |
77 VisitVariableLoadForRegisterValue(Variable* variable, FeedbackVectorSlot slot, | 77 VisitVariableLoadForRegisterValue(Variable* variable, FeedbackVectorSlot slot, |
78 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF); | 78 TypeofMode typeof_mode = NOT_INSIDE_TYPEOF); |
79 void VisitVariableAssignment(Variable* variable, FeedbackVectorSlot slot); | 79 void VisitVariableAssignment(Variable* variable, FeedbackVectorSlot slot); |
80 | 80 |
81 void VisitArgumentsObject(Variable* variable); | 81 void VisitArgumentsObject(Variable* variable); |
82 void VisitRestArgumentsArray(Variable* rest, int index); | 82 void VisitRestArgumentsArray(Variable* rest, int index); |
| 83 void VisitClassLiteralContents(ClassLiteral* expr); |
| 84 void VisitClassLiteralForRuntimeDefinition(ClassLiteral* expr); |
| 85 void VisitClassLiteralProperties(ClassLiteral* expr, Register literal, |
| 86 Register prototype); |
| 87 void VisitClassLiteralStaticPrototypeWithComputedName(Register name); |
83 void VisitThisFunctionVariable(Variable* variable); | 88 void VisitThisFunctionVariable(Variable* variable); |
84 void VisitNewTargetVariable(Variable* variable); | 89 void VisitNewTargetVariable(Variable* variable); |
85 void VisitNewLocalFunctionContext(); | 90 void VisitNewLocalFunctionContext(); |
86 void VisitBuildLocalActivationContext(); | 91 void VisitBuildLocalActivationContext(); |
87 void VisitBlockDeclarationsAndStatements(Block* stmt); | 92 void VisitBlockDeclarationsAndStatements(Block* stmt); |
88 void VisitNewLocalBlockContext(Scope* scope); | 93 void VisitNewLocalBlockContext(Scope* scope); |
89 void VisitNewLocalCatchContext(Variable* variable); | 94 void VisitNewLocalCatchContext(Variable* variable); |
90 void VisitNewLocalWithContext(); | 95 void VisitNewLocalWithContext(); |
91 void VisitFunctionClosureForContext(); | 96 void VisitFunctionClosureForContext(); |
92 void VisitSetHomeObject(Register value, Register home_object, | 97 void VisitSetHomeObject(Register value, Register home_object, |
93 ObjectLiteralProperty* property, int slot_number = 0); | 98 ObjectLiteralProperty* property, int slot_number = 0); |
94 void VisitObjectLiteralAccessor(Register home_object, | 99 void VisitObjectLiteralAccessor(Register home_object, |
95 ObjectLiteralProperty* property, | 100 ObjectLiteralProperty* property, |
96 Register value_out); | 101 Register value_out); |
97 void VisitForInAssignment(Expression* expr, FeedbackVectorSlot slot); | 102 void VisitForInAssignment(Expression* expr, FeedbackVectorSlot slot); |
98 | 103 |
99 // Visit the body of a loop iteration. | 104 // Visit the body of a loop iteration. |
100 void VisitIterationBody(IterationStatement* stmt, LoopBuilder* loop_builder); | 105 void VisitIterationBody(IterationStatement* stmt, LoopBuilder* loop_builder); |
101 | 106 |
102 // Visit a statement and switch scopes, the context is in the accumulator. | 107 // Visit a statement and switch scopes, the context is in the accumulator. |
103 void VisitInScope(Statement* stmt, Scope* scope); | 108 void VisitInScope(Statement* stmt, Scope* scope); |
104 | 109 |
105 // Visitors for obtaining expression result in the accumulator, in a | 110 // Visitors for obtaining expression result in the accumulator, in a |
106 // register, or just getting the effect. | 111 // register, or just getting the effect. |
107 void VisitForAccumulatorValue(Expression* expression); | 112 void VisitForAccumulatorValue(Expression* expr); |
108 MUST_USE_RESULT Register VisitForRegisterValue(Expression* expression); | 113 void VisitForAccumulatorValueOrTheHole(Expression* expr); |
109 void VisitForEffect(Expression* node); | 114 MUST_USE_RESULT Register VisitForRegisterValue(Expression* expr); |
| 115 void VisitForEffect(Expression* expr); |
110 | 116 |
111 // Methods for tracking and remapping register. | 117 // Methods for tracking and remapping register. |
112 void RecordStoreToRegister(Register reg); | 118 void RecordStoreToRegister(Register reg); |
113 Register LoadFromAliasedRegister(Register reg); | 119 Register LoadFromAliasedRegister(Register reg); |
114 | 120 |
115 inline void set_builder(BytecodeArrayBuilder* builder) { builder_ = builder; } | 121 inline void set_builder(BytecodeArrayBuilder* builder) { builder_ = builder; } |
116 inline BytecodeArrayBuilder* builder() const { return builder_; } | 122 inline BytecodeArrayBuilder* builder() const { return builder_; } |
117 | 123 |
118 inline Isolate* isolate() const { return isolate_; } | 124 inline Isolate* isolate() const { return isolate_; } |
119 inline Zone* zone() const { return zone_; } | 125 inline Zone* zone() const { return zone_; } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 ContextScope* execution_context_; | 164 ContextScope* execution_context_; |
159 ExpressionResultScope* execution_result_; | 165 ExpressionResultScope* execution_result_; |
160 RegisterAllocationScope* register_allocator_; | 166 RegisterAllocationScope* register_allocator_; |
161 }; | 167 }; |
162 | 168 |
163 } // namespace interpreter | 169 } // namespace interpreter |
164 } // namespace internal | 170 } // namespace internal |
165 } // namespace v8 | 171 } // namespace v8 |
166 | 172 |
167 #endif // V8_INTERPRETER_BYTECODE_GENERATOR_H_ | 173 #endif // V8_INTERPRETER_BYTECODE_GENERATOR_H_ |
OLD | NEW |