Mercurial > hg > truffle
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];} |