6911922: JVM must throw VerifyError for jsr or jsr_w opcodes in class file v.51+

Wed, 19 May 2010 10:19:10 -0400

author
kamg
date
Wed, 19 May 2010 10:19:10 -0400
changeset 1915
e40a3601bc1f
parent 1891
892898e961c5
child 1916
3548f3198dca

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) {

mercurial