jdk/src/share/native/common/check_code.c
changeset 16066 b9fb0d9c58ec
parent 15998 07d54dcb3a56
child 19610 2073a59a2787
--- a/jdk/src/share/native/common/check_code.c	Sat Mar 09 17:27:58 2013 +0800
+++ b/jdk/src/share/native/common/check_code.c	Tue Mar 12 10:35:44 2013 -0400
@@ -206,6 +206,8 @@
 
 #define LDC_METHOD_HANDLE_MAJOR_VERSION 51
 
+#define NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION 51
+
 #define STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION  52
 
 #define ALLOC_STACK_SIZE 16 /* big enough */
@@ -1146,11 +1148,14 @@
         int *saved_operand;
         int keys;
         int k, delta;
-        /* 4639449, 4647081: Padding bytes must be zero. */
-        unsigned char* bptr = (unsigned char*) (code + offset + 1);
-        for (; bptr < (unsigned char*)lpc; bptr++) {
-            if (*bptr != 0) {
-                CCerror(context, "Non zero padding bytes in switch");
+
+        if (context->major_version < NONZERO_PADDING_BYTES_IN_SWITCH_MAJOR_VERSION) {
+            /* 4639449, 4647081: Padding bytes must be zero. */
+            unsigned char* bptr = (unsigned char*) (code + offset + 1);
+            for (; bptr < (unsigned char*)lpc; bptr++) {
+                if (*bptr != 0) {
+                    CCerror(context, "Non zero padding bytes in switch");
+                }
             }
         }
         if (opcode == JVM_OPC_tableswitch) {