< prev index next >

src/hotspot/share/classfile/dictionary.hpp

Print this page
rev 47404 : [mq]: load_ptr_acquire
rev 47406 : [mq]: assembler_cmpxchg


 144   // Tells whether a protection is in the approved set.
 145   bool contains_protection_domain(oop protection_domain) const;
 146   // Adds a protection domain to the approved set.
 147   void add_protection_domain(Dictionary* dict, Handle protection_domain);
 148 
 149   InstanceKlass* instance_klass() const { return literal(); }
 150   InstanceKlass** klass_addr() { return (InstanceKlass**)literal_addr(); }
 151 
 152   DictionaryEntry* next() const {
 153     return (DictionaryEntry*)HashtableEntry<InstanceKlass*, mtClass>::next();
 154   }
 155 
 156   DictionaryEntry** next_addr() {
 157     return (DictionaryEntry**)HashtableEntry<InstanceKlass*, mtClass>::next_addr();
 158   }
 159 
 160   ProtectionDomainEntry* pd_set() const            { return _pd_set; }
 161   void set_pd_set(ProtectionDomainEntry* new_head) {  _pd_set = new_head; }
 162 
 163   ProtectionDomainEntry* pd_set_acquire() const    {
 164     return (ProtectionDomainEntry*)OrderAccess::load_ptr_acquire(&_pd_set);
 165   }
 166   void release_set_pd_set(ProtectionDomainEntry* new_head) {
 167     OrderAccess::release_store_ptr(&_pd_set, new_head);
 168   }
 169 
 170   // Tells whether the initiating class' protection domain can access the klass in this entry
 171   bool is_valid_protection_domain(Handle protection_domain) {
 172     if (!ProtectionDomainVerification) return true;
 173     if (!SystemDictionary::has_checkPackageAccess()) return true;
 174 
 175     return protection_domain() == NULL
 176          ? true
 177          : contains_protection_domain(protection_domain());
 178   }
 179 
 180   void verify_protection_domain_set() {
 181     for (ProtectionDomainEntry* current = pd_set(); // accessed at a safepoint
 182                                 current != NULL;
 183                                 current = current->_next) {
 184       current->_pd_cache->protection_domain()->verify();
 185     }
 186   }
 187 




 144   // Tells whether a protection is in the approved set.
 145   bool contains_protection_domain(oop protection_domain) const;
 146   // Adds a protection domain to the approved set.
 147   void add_protection_domain(Dictionary* dict, Handle protection_domain);
 148 
 149   InstanceKlass* instance_klass() const { return literal(); }
 150   InstanceKlass** klass_addr() { return (InstanceKlass**)literal_addr(); }
 151 
 152   DictionaryEntry* next() const {
 153     return (DictionaryEntry*)HashtableEntry<InstanceKlass*, mtClass>::next();
 154   }
 155 
 156   DictionaryEntry** next_addr() {
 157     return (DictionaryEntry**)HashtableEntry<InstanceKlass*, mtClass>::next_addr();
 158   }
 159 
 160   ProtectionDomainEntry* pd_set() const            { return _pd_set; }
 161   void set_pd_set(ProtectionDomainEntry* new_head) {  _pd_set = new_head; }
 162 
 163   ProtectionDomainEntry* pd_set_acquire() const    {
 164     return OrderAccess::load_acquire(&_pd_set);
 165   }
 166   void release_set_pd_set(ProtectionDomainEntry* new_head) {
 167     OrderAccess::release_store(&_pd_set, new_head);
 168   }
 169 
 170   // Tells whether the initiating class' protection domain can access the klass in this entry
 171   bool is_valid_protection_domain(Handle protection_domain) {
 172     if (!ProtectionDomainVerification) return true;
 173     if (!SystemDictionary::has_checkPackageAccess()) return true;
 174 
 175     return protection_domain() == NULL
 176          ? true
 177          : contains_protection_domain(protection_domain());
 178   }
 179 
 180   void verify_protection_domain_set() {
 181     for (ProtectionDomainEntry* current = pd_set(); // accessed at a safepoint
 182                                 current != NULL;
 183                                 current = current->_next) {
 184       current->_pd_cache->protection_domain()->verify();
 185     }
 186   }
 187 


< prev index next >