hotspot/src/share/vm/classfile/classLoaderData.hpp
changeset 17110 a8f03d38bde5
parent 17107 46fc21b30a1e
child 18025 b7bcf7497f93
equal deleted inserted replaced
17109:90e6c31bbbe4 17110:a8f03d38bde5
    98     void locked_add(objArrayHandle last,
    98     void locked_add(objArrayHandle last,
    99                     objArrayHandle new_dependency,
    99                     objArrayHandle new_dependency,
   100                     Thread* THREAD);
   100                     Thread* THREAD);
   101    public:
   101    public:
   102     Dependencies() : _list_head(NULL) {}
   102     Dependencies() : _list_head(NULL) {}
       
   103     Dependencies(TRAPS) : _list_head(NULL) {
       
   104       init(CHECK);
       
   105     }
   103     void add(Handle dependency, TRAPS);
   106     void add(Handle dependency, TRAPS);
   104     void init(TRAPS);
   107     void init(TRAPS);
   105     void oops_do(OopClosure* f);
   108     void oops_do(OopClosure* f);
   106   };
   109   };
   107 
   110 
   148   static Metaspace* _rw_metaspace;
   151   static Metaspace* _rw_metaspace;
   149 
   152 
   150   void set_next(ClassLoaderData* next) { _next = next; }
   153   void set_next(ClassLoaderData* next) { _next = next; }
   151   ClassLoaderData* next() const        { return _next; }
   154   ClassLoaderData* next() const        { return _next; }
   152 
   155 
   153   ClassLoaderData(Handle h_class_loader, bool is_anonymous);
   156   ClassLoaderData(Handle h_class_loader, bool is_anonymous, Dependencies dependencies);
   154   ~ClassLoaderData();
   157   ~ClassLoaderData();
   155 
   158 
   156   void set_metaspace(Metaspace* m) { _metaspace = m; }
   159   void set_metaspace(Metaspace* m) { _metaspace = m; }
   157 
   160 
   158   JNIHandleBlock* handles() const;
   161   JNIHandleBlock* handles() const;
   188   bool is_anonymous() const { return _is_anonymous; }
   191   bool is_anonymous() const { return _is_anonymous; }
   189 
   192 
   190   static void init_null_class_loader_data() {
   193   static void init_null_class_loader_data() {
   191     assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
   194     assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
   192     assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");
   195     assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");
   193     _the_null_class_loader_data = new ClassLoaderData((oop)NULL, false);
   196 
       
   197     // We explicitly initialize the Dependencies object at a later phase in the initialization
       
   198     _the_null_class_loader_data = new ClassLoaderData((oop)NULL, false, Dependencies());
   194     ClassLoaderDataGraph::_head = _the_null_class_loader_data;
   199     ClassLoaderDataGraph::_head = _the_null_class_loader_data;
   195     assert(_the_null_class_loader_data->is_the_null_class_loader_data(), "Must be");
   200     assert(_the_null_class_loader_data->is_the_null_class_loader_data(), "Must be");
   196     if (DumpSharedSpaces) {
   201     if (DumpSharedSpaces) {
   197       _the_null_class_loader_data->initialize_shared_metaspaces();
   202       _the_null_class_loader_data->initialize_shared_metaspaces();
   198     }
   203     }