< prev index next >

src/hotspot/share/ci/ciEnv.hpp

Print this page

        

@@ -49,10 +49,11 @@
   friend class PrepareExtraDataClosure;
 
 private:
   Arena*           _arena;       // Alias for _ciEnv_arena except in init_shared_objects()
   Arena            _ciEnv_arena;
+  int              _system_dictionary_modification_counter;
   ciObjectFactory* _factory;
   OopRecorder*     _oop_recorder;
   DebugInformationRecorder* _debug_info;
   Dependencies*    _dependencies;
   const char*      _failure_reason;

@@ -288,18 +289,21 @@
   static bool is_in_vm();
 
   // Helper routine for determining the validity of a compilation with
   // respect to method dependencies (e.g. concurrent class loading).
   void validate_compile_task_dependencies(ciMethod* target);
+
+  // Call internally when Compile_lock is already held.
+  bool system_dictionary_modification_counter_changed_locked();
 public:
   enum {
     MethodCompilable,
     MethodCompilable_not_at_tier,
     MethodCompilable_never
   };
 
-  ciEnv(CompileTask* task);
+  ciEnv(CompileTask* task, int system_dictionary_modification_counter);
   // Used only during initialization of the ci
   ciEnv(Arena* arena);
   ~ciEnv();
 
   OopRecorder* oop_recorder() { return _oop_recorder; }

@@ -450,10 +454,13 @@
 
   // Output stream for logging compilation info.
   CompileLog* log() { return _log; }
   void set_log(CompileLog* log) { _log = log; }
 
+  // Check for changes to the system dictionary during compilation
+  bool system_dictionary_modification_counter_changed();
+
   void record_failure(const char* reason);      // Record failure and report later
   void report_failure(const char* reason);      // Report failure immediately
   void record_method_not_compilable(const char* reason, bool all_tiers = true);
   void record_out_of_memory_failure();
 
< prev index next >