< prev index next >

src/share/vm/classfile/dictionary.hpp

Print this page

        

*** 39,49 **** //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // The data structure for the system dictionary (and the shared system // dictionary). ! class Dictionary : public TwoOopHashtable<Klass*, mtClass> { friend class VMStructs; private: // current iteration index. static int _current_class_index; // pointer to the current hash table entry. --- 39,49 ---- //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // The data structure for the system dictionary (and the shared system // dictionary). ! class Dictionary : public TwoOopHashtable<InstanceKlass*, mtClass> { friend class VMStructs; private: // current iteration index. static int _current_class_index; // pointer to the current hash table entry.
*** 54,95 **** DictionaryEntry* get_entry(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data); protected: DictionaryEntry* bucket(int i) const { ! return (DictionaryEntry*)Hashtable<Klass*, mtClass>::bucket(i); } // The following method is not MT-safe and must be done under lock. DictionaryEntry** bucket_addr(int i) { ! return (DictionaryEntry**)Hashtable<Klass*, mtClass>::bucket_addr(i); } void add_entry(int index, DictionaryEntry* new_entry) { ! Hashtable<Klass*, mtClass>::add_entry(index, (HashtableEntry<Klass*, mtClass>*)new_entry); } static size_t entry_size(); public: Dictionary(int table_size); Dictionary(int table_size, HashtableBucket<mtClass>* t, int number_of_entries); ! DictionaryEntry* new_entry(unsigned int hash, Klass* klass, ClassLoaderData* loader_data); DictionaryEntry* new_entry(); void free_entry(DictionaryEntry* entry); ! void add_klass(Symbol* class_name, ClassLoaderData* loader_data,KlassHandle obj); ! Klass* find_class(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data); ! Klass* find_shared_class(int index, unsigned int hash, Symbol* name); // Compiler support ! Klass* try_get_next_class(); // GC support void oops_do(OopClosure* f); void always_strong_oops_do(OopClosure* blk); void roots_oops_do(OopClosure* strong, OopClosure* weak); --- 54,95 ---- DictionaryEntry* get_entry(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data); protected: DictionaryEntry* bucket(int i) const { ! return (DictionaryEntry*)Hashtable<InstanceKlass*, mtClass>::bucket(i); } // The following method is not MT-safe and must be done under lock. DictionaryEntry** bucket_addr(int i) { ! return (DictionaryEntry**)Hashtable<InstanceKlass*, mtClass>::bucket_addr(i); } void add_entry(int index, DictionaryEntry* new_entry) { ! Hashtable<InstanceKlass*, mtClass>::add_entry(index, (HashtableEntry<InstanceKlass*, mtClass>*)new_entry); } static size_t entry_size(); public: Dictionary(int table_size); Dictionary(int table_size, HashtableBucket<mtClass>* t, int number_of_entries); ! DictionaryEntry* new_entry(unsigned int hash, InstanceKlass* klass, ClassLoaderData* loader_data); DictionaryEntry* new_entry(); void free_entry(DictionaryEntry* entry); ! void add_klass(Symbol* class_name, ClassLoaderData* loader_data, InstanceKlass* obj); ! InstanceKlass* find_class(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data); ! InstanceKlass* find_shared_class(int index, unsigned int hash, Symbol* name); // Compiler support ! InstanceKlass* try_get_next_class(); // GC support void oops_do(OopClosure* f); void always_strong_oops_do(OopClosure* blk); void roots_oops_do(OopClosure* strong, OopClosure* weak);
*** 114,130 **** // Unload (that is, break root links to) all unmarked classes and loaders. void do_unloading(); // Protection domains ! Klass* find(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data, Handle protection_domain, TRAPS); bool is_valid_protection_domain(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data, Handle protection_domain); void add_protection_domain(int index, unsigned int hash, ! instanceKlassHandle klass, ClassLoaderData* loader_data, Handle protection_domain, TRAPS); // Sharing support void reorder_dictionary(); --- 114,130 ---- // Unload (that is, break root links to) all unmarked classes and loaders. void do_unloading(); // Protection domains ! InstanceKlass* find(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data, Handle protection_domain, TRAPS); bool is_valid_protection_domain(int index, unsigned int hash, Symbol* name, ClassLoaderData* loader_data, Handle protection_domain); void add_protection_domain(int index, unsigned int hash, ! InstanceKlass* klass, ClassLoaderData* loader_data, Handle protection_domain, TRAPS); // Sharing support void reorder_dictionary();
*** 241,253 **** ProtectionDomainEntry* next() { return _next; } oop protection_domain() { return _pd_cache->protection_domain(); } }; // An entry in the system dictionary, this describes a class as ! // { Klass*, loader, protection_domain }. ! class DictionaryEntry : public HashtableEntry<Klass*, mtClass> { friend class VMStructs; private: // Contains the set of approved protection domains that can access // this system dictionary entry. // --- 241,253 ---- ProtectionDomainEntry* next() { return _next; } oop protection_domain() { return _pd_cache->protection_domain(); } }; // An entry in the system dictionary, this describes a class as ! // { InstanceKlass*, loader, protection_domain }. ! class DictionaryEntry : public HashtableEntry<InstanceKlass*, mtClass> { friend class VMStructs; private: // Contains the set of approved protection domains that can access // this system dictionary entry. //
*** 275,293 **** // Tells whether a protection is in the approved set. bool contains_protection_domain(oop protection_domain) const; // Adds a protection domain to the approved set. void add_protection_domain(Dictionary* dict, Handle protection_domain); ! Klass* klass() const { return (Klass*)literal(); } ! Klass** klass_addr() { return (Klass**)literal_addr(); } DictionaryEntry* next() const { ! return (DictionaryEntry*)HashtableEntry<Klass*, mtClass>::next(); } DictionaryEntry** next_addr() { ! return (DictionaryEntry**)HashtableEntry<Klass*, mtClass>::next_addr(); } ClassLoaderData* loader_data() const { return _loader_data; } void set_loader_data(ClassLoaderData* loader_data) { _loader_data = loader_data; } --- 275,293 ---- // Tells whether a protection is in the approved set. bool contains_protection_domain(oop protection_domain) const; // Adds a protection domain to the approved set. void add_protection_domain(Dictionary* dict, Handle protection_domain); ! InstanceKlass* klass() const { return (InstanceKlass*)literal(); } ! InstanceKlass** klass_addr() { return (InstanceKlass**)literal_addr(); } DictionaryEntry* next() const { ! return (DictionaryEntry*)HashtableEntry<InstanceKlass*, mtClass>::next(); } DictionaryEntry** next_addr() { ! return (DictionaryEntry**)HashtableEntry<InstanceKlass*, mtClass>::next_addr(); } ClassLoaderData* loader_data() const { return _loader_data; } void set_loader_data(ClassLoaderData* loader_data) { _loader_data = loader_data; }
*** 321,331 **** current->_pd_cache->protection_domain()->verify(); } } bool equals(const Symbol* class_name, ClassLoaderData* loader_data) const { ! Klass* klass = (Klass*)literal(); return (klass->name() == class_name && _loader_data == loader_data); } void print_count(outputStream *st) { int count = 0; --- 321,331 ---- current->_pd_cache->protection_domain()->verify(); } } bool equals(const Symbol* class_name, ClassLoaderData* loader_data) const { ! InstanceKlass* klass = (InstanceKlass*)literal(); return (klass->name() == class_name && _loader_data == loader_data); } void print_count(outputStream *st) { int count = 0;
< prev index next >