< prev index next >

src/hotspot/share/classfile/verifier.cpp

Print this page

        

@@ -1628,10 +1628,16 @@
           // pass FALSE, operand can't be an array type for getfield/putfield.
           verify_field_instructions(
             &bcs, &current_frame, cp, false, CHECK_VERIFY(this));
           no_control_flow = false; break;
         case Bytecodes::_withfield :
+          if (!EnableValhalla) {
+            verify_error(ErrorContext::bad_code(bci),
+              "The withfield instruction in class %s requires option -XX:+EnableValhalla",
+              _klass->external_name());
+            return;
+          }
           if (_klass->major_version() < VALUETYPE_MAJOR_VERSION) {
             class_format_error(
               "withfield not supported by this class file version (%d.%d), class %s",
               _klass->major_version(), _klass->minor_version(), _klass->external_name());
             return;

@@ -1674,10 +1680,16 @@
           current_frame.push_stack(type, CHECK_VERIFY(this));
           no_control_flow = false; break;
         }
         case Bytecodes::_defaultvalue :
         {
+          if (!EnableValhalla) {
+            verify_error(ErrorContext::bad_code(bci),
+              "The defaultvalue instruction in class %s requires option -XX:+EnableValhalla",
+              _klass->external_name());
+            return;
+          }
           if (_klass->major_version() < VALUETYPE_MAJOR_VERSION) {
             class_format_error(
               "defaultvalue not supported by this class file version (%d.%d), class %s",
               _klass->major_version(), _klass->minor_version(), _klass->external_name());
             return;
< prev index next >