< prev index next >

src/share/vm/c1/c1_IR.hpp

Print this page




 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 


< prev index next >