src/share/vm/classfile/moduleEntry.hpp

Print this page

        

@@ -53,10 +53,11 @@
   ClassLoaderData* _loader;
   GrowableArray<ModuleEntry*>* _reads; // list of modules that are readable by this module
   Symbol* _version;                    // module version number
   Symbol* _location;                   // module location
   bool _can_read_unnamed;
+  bool _has_default_read_edges;        // JVMTI redefine/retransform support
   TRACE_DEFINE_TRACE_ID_FIELD;
 
 public:
   void init() {
     _jlrM = NULL;

@@ -63,10 +64,11 @@
     _loader = NULL;
     _reads = NULL;
     _version = NULL;
     _location = NULL;
     _can_read_unnamed = false;
+    _has_default_read_edges = false;
   }
 
   Symbol*            name() const                   { return literal(); }
   void               set_name(Symbol* n)            { set_literal(n); }
 

@@ -95,10 +97,22 @@
   }
 
   // Modules can only go from strict to loose.
   void set_can_read_unnamed() { _can_read_unnamed = true; }
 
+  bool has_default_read_edges() const {
+    return _has_default_read_edges;
+  }
+
+  // Sets true and returns the previous value.
+  bool set_has_default_read_edges() {
+    MutexLocker ml(Module_lock);
+    bool prev = _has_default_read_edges;
+    _has_default_read_edges = true;
+    return prev;
+  }
+
   ModuleEntry* next() const {
     return (ModuleEntry*)HashtableEntry<Symbol*, mtClass>::next();
   }
   ModuleEntry** next_addr() {
     return (ModuleEntry**)HashtableEntry<Symbol*, mtClass>::next_addr();