160 Instruction* inline_cleanup_return_prev() const{ return _cleanup_return_prev; } |
160 Instruction* inline_cleanup_return_prev() const{ return _cleanup_return_prev; } |
161 ValueStack* inline_cleanup_state() const { return _cleanup_state; } |
161 ValueStack* inline_cleanup_state() const { return _cleanup_state; } |
162 }; |
162 }; |
163 |
163 |
164 // for all GraphBuilders |
164 // for all GraphBuilders |
165 static bool _is_initialized; // true if trap tables were initialized, false otherwise |
|
166 static bool _can_trap[Bytecodes::number_of_java_codes]; |
165 static bool _can_trap[Bytecodes::number_of_java_codes]; |
167 static bool _is_async[Bytecodes::number_of_java_codes]; |
166 static bool _is_async[Bytecodes::number_of_java_codes]; |
168 |
167 |
169 // for each instance of GraphBuilder |
168 // for each instance of GraphBuilder |
170 ScopeData* _scope_data; // Per-scope data; used for inlining |
169 ScopeData* _scope_data; // Per-scope data; used for inlining |
266 Instruction* append_with_bci(Instruction* instr, int bci); |
265 Instruction* append_with_bci(Instruction* instr, int bci); |
267 Instruction* append(Instruction* instr); |
266 Instruction* append(Instruction* instr); |
268 Instruction* append_split(StateSplit* instr); |
267 Instruction* append_split(StateSplit* instr); |
269 |
268 |
270 // other helpers |
269 // other helpers |
271 static bool is_initialized() { return _is_initialized; } |
|
272 static bool is_async(Bytecodes::Code code) { |
270 static bool is_async(Bytecodes::Code code) { |
273 assert(0 <= code && code < Bytecodes::number_of_java_codes, "illegal bytecode"); |
271 assert(0 <= code && code < Bytecodes::number_of_java_codes, "illegal bytecode"); |
274 return _is_async[code]; |
272 return _is_async[code]; |
275 } |
273 } |
276 BlockBegin* block_at(int bci) { return scope_data()->block_at(bci); } |
274 BlockBegin* block_at(int bci) { return scope_data()->block_at(bci); } |