src/share/vm/c1/c1_IR.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6930772 Sdiff src/share/vm/c1

src/share/vm/c1/c1_IR.hpp

Print this page




 252     DebugToken* monvals = recorder->create_monitor_values(monitors());
 253     // reexecute allowed only for the topmost frame
 254     bool reexecute = topmost ? should_reexecute() : false;
 255     bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis.
 256     recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, is_method_handle_invoke, return_oop, locvals, expvals, monvals);
 257   }
 258 };
 259 
 260 
 261 class CodeEmitInfo: public CompilationResourceObj {
 262   friend class LinearScan;
 263  private:
 264   IRScopeDebugInfo* _scope_debug_info;
 265   IRScope*          _scope;
 266   XHandlers*        _exception_handlers;
 267   OopMap*           _oop_map;
 268   ValueStack*       _stack;                      // used by deoptimization (contains also monitors
 269   int               _bci;
 270   CodeEmitInfo*     _next;
 271   int               _id;

 272 
 273   FrameMap*     frame_map() const                { return scope()->compilation()->frame_map(); }
 274   Compilation*  compilation() const              { return scope()->compilation(); }
 275 
 276  public:
 277 
 278   // use scope from ValueStack
 279   CodeEmitInfo(int bci, ValueStack* stack, XHandlers* exception_handlers);
 280 
 281   // used by natives
 282   CodeEmitInfo(IRScope* scope, int bci)
 283     : _scope(scope)
 284     , _bci(bci)
 285     , _oop_map(NULL)
 286     , _scope_debug_info(NULL)
 287     , _stack(NULL)
 288     , _exception_handlers(NULL)
 289     , _next(NULL)
 290     , _id(-1) {

 291   }
 292 
 293   // make a copy
 294   CodeEmitInfo(CodeEmitInfo* info, bool lock_stack_only = false);
 295 
 296   // accessors
 297   OopMap* oop_map()                              { return _oop_map; }
 298   ciMethod* method() const                       { return _scope->method(); }
 299   IRScope* scope() const                         { return _scope; }
 300   XHandlers* exception_handlers() const          { return _exception_handlers; }
 301   ValueStack* stack() const                      { return _stack; }
 302   int bci() const                                { return _bci; }
 303 
 304   void add_register_oop(LIR_Opr opr);
 305   void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool is_method_handle_invoke = false);
 306 
 307   CodeEmitInfo* next() const        { return _next; }
 308   void set_next(CodeEmitInfo* next) { _next = next; }
 309 
 310   int id() const      { return _id; }
 311   void set_id(int id) { _id = id; }



 312 };
 313 
 314 
 315 class IR: public CompilationResourceObj {
 316  private:
 317   Compilation*     _compilation;                 // the current compilation
 318   IRScope*         _top_scope;                   // the root of the scope hierarchy
 319   WordSize         _locals_size;                 // the space required for all locals
 320   int              _num_loops;                   // Total number of loops
 321   BlockList*       _code;                        // the blocks in code generation order w/ use counts
 322 
 323  public:
 324   // creation
 325   IR(Compilation* compilation, ciMethod* method, int osr_bci);
 326 
 327   // accessors
 328   bool             is_valid() const              { return top_scope()->is_valid(); }
 329   Compilation*     compilation() const           { return _compilation; }
 330   IRScope*         top_scope() const             { return _top_scope; }
 331   int              number_of_locks() const       { return top_scope()->number_of_locks(); }




 252     DebugToken* monvals = recorder->create_monitor_values(monitors());
 253     // reexecute allowed only for the topmost frame
 254     bool reexecute = topmost ? should_reexecute() : false;
 255     bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis.
 256     recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, is_method_handle_invoke, return_oop, locvals, expvals, monvals);
 257   }
 258 };
 259 
 260 
 261 class CodeEmitInfo: public CompilationResourceObj {
 262   friend class LinearScan;
 263  private:
 264   IRScopeDebugInfo* _scope_debug_info;
 265   IRScope*          _scope;
 266   XHandlers*        _exception_handlers;
 267   OopMap*           _oop_map;
 268   ValueStack*       _stack;                      // used by deoptimization (contains also monitors
 269   int               _bci;
 270   CodeEmitInfo*     _next;
 271   int               _id;
 272   bool              _is_method_handle_invoke;    // true if the associated call site is a MethodHandle call site.
 273 
 274   FrameMap*     frame_map() const                { return scope()->compilation()->frame_map(); }
 275   Compilation*  compilation() const              { return scope()->compilation(); }
 276 
 277  public:
 278 
 279   // use scope from ValueStack
 280   CodeEmitInfo(int bci, ValueStack* stack, XHandlers* exception_handlers);
 281 
 282   // used by natives
 283   CodeEmitInfo(IRScope* scope, int bci)
 284     : _scope(scope)
 285     , _bci(bci)
 286     , _oop_map(NULL)
 287     , _scope_debug_info(NULL)
 288     , _stack(NULL)
 289     , _exception_handlers(NULL)
 290     , _next(NULL)
 291     , _id(-1)
 292     , _is_method_handle_invoke(false) {
 293   }
 294 
 295   // make a copy
 296   CodeEmitInfo(CodeEmitInfo* info, bool lock_stack_only = false);
 297 
 298   // accessors
 299   OopMap* oop_map()                              { return _oop_map; }
 300   ciMethod* method() const                       { return _scope->method(); }
 301   IRScope* scope() const                         { return _scope; }
 302   XHandlers* exception_handlers() const          { return _exception_handlers; }
 303   ValueStack* stack() const                      { return _stack; }
 304   int bci() const                                { return _bci; }
 305 
 306   void add_register_oop(LIR_Opr opr);
 307   void record_debug_info(DebugInformationRecorder* recorder, int pc_offset);
 308 
 309   CodeEmitInfo* next() const        { return _next; }
 310   void set_next(CodeEmitInfo* next) { _next = next; }
 311 
 312   int id() const      { return _id; }
 313   void set_id(int id) { _id = id; }
 314 
 315   bool     is_method_handle_invoke() const { return _is_method_handle_invoke;     }
 316   void set_is_method_handle_invoke(bool x) {        _is_method_handle_invoke = x; }
 317 };
 318 
 319 
 320 class IR: public CompilationResourceObj {
 321  private:
 322   Compilation*     _compilation;                 // the current compilation
 323   IRScope*         _top_scope;                   // the root of the scope hierarchy
 324   WordSize         _locals_size;                 // the space required for all locals
 325   int              _num_loops;                   // Total number of loops
 326   BlockList*       _code;                        // the blocks in code generation order w/ use counts
 327 
 328  public:
 329   // creation
 330   IR(Compilation* compilation, ciMethod* method, int osr_bci);
 331 
 332   // accessors
 333   bool             is_valid() const              { return top_scope()->is_valid(); }
 334   Compilation*     compilation() const           { return _compilation; }
 335   IRScope*         top_scope() const             { return _top_scope; }
 336   int              number_of_locks() const       { return top_scope()->number_of_locks(); }


src/share/vm/c1/c1_IR.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File