# HG changeset patch # User hseigel # Date 1560965671 14400 # Node ID 82deab2dd59e3d0d3701ae95f4f3ab4231092987 # Parent d7da94e6c169d577d7a0fd4d81b36524e8238406 8226304: Obsolete the -XX:+FailOverToOldVerifier option Summary: Change the option from deprecated to obsolete Reviewed-by: lfoltan, coleenp diff -r d7da94e6c169 -r 82deab2dd59e src/hotspot/share/classfile/verifier.cpp --- a/src/hotspot/share/classfile/verifier.cpp Tue Jun 18 16:15:15 2019 +0100 +++ b/src/hotspot/share/classfile/verifier.cpp Wed Jun 19 13:34:31 2019 -0400 @@ -165,22 +165,28 @@ PerfClassTraceTime::CLASS_VERIFY); // If the class should be verified, first see if we can use the split - // verifier. If not, or if verification fails and FailOverToOldVerifier - // is set, then call the inference verifier. + // verifier. If not, or if verification fails and can failover, then + // call the inference verifier. Symbol* exception_name = NULL; const size_t message_buffer_len = klass->name()->utf8_length() + 1024; char* message_buffer = NULL; char* exception_message = NULL; - bool can_failover = FailOverToOldVerifier && - klass->major_version() < NOFAILOVER_MAJOR_VERSION; - log_info(class, init)("Start class verification for: %s", klass->external_name()); if (klass->major_version() >= STACKMAP_ATTRIBUTE_MAJOR_VERSION) { ClassVerifier split_verifier(klass, THREAD); split_verifier.verify_class(THREAD); exception_name = split_verifier.result(); - if (can_failover && !HAS_PENDING_EXCEPTION && + + // If DumpSharedSpaces is set then don't fall back to the old verifier on + // verification failure. If a class fails verification with the split verifier, + // it might fail the CDS runtime verifier constraint check. In that case, we + // don't want to share the class. We only archive classes that pass the split + // verifier. + bool can_failover = !DumpSharedSpaces && + klass->major_version() < NOFAILOVER_MAJOR_VERSION; + + if (can_failover && !HAS_PENDING_EXCEPTION && // Split verifier doesn't set PENDING_EXCEPTION for failure (exception_name == vmSymbols::java_lang_VerifyError() || exception_name == vmSymbols::java_lang_ClassFormatError())) { log_info(verification)("Fail over class verification to old verifier for: %s", klass->external_name()); diff -r d7da94e6c169 -r 82deab2dd59e src/hotspot/share/runtime/arguments.cpp --- a/src/hotspot/share/runtime/arguments.cpp Tue Jun 18 16:15:15 2019 +0100 +++ b/src/hotspot/share/runtime/arguments.cpp Wed Jun 19 13:34:31 2019 -0400 @@ -533,7 +533,6 @@ { "InitialRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() }, { "UseMembar", JDK_Version::jdk(10), JDK_Version::jdk(12), JDK_Version::undefined() }, { "CompilationPolicyChoice", JDK_Version::jdk(13), JDK_Version::jdk(14), JDK_Version::undefined() }, - { "FailOverToOldVerifier", JDK_Version::jdk(13), JDK_Version::jdk(14), JDK_Version::undefined() }, { "AllowJNIEnvProxy", JDK_Version::jdk(13), JDK_Version::jdk(14), JDK_Version::jdk(15) }, { "ThreadLocalHandshakes", JDK_Version::jdk(13), JDK_Version::jdk(14), JDK_Version::jdk(15) }, { "AllowRedefinitionToAddDeleteMethods", JDK_Version::jdk(13), JDK_Version::undefined(), JDK_Version::undefined() }, @@ -563,6 +562,7 @@ { "ProfilerNumberOfRuntimeStubNodes", JDK_Version::undefined(), JDK_Version::jdk(13), JDK_Version::jdk(14) }, { "UseImplicitStableValues", JDK_Version::undefined(), JDK_Version::jdk(13), JDK_Version::jdk(14) }, { "NeedsDeoptSuspend", JDK_Version::undefined(), JDK_Version::jdk(13), JDK_Version::jdk(14) }, + { "FailOverToOldVerifier", JDK_Version::undefined(), JDK_Version::jdk(14), JDK_Version::jdk(15) }, #ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS // These entries will generate build errors. Their purpose is to test the macros. @@ -3465,14 +3465,6 @@ void Arguments::set_shared_spaces_flags() { if (DumpSharedSpaces) { - if (FailOverToOldVerifier) { - // Don't fall back to the old verifier on verification failure. If a - // class fails verification with the split verifier, it might fail the - // CDS runtime verifier constraint check. In that case, we don't want - // to share the class. We only archive classes that pass the split verifier. - FLAG_SET_DEFAULT(FailOverToOldVerifier, false); - } - if (RequireSharedSpaces) { warning("Cannot dump shared archive while using shared archive"); } diff -r d7da94e6c169 -r 82deab2dd59e src/hotspot/share/runtime/globals.hpp --- a/src/hotspot/share/runtime/globals.hpp Tue Jun 18 16:15:15 2019 +0100 +++ b/src/hotspot/share/runtime/globals.hpp Wed Jun 19 13:34:31 2019 -0400 @@ -405,9 +405,6 @@ notproduct(bool, VerifyLastFrame, false, \ "Verify oops on last frame on entry to VM") \ \ - product(bool, FailOverToOldVerifier, true, \ - "Fail over to old verifier when split verifier fails") \ - \ product(bool, SafepointTimeout, false, \ "Time out and warn or fail after SafepointTimeoutDelay " \ "milliseconds if failed to reach safepoint") \