Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/c1/c1_IR.hpp
          +++ new/src/share/vm/c1/c1_IR.hpp
↓ open down ↓ 261 lines elided ↑ open up ↑
 262  262    friend class LinearScan;
 263  263   private:
 264  264    IRScopeDebugInfo* _scope_debug_info;
 265  265    IRScope*          _scope;
 266  266    XHandlers*        _exception_handlers;
 267  267    OopMap*           _oop_map;
 268  268    ValueStack*       _stack;                      // used by deoptimization (contains also monitors
 269  269    int               _bci;
 270  270    CodeEmitInfo*     _next;
 271  271    int               _id;
      272 +  bool              _is_method_handle_invoke;    // true if the associated call site is a MethodHandle call site.
 272  273  
 273  274    FrameMap*     frame_map() const                { return scope()->compilation()->frame_map(); }
 274  275    Compilation*  compilation() const              { return scope()->compilation(); }
 275  276  
 276  277   public:
 277  278  
 278  279    // use scope from ValueStack
 279  280    CodeEmitInfo(int bci, ValueStack* stack, XHandlers* exception_handlers);
 280  281  
 281  282    // used by natives
 282  283    CodeEmitInfo(IRScope* scope, int bci)
 283  284      : _scope(scope)
 284  285      , _bci(bci)
 285  286      , _oop_map(NULL)
 286  287      , _scope_debug_info(NULL)
 287  288      , _stack(NULL)
 288  289      , _exception_handlers(NULL)
 289  290      , _next(NULL)
 290      -    , _id(-1) {
      291 +    , _id(-1)
      292 +    , _is_method_handle_invoke(false) {
 291  293    }
 292  294  
 293  295    // make a copy
 294  296    CodeEmitInfo(CodeEmitInfo* info, bool lock_stack_only = false);
 295  297  
 296  298    // accessors
 297  299    OopMap* oop_map()                              { return _oop_map; }
 298  300    ciMethod* method() const                       { return _scope->method(); }
 299  301    IRScope* scope() const                         { return _scope; }
 300  302    XHandlers* exception_handlers() const          { return _exception_handlers; }
 301  303    ValueStack* stack() const                      { return _stack; }
 302  304    int bci() const                                { return _bci; }
 303  305  
 304  306    void add_register_oop(LIR_Opr opr);
 305      -  void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool is_method_handle_invoke = false);
      307 +  void record_debug_info(DebugInformationRecorder* recorder, int pc_offset);
 306  308  
 307  309    CodeEmitInfo* next() const        { return _next; }
 308  310    void set_next(CodeEmitInfo* next) { _next = next; }
 309  311  
 310  312    int id() const      { return _id; }
 311  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; }
 312  317  };
 313  318  
 314  319  
 315  320  class IR: public CompilationResourceObj {
 316  321   private:
 317  322    Compilation*     _compilation;                 // the current compilation
 318  323    IRScope*         _top_scope;                   // the root of the scope hierarchy
 319  324    WordSize         _locals_size;                 // the space required for all locals
 320  325    int              _num_loops;                   // Total number of loops
 321  326    BlockList*       _code;                        // the blocks in code generation order w/ use counts
↓ open down ↓ 61 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX