242 bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis. 243 recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, is_method_handle_invoke, return_oop, locvals, expvals, monvals); 244 } 245 }; 246 247 248 class CodeEmitInfo: public CompilationResourceObj { 249 friend class LinearScan; 250 private: 251 IRScopeDebugInfo* _scope_debug_info; 252 IRScope* _scope; 253 XHandlers* _exception_handlers; 254 OopMap* _oop_map; 255 ValueStack* _stack; // used by deoptimization (contains also monitors 256 bool _is_method_handle_invoke; // true if the associated call site is a MethodHandle call site. 257 bool _deoptimize_on_exception; 258 259 FrameMap* frame_map() const { return scope()->compilation()->frame_map(); } 260 Compilation* compilation() const { return scope()->compilation(); } 261 262 public: 263 264 // use scope from ValueStack 265 CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers, bool deoptimize_on_exception = false); 266 267 // make a copy 268 CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack = NULL); 269 270 // accessors 271 OopMap* oop_map() { return _oop_map; } 272 ciMethod* method() const { return _scope->method(); } 273 IRScope* scope() const { return _scope; } 274 XHandlers* exception_handlers() const { return _exception_handlers; } 275 ValueStack* stack() const { return _stack; } 276 bool deoptimize_on_exception() const { return _deoptimize_on_exception; } 277 278 void add_register_oop(LIR_Opr opr); 279 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset); 280 281 bool is_method_handle_invoke() const { return _is_method_handle_invoke; } 282 void set_is_method_handle_invoke(bool x) { _is_method_handle_invoke = x; } 283 284 int interpreter_frame_size() const; 285 }; 286 287 288 class IR: public CompilationResourceObj { 289 private: 290 Compilation* _compilation; // the current compilation 291 IRScope* _top_scope; // the root of the scope hierarchy 292 WordSize _locals_size; // the space required for all locals 293 int _num_loops; // Total number of loops 294 BlockList* _code; // the blocks in code generation order w/ use counts 295 296 public: 297 // creation 298 IR(Compilation* compilation, ciMethod* method, int osr_bci); 299 | 242 bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis. 243 recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, is_method_handle_invoke, return_oop, locvals, expvals, monvals); 244 } 245 }; 246 247 248 class CodeEmitInfo: public CompilationResourceObj { 249 friend class LinearScan; 250 private: 251 IRScopeDebugInfo* _scope_debug_info; 252 IRScope* _scope; 253 XHandlers* _exception_handlers; 254 OopMap* _oop_map; 255 ValueStack* _stack; // used by deoptimization (contains also monitors 256 bool _is_method_handle_invoke; // true if the associated call site is a MethodHandle call site. 257 bool _deoptimize_on_exception; 258 259 FrameMap* frame_map() const { return scope()->compilation()->frame_map(); } 260 Compilation* compilation() const { return scope()->compilation(); } 261 262 void record_scope_non_safepoint_debug_info(DebugInformationRecorder* recorder, int pc_offset, IRScope *scope, ValueStack *state); 263 264 public: 265 266 // use scope from ValueStack 267 CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers, bool deoptimize_on_exception = false); 268 269 // make a copy 270 CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack = NULL); 271 272 // accessors 273 OopMap* oop_map() { return _oop_map; } 274 ciMethod* method() const { return _scope->method(); } 275 IRScope* scope() const { return _scope; } 276 XHandlers* exception_handlers() const { return _exception_handlers; } 277 ValueStack* stack() const { return _stack; } 278 bool deoptimize_on_exception() const { return _deoptimize_on_exception; } 279 280 void add_register_oop(LIR_Opr opr); 281 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset); 282 void record_non_safepoint_debug_info(DebugInformationRecorder* recorder, int pc_offset); 283 284 bool is_method_handle_invoke() const { return _is_method_handle_invoke; } 285 void set_is_method_handle_invoke(bool x) { _is_method_handle_invoke = x; } 286 287 int interpreter_frame_size() const; 288 }; 289 290 291 class IR: public CompilationResourceObj { 292 private: 293 Compilation* _compilation; // the current compilation 294 IRScope* _top_scope; // the root of the scope hierarchy 295 WordSize _locals_size; // the space required for all locals 296 int _num_loops; // Total number of loops 297 BlockList* _code; // the blocks in code generation order w/ use counts 298 299 public: 300 // creation 301 IR(Compilation* compilation, ciMethod* method, int osr_bci); 302 |