8076236: VM permits illegal flags for class init method
authorhseigel
Thu, 02 Apr 2015 08:50:10 -0400
changeset 30136 1c5202fa105b
parent 30135 bbb14e0a0c79
child 30138 35599707b3f7
child 30144 b009de0c0cef
8076236: VM permits illegal flags for class init method Summary: Move check for multiple access flags so that it also covers instance initialization methods Reviewed-by: ctornqvi, lfoltan
hotspot/src/share/vm/classfile/classFileParser.cpp
--- a/hotspot/src/share/vm/classfile/classFileParser.cpp	Thu Apr 02 07:44:55 2015 +0000
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp	Thu Apr 02 08:50:10 2015 -0400
@@ -4838,20 +4838,21 @@
       }
     }
   } else { // not interface
-    if (is_initializer) {
-      if (is_static || is_final || is_synchronized || is_native ||
-          is_abstract || (major_gte_15 && is_bridge)) {
-        is_illegal = true;
-      }
-    } else { // not initializer
-      if (is_abstract) {
-        if ((is_final || is_native || is_private || is_static ||
-            (major_gte_15 && (is_synchronized || is_strict)))) {
+    if (has_illegal_visibility(flags)) {
+      is_illegal = true;
+    } else {
+      if (is_initializer) {
+        if (is_static || is_final || is_synchronized || is_native ||
+            is_abstract || (major_gte_15 && is_bridge)) {
           is_illegal = true;
         }
-      }
-      if (has_illegal_visibility(flags)) {
-        is_illegal = true;
+      } else { // not initializer
+        if (is_abstract) {
+          if ((is_final || is_native || is_private || is_static ||
+              (major_gte_15 && (is_synchronized || is_strict)))) {
+            is_illegal = true;
+          }
+        }
       }
     }
   }