src/share/vm/prims/methodHandles.cpp

changeset 5354
c1bd7b5bdc70
parent 5178
b7fa10a3a69a
child 5732
b2e698d2276c
     1.1 --- a/src/share/vm/prims/methodHandles.cpp	Tue Jul 02 07:51:31 2013 +0200
     1.2 +++ b/src/share/vm/prims/methodHandles.cpp	Tue Jul 02 20:27:00 2013 -0700
     1.3 @@ -1137,7 +1137,12 @@
     1.4    if (VerifyMethodHandles && caller_jh != NULL &&
     1.5        java_lang_invoke_MemberName::clazz(mname()) != NULL) {
     1.6      Klass* reference_klass = java_lang_Class::as_Klass(java_lang_invoke_MemberName::clazz(mname()));
     1.7 -    if (reference_klass != NULL) {
     1.8 +    if (reference_klass != NULL && reference_klass->oop_is_objArray()) {
     1.9 +      reference_klass = ObjArrayKlass::cast(reference_klass)->bottom_klass();
    1.10 +    }
    1.11 +
    1.12 +    // Reflection::verify_class_access can only handle instance classes.
    1.13 +    if (reference_klass != NULL && reference_klass->oop_is_instance()) {
    1.14        // Emulate LinkResolver::check_klass_accessability.
    1.15        Klass* caller = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(caller_jh));
    1.16        if (!Reflection::verify_class_access(caller,

mercurial