267
268 // use scope from ValueStack
269 CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers, bool deoptimize_on_exception = false);
270
271 // make a copy
272 CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack = NULL);
273
274 // accessors
275 OopMap* oop_map() { return _oop_map; }
276 ciMethod* method() const { return _scope->method(); }
277 IRScope* scope() const { return _scope; }
278 XHandlers* exception_handlers() const { return _exception_handlers; }
279 ValueStack* stack() const { return _stack; }
280 bool deoptimize_on_exception() const { return _deoptimize_on_exception; }
281
282 void add_register_oop(LIR_Opr opr);
283 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset);
284
285 bool is_method_handle_invoke() const { return _is_method_handle_invoke; }
286 void set_is_method_handle_invoke(bool x) { _is_method_handle_invoke = x; }
287 };
288
289
290 class IR: public CompilationResourceObj {
291 private:
292 Compilation* _compilation; // the current compilation
293 IRScope* _top_scope; // the root of the scope hierarchy
294 WordSize _locals_size; // the space required for all locals
295 int _num_loops; // Total number of loops
296 BlockList* _code; // the blocks in code generation order w/ use counts
297
298 public:
299 // creation
300 IR(Compilation* compilation, ciMethod* method, int osr_bci);
301
302 // accessors
303 bool is_valid() const { return top_scope()->is_valid(); }
304 Compilation* compilation() const { return _compilation; }
305 IRScope* top_scope() const { return _top_scope; }
306 int number_of_locks() const { return top_scope()->number_of_locks(); }
|
267
268 // use scope from ValueStack
269 CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers, bool deoptimize_on_exception = false);
270
271 // make a copy
272 CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack = NULL);
273
274 // accessors
275 OopMap* oop_map() { return _oop_map; }
276 ciMethod* method() const { return _scope->method(); }
277 IRScope* scope() const { return _scope; }
278 XHandlers* exception_handlers() const { return _exception_handlers; }
279 ValueStack* stack() const { return _stack; }
280 bool deoptimize_on_exception() const { return _deoptimize_on_exception; }
281
282 void add_register_oop(LIR_Opr opr);
283 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset);
284
285 bool is_method_handle_invoke() const { return _is_method_handle_invoke; }
286 void set_is_method_handle_invoke(bool x) { _is_method_handle_invoke = x; }
287
288 int interpreter_frame_size() const;
289 };
290
291
292 class IR: public CompilationResourceObj {
293 private:
294 Compilation* _compilation; // the current compilation
295 IRScope* _top_scope; // the root of the scope hierarchy
296 WordSize _locals_size; // the space required for all locals
297 int _num_loops; // Total number of loops
298 BlockList* _code; // the blocks in code generation order w/ use counts
299
300 public:
301 // creation
302 IR(Compilation* compilation, ciMethod* method, int osr_bci);
303
304 // accessors
305 bool is_valid() const { return top_scope()->is_valid(); }
306 Compilation* compilation() const { return _compilation; }
307 IRScope* top_scope() const { return _top_scope; }
308 int number_of_locks() const { return top_scope()->number_of_locks(); }
|