src/share/vm/ci/ciEnv.hpp

Print this page
rev 5933 : 8035493: JVMTI PopFrame capability must instruct compilers not to prune locals
Reviewed-by: kvn, sla, coleenp


  52   int              _system_dictionary_modification_counter;
  53   ciObjectFactory* _factory;
  54   OopRecorder*     _oop_recorder;
  55   DebugInformationRecorder* _debug_info;
  56   Dependencies*    _dependencies;
  57   const char*      _failure_reason;
  58   int              _compilable;
  59   bool             _break_at_compile;
  60   int              _num_inlined_bytecodes;
  61   CompileTask*     _task;           // faster access to CompilerThread::task
  62   CompileLog*      _log;            // faster access to CompilerThread::log
  63   void*            _compiler_data;  // compiler-specific stuff, if any
  64 
  65   char* _name_buffer;
  66   int   _name_buffer_len;
  67 
  68   // Cache Jvmti state
  69   bool  _jvmti_can_hotswap_or_post_breakpoint;
  70   bool  _jvmti_can_access_local_variables;
  71   bool  _jvmti_can_post_on_exceptions;

  72 
  73   // Cache DTrace flags
  74   bool  _dtrace_extended_probes;
  75   bool  _dtrace_monitor_probes;
  76   bool  _dtrace_method_probes;
  77   bool  _dtrace_alloc_probes;
  78 
  79   // Distinguished instances of certain ciObjects..
  80   static ciObject*              _null_object_instance;
  81 
  82 #define WK_KLASS_DECL(name, ignore_s, ignore_o) static ciInstanceKlass* _##name;
  83   WK_KLASSES_DO(WK_KLASS_DECL)
  84 #undef WK_KLASS_DECL
  85 
  86   static ciSymbol*        _unloaded_cisymbol;
  87   static ciInstanceKlass* _unloaded_ciinstance_klass;
  88   static ciObjArrayKlass* _unloaded_ciobjarrayklass;
  89 
  90   static jobject _ArrayIndexOutOfBoundsException_handle;
  91   static jobject _ArrayStoreException_handle;


 315 
 316   const char* retry_message() const {
 317     switch (_compilable) {
 318       case ciEnv::MethodCompilable_not_at_tier:
 319         return "retry at different tier";
 320       case ciEnv::MethodCompilable_never:
 321         return "not retryable";
 322       case ciEnv::MethodCompilable:
 323         return NULL;
 324       default:
 325         ShouldNotReachHere();
 326         return NULL;
 327     }
 328   }
 329 
 330   bool break_at_compile() { return _break_at_compile; }
 331   void set_break_at_compile(bool z) { _break_at_compile = z; }
 332 
 333   // Cache Jvmti state
 334   void  cache_jvmti_state();


 335   bool  jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; }
 336   bool  jvmti_can_access_local_variables()     const { return _jvmti_can_access_local_variables; }
 337   bool  jvmti_can_post_on_exceptions()         const { return _jvmti_can_post_on_exceptions; }
 338 
 339   // Cache DTrace flags
 340   void  cache_dtrace_flags();
 341   bool  dtrace_extended_probes() const { return _dtrace_extended_probes; }
 342   bool  dtrace_monitor_probes()  const { return _dtrace_monitor_probes; }
 343   bool  dtrace_method_probes()   const { return _dtrace_method_probes; }
 344   bool  dtrace_alloc_probes()    const { return _dtrace_alloc_probes; }
 345 
 346   // The compiler task which has created this env.
 347   // May be useful to find out compile_id, comp_level, etc.
 348   CompileTask* task() { return _task; }
 349   // Handy forwards to the task:
 350   int comp_level();   // task()->comp_level()
 351   uint compile_id();  // task()->compile_id()
 352 
 353   // Register the result of a compilation.
 354   void register_method(ciMethod*                 target,
 355                        int                       entry_bci,
 356                        CodeOffsets*              offsets,




  52   int              _system_dictionary_modification_counter;
  53   ciObjectFactory* _factory;
  54   OopRecorder*     _oop_recorder;
  55   DebugInformationRecorder* _debug_info;
  56   Dependencies*    _dependencies;
  57   const char*      _failure_reason;
  58   int              _compilable;
  59   bool             _break_at_compile;
  60   int              _num_inlined_bytecodes;
  61   CompileTask*     _task;           // faster access to CompilerThread::task
  62   CompileLog*      _log;            // faster access to CompilerThread::log
  63   void*            _compiler_data;  // compiler-specific stuff, if any
  64 
  65   char* _name_buffer;
  66   int   _name_buffer_len;
  67 
  68   // Cache Jvmti state
  69   bool  _jvmti_can_hotswap_or_post_breakpoint;
  70   bool  _jvmti_can_access_local_variables;
  71   bool  _jvmti_can_post_on_exceptions;
  72   bool  _jvmti_can_pop_frame;
  73 
  74   // Cache DTrace flags
  75   bool  _dtrace_extended_probes;
  76   bool  _dtrace_monitor_probes;
  77   bool  _dtrace_method_probes;
  78   bool  _dtrace_alloc_probes;
  79 
  80   // Distinguished instances of certain ciObjects..
  81   static ciObject*              _null_object_instance;
  82 
  83 #define WK_KLASS_DECL(name, ignore_s, ignore_o) static ciInstanceKlass* _##name;
  84   WK_KLASSES_DO(WK_KLASS_DECL)
  85 #undef WK_KLASS_DECL
  86 
  87   static ciSymbol*        _unloaded_cisymbol;
  88   static ciInstanceKlass* _unloaded_ciinstance_klass;
  89   static ciObjArrayKlass* _unloaded_ciobjarrayklass;
  90 
  91   static jobject _ArrayIndexOutOfBoundsException_handle;
  92   static jobject _ArrayStoreException_handle;


 316 
 317   const char* retry_message() const {
 318     switch (_compilable) {
 319       case ciEnv::MethodCompilable_not_at_tier:
 320         return "retry at different tier";
 321       case ciEnv::MethodCompilable_never:
 322         return "not retryable";
 323       case ciEnv::MethodCompilable:
 324         return NULL;
 325       default:
 326         ShouldNotReachHere();
 327         return NULL;
 328     }
 329   }
 330 
 331   bool break_at_compile() { return _break_at_compile; }
 332   void set_break_at_compile(bool z) { _break_at_compile = z; }
 333 
 334   // Cache Jvmti state
 335   void  cache_jvmti_state();
 336   bool  jvmti_state_changed() const;
 337   bool  should_retain_local_variables() const;
 338   bool  jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; }

 339   bool  jvmti_can_post_on_exceptions()         const { return _jvmti_can_post_on_exceptions; }
 340 
 341   // Cache DTrace flags
 342   void  cache_dtrace_flags();
 343   bool  dtrace_extended_probes() const { return _dtrace_extended_probes; }
 344   bool  dtrace_monitor_probes()  const { return _dtrace_monitor_probes; }
 345   bool  dtrace_method_probes()   const { return _dtrace_method_probes; }
 346   bool  dtrace_alloc_probes()    const { return _dtrace_alloc_probes; }
 347 
 348   // The compiler task which has created this env.
 349   // May be useful to find out compile_id, comp_level, etc.
 350   CompileTask* task() { return _task; }
 351   // Handy forwards to the task:
 352   int comp_level();   // task()->comp_level()
 353   uint compile_id();  // task()->compile_id()
 354 
 355   // Register the result of a compilation.
 356   void register_method(ciMethod*                 target,
 357                        int                       entry_bci,
 358                        CodeOffsets*              offsets,