< prev index next >

src/share/vm/ci/ciInstanceKlass.hpp

Print this page
rev 12906 : [mq]: gc_interface

*** 42,51 **** --- 42,52 ---- friend class ciExceptionHandler; friend class ciMethod; friend class ciField; private: + jobject _holder; jobject _loader; jobject _protection_domain; InstanceKlass::ClassState _init_state; // state of class bool _is_shared;
*** 76,91 **** void compute_injected_fields(); bool compute_injected_fields_helper(); protected: ciInstanceKlass(Klass* k); ! ciInstanceKlass(ciSymbol* name, jobject loader, jobject protection_domain); InstanceKlass* get_instanceKlass() const { return InstanceKlass::cast(get_Klass()); } oop loader(); jobject loader_handle(); oop protection_domain(); jobject protection_domain_handle(); --- 77,98 ---- void compute_injected_fields(); bool compute_injected_fields_helper(); protected: ciInstanceKlass(Klass* k); ! ciInstanceKlass(ciSymbol* name, jobject holder, jobject loader, jobject protection_domain); InstanceKlass* get_instanceKlass() const { return InstanceKlass::cast(get_Klass()); } + // Hold metadata from unloading by keeping its holder alive. + // Though ciInstanceKlass records class loader oop, it's not enough to keep + // VM anonymous classes alive (loader == NULL). Klass holder should be used instead. + oop holder(); + jobject holder_handle(); + oop loader(); jobject loader_handle(); oop protection_domain(); jobject protection_domain_handle();
< prev index next >