< prev index next >

src/share/vm/c1/c1_IR.hpp

Print this page




 227   int                           bci()         { return _bci;         }
 228   GrowableArray<ScopeValue*>*   locals()      { return _locals;      }
 229   GrowableArray<ScopeValue*>*   expressions() { return _expressions; }
 230   GrowableArray<MonitorValue*>* monitors()    { return _monitors;    }
 231   IRScopeDebugInfo*             caller()      { return _caller;      }
 232 
 233   //Whether we should reexecute this bytecode for deopt
 234   bool should_reexecute();
 235 
 236   void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool topmost, bool is_method_handle_invoke = false) {
 237     if (caller() != NULL) {
 238       // Order is significant:  Must record caller first.
 239       caller()->record_debug_info(recorder, pc_offset, false/*topmost*/);
 240     }
 241     DebugToken* locvals = recorder->create_scope_values(locals());
 242     DebugToken* expvals = recorder->create_scope_values(expressions());
 243     DebugToken* monvals = recorder->create_monitor_values(monitors());
 244     // reexecute allowed only for the topmost frame
 245     bool reexecute = topmost ? should_reexecute() : false;
 246     bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis.
 247     recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, is_method_handle_invoke, return_oop, locvals, expvals, monvals);

 248   }
 249 };
 250 
 251 
 252 class CodeEmitInfo: public CompilationResourceObj {
 253   friend class LinearScan;
 254  private:
 255   IRScopeDebugInfo* _scope_debug_info;
 256   IRScope*          _scope;
 257   XHandlers*        _exception_handlers;
 258   OopMap*           _oop_map;
 259   ValueStack*       _stack;                      // used by deoptimization (contains also monitors
 260   bool              _is_method_handle_invoke;    // true if the associated call site is a MethodHandle call site.
 261   bool              _deoptimize_on_exception;
 262 
 263   FrameMap*     frame_map() const                { return scope()->compilation()->frame_map(); }
 264   Compilation*  compilation() const              { return scope()->compilation(); }
 265 
 266  public:
 267 




 227   int                           bci()         { return _bci;         }
 228   GrowableArray<ScopeValue*>*   locals()      { return _locals;      }
 229   GrowableArray<ScopeValue*>*   expressions() { return _expressions; }
 230   GrowableArray<MonitorValue*>* monitors()    { return _monitors;    }
 231   IRScopeDebugInfo*             caller()      { return _caller;      }
 232 
 233   //Whether we should reexecute this bytecode for deopt
 234   bool should_reexecute();
 235 
 236   void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool topmost, bool is_method_handle_invoke = false) {
 237     if (caller() != NULL) {
 238       // Order is significant:  Must record caller first.
 239       caller()->record_debug_info(recorder, pc_offset, false/*topmost*/);
 240     }
 241     DebugToken* locvals = recorder->create_scope_values(locals());
 242     DebugToken* expvals = recorder->create_scope_values(expressions());
 243     DebugToken* monvals = recorder->create_monitor_values(monitors());
 244     // reexecute allowed only for the topmost frame
 245     bool reexecute = topmost ? should_reexecute() : false;
 246     bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis.
 247     bool rethrow_exception = false;
 248     recorder->describe_scope(pc_offset, methodHandle(), scope()->method(), bci(), reexecute, rethrow_exception, is_method_handle_invoke, return_oop, locvals, expvals, monvals);
 249   }
 250 };
 251 
 252 
 253 class CodeEmitInfo: public CompilationResourceObj {
 254   friend class LinearScan;
 255  private:
 256   IRScopeDebugInfo* _scope_debug_info;
 257   IRScope*          _scope;
 258   XHandlers*        _exception_handlers;
 259   OopMap*           _oop_map;
 260   ValueStack*       _stack;                      // used by deoptimization (contains also monitors
 261   bool              _is_method_handle_invoke;    // true if the associated call site is a MethodHandle call site.
 262   bool              _deoptimize_on_exception;
 263 
 264   FrameMap*     frame_map() const                { return scope()->compilation()->frame_map(); }
 265   Compilation*  compilation() const              { return scope()->compilation(); }
 266 
 267  public:
 268 


< prev index next >