< prev index next >

src/share/vm/classfile/packageEntry.hpp

Print this page




 194   void package_exports_do(ModuleClosure* const f);
 195 
 196   TRACE_DEFINE_TRACE_ID_METHODS;
 197 
 198   // Purge dead weak references out of exported list when any given class loader is unloaded.
 199   void purge_qualified_exports();
 200   void delete_qualified_exports();
 201 
 202   void print(outputStream* st = tty);
 203   void verify();
 204 };
 205 
 206 // The PackageEntryTable is a Hashtable containing a list of all packages defined
 207 // by a particular class loader.  Each package is represented as a PackageEntry node.
 208 // The PackageEntryTable's lookup is lock free.
 209 //
 210 class PackageEntryTable : public Hashtable<Symbol*, mtModule> {
 211   friend class VMStructs;
 212 public:
 213   enum Constants {
 214     _packagetable_entry_size = 1009  // number of entries in package entry table
 215   };
 216 
 217 private:
 218   PackageEntry* new_entry(unsigned int hash, Symbol* name, ModuleEntry* module);
 219   void add_entry(int index, PackageEntry* new_entry);
 220 
 221   int entry_size() const { return BasicHashtable<mtModule>::entry_size(); }
 222 
 223   PackageEntry** bucket_addr(int i) {
 224     return (PackageEntry**)Hashtable<Symbol*, mtModule>::bucket_addr(i);
 225   }
 226 
 227   static unsigned int compute_hash(Symbol* name) { return (unsigned int)(name->identity_hash()); }
 228   int index_for(Symbol* name) const { return hash_to_index(compute_hash(name)); }
 229 
 230 public:
 231   PackageEntryTable(int table_size);
 232   ~PackageEntryTable();
 233 
 234   PackageEntry* bucket(int i) {




 194   void package_exports_do(ModuleClosure* const f);
 195 
 196   TRACE_DEFINE_TRACE_ID_METHODS;
 197 
 198   // Purge dead weak references out of exported list when any given class loader is unloaded.
 199   void purge_qualified_exports();
 200   void delete_qualified_exports();
 201 
 202   void print(outputStream* st = tty);
 203   void verify();
 204 };
 205 
 206 // The PackageEntryTable is a Hashtable containing a list of all packages defined
 207 // by a particular class loader.  Each package is represented as a PackageEntry node.
 208 // The PackageEntryTable's lookup is lock free.
 209 //
 210 class PackageEntryTable : public Hashtable<Symbol*, mtModule> {
 211   friend class VMStructs;
 212 public:
 213   enum Constants {
 214     _packagetable_entry_size = 109  // number of entries in package entry table
 215   };
 216 
 217 private:
 218   PackageEntry* new_entry(unsigned int hash, Symbol* name, ModuleEntry* module);
 219   void add_entry(int index, PackageEntry* new_entry);
 220 
 221   int entry_size() const { return BasicHashtable<mtModule>::entry_size(); }
 222 
 223   PackageEntry** bucket_addr(int i) {
 224     return (PackageEntry**)Hashtable<Symbol*, mtModule>::bucket_addr(i);
 225   }
 226 
 227   static unsigned int compute_hash(Symbol* name) { return (unsigned int)(name->identity_hash()); }
 228   int index_for(Symbol* name) const { return hash_to_index(compute_hash(name)); }
 229 
 230 public:
 231   PackageEntryTable(int table_size);
 232   ~PackageEntryTable();
 233 
 234   PackageEntry* bucket(int i) {


< prev index next >