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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 // register, or just getting the effect. | 117 // register, or just getting the effect. |
118 void VisitForAccumulatorValue(Expression* expr); | 118 void VisitForAccumulatorValue(Expression* expr); |
119 void VisitForAccumulatorValueOrTheHole(Expression* expr); | 119 void VisitForAccumulatorValueOrTheHole(Expression* expr); |
120 MUST_USE_RESULT Register VisitForRegisterValue(Expression* expr); | 120 MUST_USE_RESULT Register VisitForRegisterValue(Expression* expr); |
121 void VisitForEffect(Expression* expr); | 121 void VisitForEffect(Expression* expr); |
122 | 122 |
123 // Methods for tracking and remapping register. | 123 // Methods for tracking and remapping register. |
124 void RecordStoreToRegister(Register reg); | 124 void RecordStoreToRegister(Register reg); |
125 Register LoadFromAliasedRegister(Register reg); | 125 Register LoadFromAliasedRegister(Register reg); |
126 | 126 |
127 // Methods for tracking try-block nesting. | |
128 bool IsInsideTryCatch() const { return try_catch_nesting_level_ > 0; } | |
129 bool IsInsideTryFinally() const { return try_finally_nesting_level_ > 0; } | |
130 | |
131 inline void set_builder(BytecodeArrayBuilder* builder) { builder_ = builder; } | 127 inline void set_builder(BytecodeArrayBuilder* builder) { builder_ = builder; } |
132 inline BytecodeArrayBuilder* builder() const { return builder_; } | 128 inline BytecodeArrayBuilder* builder() const { return builder_; } |
133 | 129 |
134 inline Isolate* isolate() const { return isolate_; } | 130 inline Isolate* isolate() const { return isolate_; } |
135 inline Zone* zone() const { return zone_; } | 131 inline Zone* zone() const { return zone_; } |
136 | 132 |
137 inline Scope* scope() const { return scope_; } | 133 inline Scope* scope() const { return scope_; } |
138 inline void set_scope(Scope* scope) { scope_ = scope; } | 134 inline void set_scope(Scope* scope) { scope_ = scope; } |
139 inline CompilationInfo* info() const { return info_; } | 135 inline CompilationInfo* info() const { return info_; } |
140 inline void set_info(CompilationInfo* info) { info_ = info; } | 136 inline void set_info(CompilationInfo* info) { info_ = info; } |
(...skipping 26 matching lines...) Expand all Loading... |
167 Isolate* isolate_; | 163 Isolate* isolate_; |
168 Zone* zone_; | 164 Zone* zone_; |
169 BytecodeArrayBuilder* builder_; | 165 BytecodeArrayBuilder* builder_; |
170 CompilationInfo* info_; | 166 CompilationInfo* info_; |
171 Scope* scope_; | 167 Scope* scope_; |
172 ZoneVector<Handle<Object>> globals_; | 168 ZoneVector<Handle<Object>> globals_; |
173 ControlScope* execution_control_; | 169 ControlScope* execution_control_; |
174 ContextScope* execution_context_; | 170 ContextScope* execution_context_; |
175 ExpressionResultScope* execution_result_; | 171 ExpressionResultScope* execution_result_; |
176 RegisterAllocationScope* register_allocator_; | 172 RegisterAllocationScope* register_allocator_; |
177 int try_catch_nesting_level_; | |
178 int try_finally_nesting_level_; | |
179 }; | 173 }; |
180 | 174 |
181 } // namespace interpreter | 175 } // namespace interpreter |
182 } // namespace internal | 176 } // namespace internal |
183 } // namespace v8 | 177 } // namespace v8 |
184 | 178 |
185 #endif // V8_INTERPRETER_BYTECODE_GENERATOR_H_ | 179 #endif // V8_INTERPRETER_BYTECODE_GENERATOR_H_ |
OLD | NEW |