Wed, 19 May 2010 10:19:10 -0400
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 | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/classfile/verifier.cpp Mon May 17 07:11:27 2010 -0700 1.2 +++ b/src/share/vm/classfile/verifier.cpp Wed May 19 10:19:10 2010 -0400 1.3 @@ -25,6 +25,8 @@ 1.4 # include "incls/_precompiled.incl" 1.5 # include "incls/_verifier.cpp.incl" 1.6 1.7 +#define NOFAILOVER_MAJOR_VERSION 51 1.8 + 1.9 // Access to external entry for VerifyClassCodes - old byte code verifier 1.10 1.11 extern "C" { 1.12 @@ -91,7 +93,8 @@ 1.13 klass, message_buffer, message_buffer_len, THREAD); 1.14 split_verifier.verify_class(THREAD); 1.15 exception_name = split_verifier.result(); 1.16 - if (FailOverToOldVerifier && !HAS_PENDING_EXCEPTION && 1.17 + if (klass->major_version() < NOFAILOVER_MAJOR_VERSION && 1.18 + FailOverToOldVerifier && !HAS_PENDING_EXCEPTION && 1.19 (exception_name == vmSymbols::java_lang_VerifyError() || 1.20 exception_name == vmSymbols::java_lang_ClassFormatError())) { 1.21 if (TraceClassInitialization) {