< prev index next >

src/share/vm/ci/ciInstanceKlass.cpp

Print this page
rev 12906 : [mq]: gc_interface

*** 64,80 **** --- 64,83 ---- _has_injected_fields = -1; _implementor = NULL; // we will fill these lazily Thread *thread = Thread::current(); if (ciObjectFactory::is_initialized()) { + _holder = JNIHandles::make_local(thread, ik->klass_holder()); _loader = JNIHandles::make_local(thread, ik->class_loader()); _protection_domain = JNIHandles::make_local(thread, ik->protection_domain()); _is_shared = false; } else { + Handle h_holder(thread, ik->klass_holder()); Handle h_loader(thread, ik->class_loader()); Handle h_protection_domain(thread, ik->protection_domain()); + _holder = JNIHandles::make_global(h_holder); _loader = JNIHandles::make_global(h_loader); _protection_domain = JNIHandles::make_global(h_protection_domain); _is_shared = true; }
*** 92,102 **** _field_cache = NULL; } // Version for unloaded classes: ciInstanceKlass::ciInstanceKlass(ciSymbol* name, ! jobject loader, jobject protection_domain) : ciKlass(name, T_OBJECT) { assert(name->byte_at(0) != '[', "not an instance klass"); _init_state = (InstanceKlass::ClassState)0; _nonstatic_field_size = -1; --- 95,105 ---- _field_cache = NULL; } // Version for unloaded classes: ciInstanceKlass::ciInstanceKlass(ciSymbol* name, ! jobject holder, jobject loader, jobject protection_domain) : ciKlass(name, T_OBJECT) { assert(name->byte_at(0) != '[', "not an instance klass"); _init_state = (InstanceKlass::ClassState)0; _nonstatic_field_size = -1;
*** 132,141 **** --- 135,157 ---- return _has_subklass; ) } // ------------------------------------------------------------------ + // ciInstanceKlass::holder + oop ciInstanceKlass::holder() { + ASSERT_IN_VM; + return JNIHandles::resolve(_holder); + } + + // ------------------------------------------------------------------ + // ciInstanceKlass::holder_handle + jobject ciInstanceKlass::holder_handle() { + return _holder; + } + + // ------------------------------------------------------------------ // ciInstanceKlass::loader oop ciInstanceKlass::loader() { ASSERT_IN_VM; return JNIHandles::resolve(_loader); }
< prev index next >