From b38c443001f7407617104c81aa92919ba9d1ab53 Mon Sep 17 00:00:00 2001 From: kamg Date: Wed, 19 May 2010 10:19:10 -0400 Subject: [PATCH] 6911922: JVM must throw VerifyError for jsr or jsr_w opcodes in class file v.51+ 6693236: A class file whose version number is greater than to 50.0 must be verified using the typechecker Summary: Disable failover verification for classfiles >= v51 Reviewed-by: never, acorn, dholmes --- src/share/vm/classfile/verifier.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/share/vm/classfile/verifier.cpp b/src/share/vm/classfile/verifier.cpp index 3a9136c7b..f3f0ddc6c 100644 --- a/src/share/vm/classfile/verifier.cpp +++ b/src/share/vm/classfile/verifier.cpp @@ -25,6 +25,8 @@ # include "incls/_precompiled.incl" # include "incls/_verifier.cpp.incl" +#define NOFAILOVER_MAJOR_VERSION 51 + // Access to external entry for VerifyClassCodes - old byte code verifier extern "C" { @@ -91,7 +93,8 @@ bool Verifier::verify(instanceKlassHandle klass, Verifier::Mode mode, bool shoul klass, message_buffer, message_buffer_len, THREAD); split_verifier.verify_class(THREAD); exception_name = split_verifier.result(); - if (FailOverToOldVerifier && !HAS_PENDING_EXCEPTION && + if (klass->major_version() < NOFAILOVER_MAJOR_VERSION && + FailOverToOldVerifier && !HAS_PENDING_EXCEPTION && (exception_name == vmSymbols::java_lang_VerifyError() || exception_name == vmSymbols::java_lang_ClassFormatError())) { if (TraceClassInitialization) { -- GitLab