hotspot/src/share/vm/oops/klass.hpp
changeset 26135 82b516c550f7
parent 25492 d27050bdfb04
child 26412 80741eb33ba2
equal deleted inserted replaced
25956:99be217ac88d 26135:82b516c550f7
   145 
   145 
   146   // Remembered sets support for the oops in the klasses.
   146   // Remembered sets support for the oops in the klasses.
   147   jbyte _modified_oops;             // Card Table Equivalent (YC/CMS support)
   147   jbyte _modified_oops;             // Card Table Equivalent (YC/CMS support)
   148   jbyte _accumulated_modified_oops; // Mod Union Equivalent (CMS support)
   148   jbyte _accumulated_modified_oops; // Mod Union Equivalent (CMS support)
   149 
   149 
       
   150 private:
       
   151   // This is an index into FileMapHeader::_classpath_entry_table[], to
       
   152   // associate this class with the JAR file where it's loaded from during
       
   153   // dump time. If a class is not loaded from the shared archive, this field is
       
   154   // -1.
       
   155   jshort _shared_class_path_index;
       
   156 
       
   157   friend class SharedClassUtil;
       
   158 protected:
       
   159 
   150   // Constructor
   160   // Constructor
   151   Klass();
   161   Klass();
   152 
   162 
   153   void* operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw();
   163   void* operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw();
   154 
   164 
   250   bool has_modified_oops()               { return _modified_oops == 1; }
   260   bool has_modified_oops()               { return _modified_oops == 1; }
   251 
   261 
   252   void accumulate_modified_oops()        { if (has_modified_oops()) _accumulated_modified_oops = 1; }
   262   void accumulate_modified_oops()        { if (has_modified_oops()) _accumulated_modified_oops = 1; }
   253   void clear_accumulated_modified_oops() { _accumulated_modified_oops = 0; }
   263   void clear_accumulated_modified_oops() { _accumulated_modified_oops = 0; }
   254   bool has_accumulated_modified_oops()   { return _accumulated_modified_oops == 1; }
   264   bool has_accumulated_modified_oops()   { return _accumulated_modified_oops == 1; }
       
   265 
       
   266   int shared_classpath_index() const   {
       
   267     return _shared_class_path_index;
       
   268   };
       
   269 
       
   270   void set_shared_classpath_index(int index) {
       
   271     _shared_class_path_index = index;
       
   272   };
       
   273 
   255 
   274 
   256  protected:                                // internal accessors
   275  protected:                                // internal accessors
   257   void     set_subklass(Klass* s);
   276   void     set_subklass(Klass* s);
   258   void     set_next_sibling(Klass* s);
   277   void     set_next_sibling(Klass* s);
   259 
   278 
   420   virtual Klass* array_klass_impl(bool or_null, TRAPS);
   439   virtual Klass* array_klass_impl(bool or_null, TRAPS);
   421 
   440 
   422  public:
   441  public:
   423   // CDS support - remove and restore oops from metadata. Oops are not shared.
   442   // CDS support - remove and restore oops from metadata. Oops are not shared.
   424   virtual void remove_unshareable_info();
   443   virtual void remove_unshareable_info();
   425   virtual void restore_unshareable_info(TRAPS);
   444   virtual void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS);
   426 
   445 
   427  protected:
   446  protected:
   428   // computes the subtype relationship
   447   // computes the subtype relationship
   429   virtual bool compute_is_subtype_of(Klass* k);
   448   virtual bool compute_is_subtype_of(Klass* k);
   430  public:
   449  public: