Mercurial > hg > graal-compiler
diff src/share/vm/prims/jni.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | d2a62e0f25eb |
children | d8ce2825b193 fb19af007ffc |
line wrap: on
line diff
--- a/src/share/vm/prims/jni.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/prims/jni.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -41,7 +41,7 @@ #include "oops/instanceKlass.hpp" #include "oops/instanceOop.hpp" #include "oops/markOop.hpp" -#include "oops/methodOop.hpp" +#include "oops/method.hpp" #include "oops/objArrayKlass.hpp" #include "oops/objArrayOop.hpp" #include "oops/oop.inline.hpp" @@ -208,7 +208,7 @@ // out-of-line helpers for class jfieldIDWorkaround: -bool jfieldIDWorkaround::is_valid_jfieldID(klassOop k, jfieldID id) { +bool jfieldIDWorkaround::is_valid_jfieldID(Klass* k, jfieldID id) { if (jfieldIDWorkaround::is_instance_jfieldID(k, id)) { uintptr_t as_uint = (uintptr_t) id; intptr_t offset = raw_instance_offset(id); @@ -217,7 +217,7 @@ return false; } } - return instanceKlass::cast(k)->contains_field_offset(offset); + return InstanceKlass::cast(k)->contains_field_offset(offset); } else { JNIid* result = (JNIid*) id; #ifdef ASSERT @@ -229,14 +229,14 @@ } -intptr_t jfieldIDWorkaround::encode_klass_hash(klassOop k, intptr_t offset) { +intptr_t jfieldIDWorkaround::encode_klass_hash(Klass* k, intptr_t offset) { if (offset <= small_offset_mask) { - klassOop field_klass = k; - klassOop super_klass = Klass::cast(field_klass)->super(); + Klass* field_klass = k; + Klass* super_klass = Klass::cast(field_klass)->super(); // With compressed oops the most super class with nonstatic fields would // be the owner of fields embedded in the header. - while (instanceKlass::cast(super_klass)->has_nonstatic_fields() && - instanceKlass::cast(super_klass)->contains_field_offset(offset)) { + while (InstanceKlass::cast(super_klass)->has_nonstatic_fields() && + InstanceKlass::cast(super_klass)->contains_field_offset(offset)) { field_klass = super_klass; // super contains the field also super_klass = Klass::cast(field_klass)->super(); } @@ -256,7 +256,7 @@ } } -bool jfieldIDWorkaround::klass_hash_ok(klassOop k, jfieldID id) { +bool jfieldIDWorkaround::klass_hash_ok(Klass* k, jfieldID id) { uintptr_t as_uint = (uintptr_t) id; intptr_t klass_hash = (as_uint >> klass_shift) & klass_mask; do { @@ -269,7 +269,7 @@ return false; } -void jfieldIDWorkaround::verify_instance_jfieldID(klassOop k, jfieldID id) { +void jfieldIDWorkaround::verify_instance_jfieldID(Klass* k, jfieldID id) { guarantee(jfieldIDWorkaround::is_instance_jfieldID(k, id), "must be an instance field" ); uintptr_t as_uint = (uintptr_t) id; intptr_t offset = raw_instance_offset(id); @@ -288,7 +288,7 @@ #endif } } - guarantee(instanceKlass::cast(k)->contains_field_offset(offset), + guarantee(InstanceKlass::cast(k)->contains_field_offset(offset), "Bug in native code: jfieldID offset must address interior of object"); } @@ -405,7 +405,7 @@ ClassLoader::sync_JNIDefineClassLockFreeCounter()->inc(); } } - klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader, + Klass* k = SystemDictionary::resolve_from_stream(class_name, class_loader, Handle(), &st, true, CHECK_NULL); @@ -474,9 +474,9 @@ } oop mirror = (oop) result.get_jobject(); loader = Handle(THREAD, - instanceKlass::cast(java_lang_Class::as_klassOop(mirror))->class_loader()); + InstanceKlass::cast(java_lang_Class::as_Klass(mirror))->class_loader()); protection_domain = Handle(THREAD, - instanceKlass::cast(java_lang_Class::as_klassOop(mirror))->protection_domain()); + InstanceKlass::cast(java_lang_Class::as_Klass(mirror))->protection_domain()); } } else { // We call ClassLoader.getSystemClassLoader to obtain the system class loader. @@ -488,7 +488,7 @@ protection_domain, true, thread); if (TraceClassResolution && result != NULL) { - trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result))); + trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result))); } // If we were the first invocation of jni_FindClass, we enable compilation again @@ -531,12 +531,12 @@ mirror = java_lang_reflect_Method::clazz(reflected); slot = java_lang_reflect_Method::slot(reflected); } - klassOop k = java_lang_Class::as_klassOop(mirror); + Klass* k = java_lang_Class::as_Klass(mirror); KlassHandle k1(THREAD, k); // Make sure class is initialized before handing id's out to methods Klass::cast(k1())->initialize(CHECK_NULL); - methodOop m = instanceKlass::cast(k1())->method_with_idnum(slot); + Method* m = InstanceKlass::cast(k1())->method_with_idnum(slot); ret = m==NULL? NULL : m->jmethod_id(); // return NULL if reflected method deleted return ret; JNI_END @@ -562,7 +562,7 @@ // field is a handle to a java.lang.reflect.Field object oop reflected = JNIHandles::resolve_non_null(field); oop mirror = java_lang_reflect_Field::clazz(reflected); - klassOop k = java_lang_Class::as_klassOop(mirror); + Klass* k = java_lang_Class::as_Klass(mirror); int slot = java_lang_reflect_Field::slot(reflected); int modifiers = java_lang_reflect_Field::modifiers(reflected); @@ -572,11 +572,11 @@ // First check if this is a static field if (modifiers & JVM_ACC_STATIC) { - intptr_t offset = instanceKlass::cast(k1())->field_offset( slot ); - JNIid* id = instanceKlass::cast(k1())->jni_id_for(offset); + intptr_t offset = InstanceKlass::cast(k1())->field_offset( slot ); + JNIid* id = InstanceKlass::cast(k1())->jni_id_for(offset); assert(id != NULL, "corrupt Field object"); debug_only(id->set_is_static_field_id();) - // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the klassOop + // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the Klass* ret = jfieldIDWorkaround::to_static_jfieldID(id); return ret; } @@ -584,8 +584,8 @@ // The slot is the index of the field description in the field-array // The jfieldID is the offset of the field within the object // It may also have hash bits for k, if VerifyJNIFields is turned on. - intptr_t offset = instanceKlass::cast(k1())->field_offset( slot ); - assert(instanceKlass::cast(k1())->contains_field_offset(offset), "stay within object"); + intptr_t offset = InstanceKlass::cast(k1())->field_offset( slot ); + assert(InstanceKlass::cast(k1())->contains_field_offset(offset), "stay within object"); ret = jfieldIDWorkaround::to_instance_jfieldID(k1(), offset); return ret; JNI_END @@ -608,7 +608,7 @@ jobject ret = NULL; DT_RETURN_MARK(ToReflectedMethod, jobject, (const jobject&)ret); - methodHandle m (THREAD, JNIHandles::resolve_jmethod_id(method_id)); + methodHandle m (THREAD, Method::resolve_jmethod_id(method_id)); assert(m->is_static() == (isStatic != 0), "jni_ToReflectedMethod access flags doesn't match"); oop reflection_method; if (m->is_initializer()) { @@ -646,13 +646,13 @@ // arrays return Object // interfaces return NULL // proper classes return Klass::super() - klassOop k = java_lang_Class::as_klassOop(mirror); + Klass* k = java_lang_Class::as_Klass(mirror); if (Klass::cast(k)->is_interface()) return NULL; // return mirror for superclass - klassOop super = Klass::cast(k)->java_super(); + Klass* super = Klass::cast(k)->java_super(); // super2 is the value computed by the compiler's getSuperClass intrinsic: - debug_only(klassOop super2 = ( Klass::cast(k)->oop_is_javaArray() + debug_only(Klass* super2 = ( Klass::cast(k)->oop_is_array() ? SystemDictionary::Object_klass() : Klass::cast(k)->super() ) ); assert(super == super2, @@ -682,8 +682,8 @@ #endif /* USDT2 */ return ret; } - klassOop sub_klass = java_lang_Class::as_klassOop(sub_mirror); - klassOop super_klass = java_lang_Class::as_klassOop(super_mirror); + Klass* sub_klass = java_lang_Class::as_Klass(sub_mirror); + Klass* super_klass = java_lang_Class::as_Klass(super_mirror); assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom"); jboolean ret = Klass::cast(sub_klass)->is_subtype_of(super_klass) ? JNI_TRUE : JNI_FALSE; @@ -736,7 +736,7 @@ jint ret = JNI_OK; DT_RETURN_MARK(ThrowNew, jint, (const jint&)ret); - instanceKlass* k = instanceKlass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz))); + InstanceKlass* k = InstanceKlass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); Symbol* name = k->name(); Handle class_loader (THREAD, k->class_loader()); Handle protection_domain (THREAD, k->protection_domain()); @@ -1157,7 +1157,7 @@ set_ap(rap); } JNI_ArgumentPusherVaArg(jmethodID method_id, va_list rap) - : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) { + : JNI_ArgumentPusher(Method::resolve_jmethod_id(method_id)->signature()) { set_ap(rap); } @@ -1228,7 +1228,7 @@ set_ap(rap); } JNI_ArgumentPusherArray(jmethodID method_id, const jvalue *rap) - : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) { + : JNI_ArgumentPusher(Method::resolve_jmethod_id(method_id)->signature()) { set_ap(rap); } @@ -1318,7 +1318,7 @@ static void jni_invoke_static(JNIEnv *env, JavaValue* result, jobject receiver, JNICallType call_type, jmethodID method_id, JNI_ArgumentPusher *args, TRAPS) { - methodHandle method(THREAD, JNIHandles::resolve_jmethod_id(method_id)); + methodHandle method(THREAD, Method::resolve_jmethod_id(method_id)); // Create object to hold arguments for the JavaCall, and associate it with // the jni parser @@ -1352,11 +1352,11 @@ Handle h_recv(THREAD, recv); int number_of_parameters; - methodOop selected_method; + Method* selected_method; { - methodOop m = JNIHandles::resolve_jmethod_id(method_id); + Method* m = Method::resolve_jmethod_id(method_id); number_of_parameters = m->size_of_parameters(); - klassOop holder = m->method_holder(); + Klass* holder = m->method_holder(); if (!(Klass::cast(holder))->is_interface()) { // non-interface call -- for that little speed boost, don't handlize debug_only(No_Safepoint_Verifier nosafepoint;) @@ -1364,11 +1364,11 @@ // jni_GetMethodID makes sure class is linked and initialized // so m should have a valid vtable index. int vtbl_index = m->vtable_index(); - if (vtbl_index != methodOopDesc::nonvirtual_vtable_index) { - klassOop k = h_recv->klass(); + if (vtbl_index != Method::nonvirtual_vtable_index) { + Klass* k = h_recv->klass(); // k might be an arrayKlassOop but all vtables start at // the same place. The cast is to avoid virtual call and assertion. - instanceKlass *ik = (instanceKlass*)k->klass_part(); + InstanceKlass *ik = (InstanceKlass*)k; selected_method = ik->method_at_vtable(vtbl_index); } else { // final method @@ -1388,8 +1388,8 @@ m->set_cached_itable_index(itbl_index); // the above may have grabbed a lock, 'm' and anything non-handlized can't be used again } - klassOop k = h_recv->klass(); - selected_method = instanceKlass::cast(k)->method_at_itable(h_holder(), itbl_index, CHECK); + Klass* k = h_recv->klass(); + selected_method = InstanceKlass::cast(k)->method_at_itable(h_holder(), itbl_index, CHECK); } } @@ -1421,10 +1421,10 @@ static instanceOop alloc_object(jclass clazz, TRAPS) { - KlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz))); + KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); Klass::cast(k())->check_valid_for_instantiation(false, CHECK_NULL); - instanceKlass::cast(k())->initialize(CHECK_NULL); - instanceOop ih = instanceKlass::cast(k())->allocate_instance(THREAD); + InstanceKlass::cast(k())->initialize(CHECK_NULL); + instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); return ih; } @@ -1542,7 +1542,7 @@ HOTSPOT_JNI_GETOBJECTCLASS_ENTRY( env, obj); #endif /* USDT2 */ - klassOop k = JNIHandles::resolve_non_null(obj)->klass(); + Klass* k = JNIHandles::resolve_non_null(obj)->klass(); jclass ret = (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror()); #ifndef USDT2 @@ -1565,7 +1565,7 @@ jboolean ret = JNI_TRUE; if (obj != NULL) { ret = JNI_FALSE; - klassOop k = java_lang_Class::as_klassOop( + Klass* k = java_lang_Class::as_Klass( JNIHandles::resolve_non_null(clazz)); if (k != NULL) { ret = JNIHandles::resolve_non_null(obj)->is_a(k) ? JNI_TRUE : JNI_FALSE; @@ -1605,18 +1605,18 @@ } KlassHandle klass(THREAD, - java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz))); + java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); // Make sure class is linked and initialized before handing id's out to - // methodOops. + // Method*s. Klass::cast(klass())->initialize(CHECK_NULL); - methodOop m; + Method* m; if (name == vmSymbols::object_initializer_name() || name == vmSymbols::class_initializer_name()) { // Never search superclasses for constructors if (klass->oop_is_instance()) { - m = instanceKlass::cast(klass())->find_method(name, signature); + m = InstanceKlass::cast(klass())->find_method(name, signature); } else { m = NULL; } @@ -1624,7 +1624,7 @@ m = klass->lookup_method(name, signature); // Look up interfaces if (m == NULL && klass->oop_is_instance()) { - m = instanceKlass::cast(klass())->lookup_method_in_all_interfaces(name, + m = InstanceKlass::cast(klass())->lookup_method_in_all_interfaces(name, signature); } } @@ -2424,7 +2424,7 @@ JavaValue jvalue(Tag); \ JNI_ArgumentPusherVaArg ap(methodID, args); \ /* Make sure class is initialized before trying to invoke its method */ \ - KlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls))); \ + KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls))); \ Klass::cast(k())->initialize(CHECK_0); \ jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ va_end(args); \ @@ -2608,13 +2608,13 @@ THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } KlassHandle k(THREAD, - java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz))); + java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); // Make sure class is initialized before handing id's out to fields Klass::cast(k())->initialize(CHECK_NULL); fieldDescriptor fd; if (!Klass::cast(k())->oop_is_instance() || - !instanceKlass::cast(k())->find_field(fieldname, signame, false, &fd)) { + !InstanceKlass::cast(k())->find_field(fieldname, signame, false, &fd)) { THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } @@ -2634,7 +2634,7 @@ env, obj, (uintptr_t) fieldID); #endif /* USDT2 */ oop o = JNIHandles::resolve_non_null(obj); - klassOop k = o->klass(); + Klass* k = o->klass(); int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); // Keep JVMTI addition small and only check enabled flag here. // jni_GetField_probe() assumes that is okay to create handles. @@ -2651,8 +2651,8 @@ if (ret != NULL && offset == java_lang_ref_Reference::referent_offset && - instanceKlass::cast(k)->reference_type() != REF_NONE) { - assert(instanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity"); + InstanceKlass::cast(k)->reference_type() != REF_NONE) { + assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity"); needs_barrier = true; } @@ -2685,7 +2685,7 @@ DT_RETURN_MARK_FOR(Result, Get##Result##Field, Return, (const Return&)ret);\ \ oop o = JNIHandles::resolve_non_null(obj); \ - klassOop k = o->klass(); \ + Klass* k = o->klass(); \ int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); \ /* Keep JVMTI addition small and only check enabled flag here. */ \ /* jni_GetField_probe_nh() assumes that is not okay to create handles */ \ @@ -2722,7 +2722,7 @@ DT_RETURN_MARK_FOR(Result, Get##Result##Field, Return, (const Return&)ret);\ \ oop o = JNIHandles::resolve_non_null(obj); \ - klassOop k = o->klass(); \ + Klass* k = o->klass(); \ int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); \ /* Keep JVMTI addition small and only check enabled flag here. */ \ /* jni_GetField_probe_nh() assumes that is not okay to create handles */ \ @@ -2795,7 +2795,7 @@ env, obj, (uintptr_t) fieldID, value); #endif /* USDT2 */ oop o = JNIHandles::resolve_non_null(obj); - klassOop k = o->klass(); + Klass* k = o->klass(); int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); // Keep JVMTI addition small and only check enabled flag here. // jni_SetField_probe_nh() assumes that is not okay to create handles @@ -2826,7 +2826,7 @@ ( env, obj, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \ \ oop o = JNIHandles::resolve_non_null(obj); \ - klassOop k = o->klass(); \ + Klass* k = o->klass(); \ int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); \ /* Keep JVMTI addition small and only check enabled flag here. */ \ /* jni_SetField_probe_nh() assumes that is not okay to create handles */ \ @@ -2860,7 +2860,7 @@ EntryProbe; \ \ oop o = JNIHandles::resolve_non_null(obj); \ - klassOop k = o->klass(); \ + Klass* k = o->klass(); \ int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); \ /* Keep JVMTI addition small and only check enabled flag here. */ \ /* jni_SetField_probe_nh() assumes that is not okay to create handles */ \ @@ -2922,19 +2922,19 @@ fieldDescriptor fd; bool found = false; - klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls)); + Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); assert(jfieldIDWorkaround::is_static_jfieldID(fieldID) == (isStatic != 0), "invalid fieldID"); if (isStatic) { - // Static field. The fieldID a JNIid specifying the field holder and the offset within the klassOop. + // Static field. The fieldID a JNIid specifying the field holder and the offset within the Klass*. JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); assert(id->is_static_field_id(), "invalid static field id"); found = id->find_local_field(&fd); } else { // Non-static field. The fieldID is really the offset of the field within the instanceOop. int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); - found = instanceKlass::cast(k)->find_field_from_offset(offset, false, &fd); + found = InstanceKlass::cast(k)->find_field_from_offset(offset, false, &fd); } assert(found, "bad fieldID passed into jni_ToReflectedField"); oop reflected = Reflection::new_field(&fd, UseNewReflection, CHECK_NULL); @@ -2974,18 +2974,18 @@ THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } KlassHandle k(THREAD, - java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz))); + java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); // Make sure class is initialized before handing id's out to static fields Klass::cast(k())->initialize(CHECK_NULL); fieldDescriptor fd; if (!Klass::cast(k())->oop_is_instance() || - !instanceKlass::cast(k())->find_field(fieldname, signame, true, &fd)) { + !InstanceKlass::cast(k())->find_field(fieldname, signame, true, &fd)) { THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name); } - // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the klassOop - JNIid* id = instanceKlass::cast(fd.field_holder())->jni_id_for(fd.offset()); + // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the Klass* + JNIid* id = InstanceKlass::cast(fd.field_holder())->jni_id_for(fd.offset()); debug_only(id->set_is_static_field_id();) debug_only(id->verify(fd.field_holder())); @@ -3004,7 +3004,7 @@ env, clazz, (uintptr_t) fieldID); #endif /* USDT2 */ #ifndef JNICHECK_KERNEL - DEBUG_ONLY(klassOop param_k = jniCheck::validate_class(thread, clazz);) + DEBUG_ONLY(Klass* param_k = jniCheck::validate_class(thread, clazz);) #endif // JNICHECK_KERNEL JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID); assert(id->is_static_field_id(), "invalid static field id"); @@ -3439,8 +3439,8 @@ #endif /* USDT2 */ jobjectArray ret = NULL; DT_RETURN_MARK(NewObjectArray, jobjectArray, (const jobjectArray&)ret); - KlassHandle ek(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(elementClass))); - klassOop ako = Klass::cast(ek())->array_klass(CHECK_NULL); + KlassHandle ek(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(elementClass))); + Klass* ako = Klass::cast(ek())->array_klass(CHECK_NULL); KlassHandle ak = KlassHandle(THREAD, ako); objArrayKlass::cast(ak())->initialize(CHECK_NULL); objArrayOop result = objArrayKlass::cast(ak())->allocate(length, CHECK_NULL); @@ -3949,10 +3949,10 @@ // is not native. Ask JVM TI what prefixes have been specified. Then check // to see if the native method is now wrapped with the prefixes. See the // SetNativeMethodPrefix(es) functions in the JVM TI Spec for details. -static methodOop find_prefixed_native(KlassHandle k, +static Method* find_prefixed_native(KlassHandle k, Symbol* name, Symbol* signature, TRAPS) { ResourceMark rm(THREAD); - methodOop method; + Method* method; int name_len = name->utf8_length(); char* name_str = name->as_utf8(); int prefix_count; @@ -3986,12 +3986,12 @@ } static bool register_native(KlassHandle k, Symbol* name, Symbol* signature, address entry, TRAPS) { - methodOop method = Klass::cast(k())->lookup_method(name, signature); + Method* method = Klass::cast(k())->lookup_method(name, signature); if (method == NULL) { ResourceMark rm; stringStream st; st.print("Method %s name or signature does not match", - methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); + Method::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false); } if (!method->is_native()) { @@ -4001,14 +4001,14 @@ ResourceMark rm; stringStream st; st.print("Method %s is not declared as native", - methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); + Method::name_and_sig_as_C_string(Klass::cast(k()), name, signature)); THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false); } } if (entry != NULL) { method->set_native_function(entry, - methodOopDesc::native_bind_event_is_interesting); + Method::native_bind_event_is_interesting); } else { method->clear_native_function(); } @@ -4041,7 +4041,7 @@ jint ret = 0; DT_RETURN_MARK(RegisterNatives, jint, (const jint&)ret); - KlassHandle h_k(thread, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz))); + KlassHandle h_k(thread, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); for (int index = 0; index < nMethods; index++) { const char* meth_name = methods[index].name; @@ -4081,11 +4081,11 @@ HOTSPOT_JNI_UNREGISTERNATIVES_ENTRY( env, clazz); #endif /* USDT2 */ - klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)); + Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)); //%note jni_2 if (Klass::cast(k)->oop_is_instance()) { - for (int index = 0; index < instanceKlass::cast(k)->methods()->length(); index++) { - methodOop m = methodOop(instanceKlass::cast(k)->methods()->obj_at(index)); + for (int index = 0; index < InstanceKlass::cast(k)->methods()->length(); index++) { + Method* m = InstanceKlass::cast(k)->methods()->at(index); if (m->is_native()) { m->clear_native_function(); m->set_signature_handler(NULL); @@ -4412,7 +4412,7 @@ jclass result = find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL); if (TraceClassResolution && result != NULL) { - trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result))); + trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result))); } return result; }