From c015a228faf7479f35ec5922a7181ca3878346aa Mon Sep 17 00:00:00 2001 From: bharadwaj Date: Tue, 9 Apr 2013 08:52:32 -0700 Subject: [PATCH] 8011671: JCK tests on static interface methods fail under b84: Illegal type at constant pool entry 5 Summary: Restore incorrect removal of support for static interface method verification in Java 8 Reviewed-by: kvn, coleenp --- src/share/vm/classfile/verifier.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/share/vm/classfile/verifier.cpp b/src/share/vm/classfile/verifier.cpp index f5261c5a6..fda30acd1 100644 --- a/src/share/vm/classfile/verifier.cpp +++ b/src/share/vm/classfile/verifier.cpp @@ -63,6 +63,7 @@ #define NOFAILOVER_MAJOR_VERSION 51 #define NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION 51 +#define STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION 52 // Access to external entry for VerifyClassCodes - old byte code verifier @@ -2320,6 +2321,11 @@ void ClassVerifier::verify_invoke_instructions( types = (1 << JVM_CONSTANT_InterfaceMethodref) | (1 << JVM_CONSTANT_Methodref); break; + case Bytecodes::_invokestatic: + types = (_klass->major_version() < STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION) ? + (1 << JVM_CONSTANT_Methodref) : + ((1 << JVM_CONSTANT_InterfaceMethodref) | (1 << JVM_CONSTANT_Methodref)); + break; default: types = 1 << JVM_CONSTANT_Methodref; } -- GitLab