comparison src/share/vm/oops/instanceKlass.hpp @ 431:a45484ea312d

6653858: dynamic languages need to be able to load anonymous classes Summary: low-level privileged sun.misc.Unsafe.defineAnonymousClass Reviewed-by: kvn
author jrose
date Wed, 12 Nov 2008 22:33:26 -0800
parents 1ee8caae33af
children 4aaa9f5e02a8 c89f86385056
comparison
equal deleted inserted replaced
430:4d20a3aaf1ab 431:a45484ea312d
145 constantPoolOop _constants; 145 constantPoolOop _constants;
146 // Class loader used to load this class, NULL if VM loader used. 146 // Class loader used to load this class, NULL if VM loader used.
147 oop _class_loader; 147 oop _class_loader;
148 // Protection domain. 148 // Protection domain.
149 oop _protection_domain; 149 oop _protection_domain;
150 // Host class, which grants its access privileges to this class also.
151 // This is only non-null for an anonymous class (AnonymousClasses enabled).
152 // The host class is either named, or a previously loaded anonymous class.
153 klassOop _host_klass;
150 // Class signers. 154 // Class signers.
151 objArrayOop _signers; 155 objArrayOop _signers;
152 // Name of source file containing this klass, NULL if not specified. 156 // Name of source file containing this klass, NULL if not specified.
153 symbolOop _source_file_name; 157 symbolOop _source_file_name;
154 // the source debug extension for this klass, NULL if not specified. 158 // the source debug extension for this klass, NULL if not specified.
373 377
374 // protection domain 378 // protection domain
375 oop protection_domain() { return _protection_domain; } 379 oop protection_domain() { return _protection_domain; }
376 void set_protection_domain(oop pd) { oop_store((oop*) &_protection_domain, pd); } 380 void set_protection_domain(oop pd) { oop_store((oop*) &_protection_domain, pd); }
377 381
382 // host class
383 oop host_klass() const { return _host_klass; }
384 void set_host_klass(oop host) { oop_store((oop*) &_host_klass, host); }
385 bool is_anonymous() const { return _host_klass != NULL; }
386
378 // signers 387 // signers
379 objArrayOop signers() const { return _signers; } 388 objArrayOop signers() const { return _signers; }
380 void set_signers(objArrayOop s) { oop_store((oop*) &_signers, oop(s)); } 389 void set_signers(objArrayOop s) { oop_store((oop*) &_signers, oop(s)); }
381 390
382 // source file name 391 // source file name
707 oop* adr_transitive_interfaces() const { return (oop*)&this->_transitive_interfaces;} 716 oop* adr_transitive_interfaces() const { return (oop*)&this->_transitive_interfaces;}
708 oop* adr_fields() const { return (oop*)&this->_fields;} 717 oop* adr_fields() const { return (oop*)&this->_fields;}
709 oop* adr_constants() const { return (oop*)&this->_constants;} 718 oop* adr_constants() const { return (oop*)&this->_constants;}
710 oop* adr_class_loader() const { return (oop*)&this->_class_loader;} 719 oop* adr_class_loader() const { return (oop*)&this->_class_loader;}
711 oop* adr_protection_domain() const { return (oop*)&this->_protection_domain;} 720 oop* adr_protection_domain() const { return (oop*)&this->_protection_domain;}
721 oop* adr_host_klass() const { return (oop*)&this->_host_klass;}
712 oop* adr_signers() const { return (oop*)&this->_signers;} 722 oop* adr_signers() const { return (oop*)&this->_signers;}
713 oop* adr_source_file_name() const { return (oop*)&this->_source_file_name;} 723 oop* adr_source_file_name() const { return (oop*)&this->_source_file_name;}
714 oop* adr_source_debug_extension() const { return (oop*)&this->_source_debug_extension;} 724 oop* adr_source_debug_extension() const { return (oop*)&this->_source_debug_extension;}
715 oop* adr_inner_classes() const { return (oop*)&this->_inner_classes;} 725 oop* adr_inner_classes() const { return (oop*)&this->_inner_classes;}
716 oop* adr_implementors() const { return (oop*)&this->_implementors[0];} 726 oop* adr_implementors() const { return (oop*)&this->_implementors[0];}