src/hotspot/share/ci/ciEnv.hpp
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 54150 5529640c5f67
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
    49   friend class PrepareExtraDataClosure;
    49   friend class PrepareExtraDataClosure;
    50 
    50 
    51 private:
    51 private:
    52   Arena*           _arena;       // Alias for _ciEnv_arena except in init_shared_objects()
    52   Arena*           _arena;       // Alias for _ciEnv_arena except in init_shared_objects()
    53   Arena            _ciEnv_arena;
    53   Arena            _ciEnv_arena;
    54   int              _system_dictionary_modification_counter;
       
    55   ciObjectFactory* _factory;
    54   ciObjectFactory* _factory;
    56   OopRecorder*     _oop_recorder;
    55   OopRecorder*     _oop_recorder;
    57   DebugInformationRecorder* _debug_info;
    56   DebugInformationRecorder* _debug_info;
    58   Dependencies*    _dependencies;
    57   Dependencies*    _dependencies;
    59   const char*      _failure_reason;
    58   const char*      _failure_reason;
    67 
    66 
    68   char* _name_buffer;
    67   char* _name_buffer;
    69   int   _name_buffer_len;
    68   int   _name_buffer_len;
    70 
    69 
    71   // Cache Jvmti state
    70   // Cache Jvmti state
       
    71   uint64_t _jvmti_redefinition_count;
    72   bool  _jvmti_can_hotswap_or_post_breakpoint;
    72   bool  _jvmti_can_hotswap_or_post_breakpoint;
    73   bool  _jvmti_can_access_local_variables;
    73   bool  _jvmti_can_access_local_variables;
    74   bool  _jvmti_can_post_on_exceptions;
    74   bool  _jvmti_can_post_on_exceptions;
    75   bool  _jvmti_can_pop_frame;
    75   bool  _jvmti_can_pop_frame;
       
    76   bool  _jvmti_can_get_owned_monitor_info; // includes can_get_owned_monitor_stack_depth_info
    76 
    77 
    77   // Cache DTrace flags
    78   // Cache DTrace flags
    78   bool  _dtrace_extended_probes;
    79   bool  _dtrace_extended_probes;
    79   bool  _dtrace_monitor_probes;
    80   bool  _dtrace_monitor_probes;
    80   bool  _dtrace_method_probes;
    81   bool  _dtrace_method_probes;
   289   static bool is_in_vm();
   290   static bool is_in_vm();
   290 
   291 
   291   // Helper routine for determining the validity of a compilation with
   292   // Helper routine for determining the validity of a compilation with
   292   // respect to method dependencies (e.g. concurrent class loading).
   293   // respect to method dependencies (e.g. concurrent class loading).
   293   void validate_compile_task_dependencies(ciMethod* target);
   294   void validate_compile_task_dependencies(ciMethod* target);
   294 
       
   295   // Call internally when Compile_lock is already held.
       
   296   bool system_dictionary_modification_counter_changed_locked();
       
   297 public:
   295 public:
   298   enum {
   296   enum {
   299     MethodCompilable,
   297     MethodCompilable,
   300     MethodCompilable_not_at_tier,
   298     MethodCompilable_not_at_tier,
   301     MethodCompilable_never
   299     MethodCompilable_never
   302   };
   300   };
   303 
   301 
   304   ciEnv(CompileTask* task, int system_dictionary_modification_counter);
   302   ciEnv(CompileTask* task);
   305   // Used only during initialization of the ci
   303   // Used only during initialization of the ci
   306   ciEnv(Arena* arena);
   304   ciEnv(Arena* arena);
   307   ~ciEnv();
   305   ~ciEnv();
   308 
   306 
   309   OopRecorder* oop_recorder() { return _oop_recorder; }
   307   OopRecorder* oop_recorder() { return _oop_recorder; }
   348   bool  should_retain_local_variables() const {
   346   bool  should_retain_local_variables() const {
   349     return _jvmti_can_access_local_variables || _jvmti_can_pop_frame;
   347     return _jvmti_can_access_local_variables || _jvmti_can_pop_frame;
   350   }
   348   }
   351   bool  jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; }
   349   bool  jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; }
   352   bool  jvmti_can_post_on_exceptions()         const { return _jvmti_can_post_on_exceptions; }
   350   bool  jvmti_can_post_on_exceptions()         const { return _jvmti_can_post_on_exceptions; }
       
   351   bool  jvmti_can_get_owned_monitor_info()     const { return _jvmti_can_get_owned_monitor_info; }
   353 
   352 
   354   // Cache DTrace flags
   353   // Cache DTrace flags
   355   void  cache_dtrace_flags();
   354   void  cache_dtrace_flags();
   356   bool  dtrace_extended_probes() const { return _dtrace_extended_probes; }
   355   bool  dtrace_extended_probes() const { return _dtrace_extended_probes; }
   357   bool  dtrace_monitor_probes()  const { return _dtrace_monitor_probes; }
   356   bool  dtrace_monitor_probes()  const { return _dtrace_monitor_probes; }
   454 
   453 
   455   // Output stream for logging compilation info.
   454   // Output stream for logging compilation info.
   456   CompileLog* log() { return _log; }
   455   CompileLog* log() { return _log; }
   457   void set_log(CompileLog* log) { _log = log; }
   456   void set_log(CompileLog* log) { _log = log; }
   458 
   457 
   459   // Check for changes to the system dictionary during compilation
       
   460   bool system_dictionary_modification_counter_changed();
       
   461 
       
   462   void record_failure(const char* reason);      // Record failure and report later
   458   void record_failure(const char* reason);      // Record failure and report later
   463   void report_failure(const char* reason);      // Report failure immediately
   459   void report_failure(const char* reason);      // Report failure immediately
   464   void record_method_not_compilable(const char* reason, bool all_tiers = true);
   460   void record_method_not_compilable(const char* reason, bool all_tiers = true);
   465   void record_out_of_memory_failure();
   461   void record_out_of_memory_failure();
   466 
   462