hotspot/test/runtime/logging/BadMap50.jasm
author lana
Thu, 12 May 2016 15:15:02 +0000
changeset 37915 be4ff50b6cb6
parent 34628 6d08ec72803b
permissions -rw-r--r--
Added tag jdk-9+118 for changeset cc643de7cb06

/*
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 * This class should throw VerifyError because the StackMap for bytecode
 * index 45 is incorrect. The stack maps for bytecode indexes 45 and 49 are
 * incompatible because 45 doesn't supply enough locals to satisfy 49.
 *
 * The astore_2 bytecode at bytecode index 45 changes the type state,
 * preventing the stackmap mismatch.  But, if the incoming type state is used,
 * as required by JVM Spec 8, then the verifier will detected the stackmap
 * mismatch, and throw VerifyError.
 */

super public class BadMap50
    version 50:0
{


public Method "<init>":"()V"
    stack 1 locals 1
{
        aload_0;
        invokespecial    Method java/lang/Object."<init>":"()V";
        return;
}

public static Method main:"([Ljava/lang/String;)V"
    throws java/lang/Throwable
    stack 0 locals 1
{
        return;
}

public static Method foo:"()V"
    stack 3 locals 5
{
        iconst_0;
        ifne    L5;
        nop;
        try t7;
    L5:    stack_frame_type full;
        aconst_null;
        astore_0;
        iconst_3;
        istore_1;
        try t0;
        aconst_null;
        astore_0;
        endtry t0;
        goto    L19;
        catch t0 java/io/IOException;
        stack_frame_type full;
        locals_map class java/lang/Object, int;
        stack_map class java/io/IOException;
        astore_2;
        aconst_null;
        astore_0;
        iconst_2;
        istore_1;
        try t1;
    L19:    stack_frame_type full;
        locals_map class java/lang/Object, int;
        iconst_0;
        istore_2;
        endtry t1;
        iload_1;
        ifeq    L37;
        nop;
        goto    L37;
        catch t1 #0;
        catch t2 #0;
        try t2;
        stack_frame_type full;
        locals_map class java/lang/Object, int;
        stack_map class java/lang/Throwable;
astore_3;
iconst_2;
istore_2;
        endtry t2;
        iload_1;
        ifeq    L35;
        nop;
    L35:    stack_frame_type full;
        locals_map class java/lang/Object, int, bogus, class java/lang/Throwable;
aload_3;
        athrow;
        try t3, t4;
    L37:    stack_frame_type full;
        locals_map class java/lang/Object, int, int;
        iload_2;
        ifeq    L42;
        nop;
        endtry t3, t4;
    L42:    stack_frame_type full;
        locals_map class java/lang/Object, int, int;
        goto    L54;
        catch t3 java/lang/Exception;
        try t5;
        stack_frame_type full;
        locals_map class java/lang/Object, int;
        stack_map class java/lang/Exception;
        // astore_2;                  // astore_2, at bci 45, that changes the type state.
// pop;
iconst_1;
        istore_2;                  // astore_2, at bci 45, that changes the type state.
        endtry t5;
        goto    L54;
        catch t4 #0;
        catch t5 #0;
        catch t6 #0;
        try t6;
      stack_frame_type full;
      locals_map class java/lang/Object, int, int;
      stack_map class java/lang/Throwable;
// astore    3;
 istore_1;
        endtry t6;
// aload    3;
//         athrow;
    L54:    stack_frame_type full;
        locals_map class java/lang/Object, int, int;
        goto    L57;
    L57:    stack_frame_type full;
        locals_map class java/lang/Object, int, int;
        nop;
        endtry t7;
        return;
        catch t7 #0;
        stack_frame_type full;
        stack_map class java/lang/Throwable;
        nop;
        athrow;
}

} // end Class BadMap50