diff src/share/vm/classfile/verifier.cpp @ 4460:09b0d3e9ba6c

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
author bharadwaj
date Tue, 09 Apr 2013 08:52:32 -0700
parents 36376b540a98
children 92ef81e2f571
line wrap: on
line diff
--- a/src/share/vm/classfile/verifier.cpp	Fri Apr 05 23:10:04 2013 -0700
+++ b/src/share/vm/classfile/verifier.cpp	Tue Apr 09 08:52:32 2013 -0700
@@ -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 @@
       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;
   }