public class org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest extends org.graalvm.compiler.core.test.GraalCompilerTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest
  super_class: org.graalvm.compiler.core.test.GraalCompilerTest
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
         0: .line 41
            aload 0 /* this */
            invokespecial org.graalvm.compiler.core.test.GraalCompilerTest.<init>:()V
            return
        end local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/NestedExceptionHandlerTest;

  public static void foo();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 45
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.core.test.GraalCompilerTest$BytecodeParserNeverInline(invokeWithException = true)

  public static void bar();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 49
            new java.lang.NegativeArraySizeException
            dup
            invokespecial java.lang.NegativeArraySizeException.<init>:()V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      org.graalvm.compiler.core.test.GraalCompilerTest$BytecodeParserNeverInline(invokeWithException = true)

  public static int nestedExceptionHandler();
    descriptor: ()I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 53
            iconst_0
            istore 0 /* flag */
        start local 0 // int flag
         1: .line 57
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.foo:()V
         2: .line 58
            goto 5
      StackMap locals: int
      StackMap stack: java.lang.NegativeArraySizeException
         3: pop
         4: .line 59
            iconst_m1
            istore 0 /* flag */
         5: .line 61
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.bar:()V
         6: .line 62
            goto 12
      StackMap locals:
      StackMap stack: java.lang.NullPointerException
         7: pop
         8: .line 63
            bipush -2
            istore 0 /* flag */
         9: .line 65
            goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: pop
        11: .line 66
            invokestatic org.graalvm.compiler.api.directives.GraalDirectives.deoptimize:()V
        12: .line 68
      StackMap locals:
      StackMap stack:
            iload 0 /* flag */
            ireturn
        end local 0 // int flag
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1   13     0  flag  I
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.NegativeArraySizeException
           1     6       7  Class java.lang.NullPointerException
           1     9      10  Class java.lang.Throwable

  public void testNestedExceptionHandler();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
         0: .line 73
            aload 0 /* this */
            new org.graalvm.compiler.options.OptionValues
            dup
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.getInitialOptions:()Lorg/graalvm/compiler/options/OptionValues;
            getstatic org.graalvm.compiler.core.phases.HighTier$Options.Inline:Lorg/graalvm/compiler/options/OptionKey;
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            iconst_0
            anewarray java.lang.Object
            invokespecial org.graalvm.compiler.options.OptionValues.<init>:(Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/options/OptionKey;Ljava/lang/Object;[Ljava/lang/Object;)V
            ldc "nestedExceptionHandler"
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.test:(Lorg/graalvm/compiler/options/OptionValues;Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/compiler/core/test/GraalCompilerTest$Result;
            pop
         1: .line 74
            return
        end local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/compiler/replacements/test/NestedExceptionHandlerTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public static java.lang.String snippet1();
    descriptor: ()Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=0
         0: .line 79
            ldc Ljava/lang/String;
            dup
            astore 0
            monitorenter
         1: .line 80
            aconst_null
            astore 1
            aconst_null
            astore 2
         2: aconst_null
            astore 3 /* scope */
        start local 3 // java.lang.AutoCloseable scope
         3: .line 82
            aload 3 /* scope */
            ifnull 4
            aload 3 /* scope */
            invokeinterface java.lang.AutoCloseable.close:()V
      StackMap locals: java.lang.Class java.lang.Throwable java.lang.Throwable java.lang.AutoCloseable
      StackMap stack:
         4: aload 0
            monitorexit
         5: .line 87
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.raise:()V
         6: .line 81
            ldc "RETURN"
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 1
         8: .line 82
            aload 3 /* scope */
            ifnull 9
            aload 3 /* scope */
            invokeinterface java.lang.AutoCloseable.close:()V
        end local 3 // java.lang.AutoCloseable scope
      StackMap locals:
      StackMap stack:
         9: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 2
            aload 1
            ifnonnull 11
            aload 2
            astore 1
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 1
            aload 2
            if_acmpeq 12
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 1
            athrow
      StackMap locals: java.lang.Class
      StackMap stack: java.lang.Throwable
        13: astore 1 /* t */
        start local 1 // java.lang.Throwable t
        14: .line 83
            aload 1 /* t */
            invokevirtual java.lang.Throwable.toString:()Ljava/lang/String;
            astore 5
            aload 0
            monitorexit
        15: .line 87
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.raise:()V
        16: .line 83
            aload 5
            areturn
        end local 1 // java.lang.Throwable t
        17: .line 79
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 0
            monitorexit
        18: athrow
        19: .line 86
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        20: .line 87
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.raise:()V
        21: .line 88
            aload 4
            athrow
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            3    9     3  scope  Ljava/lang/AutoCloseable;
           14   17     1      t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     4      10  any
           7    10      10  any
           1     4      13  Class java.lang.Throwable
           7    13      13  Class java.lang.Throwable
           1     5      17  any
           7    15      17  any
          17    18      17  any
           0     5      19  any
           7    15      19  any
          17    19      19  any

  public static void raise();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 92
            new java.lang.RuntimeException
            dup
            invokespecial java.lang.RuntimeException.<init>:()V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.String snippet2();
    descriptor: ()Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=0
         0: .line 98
            ldc Ljava/lang/String;
            dup
            astore 0
            monitorenter
         1: .line 99
            aconst_null
            astore 1
            aconst_null
            astore 2
         2: aconst_null
            astore 3 /* scope */
        start local 3 // java.lang.AutoCloseable scope
         3: .line 100
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.performCompilation:()Ljava/lang/String;
            astore 5
         4: .line 101
            aload 3 /* scope */
            ifnull 5
            aload 3 /* scope */
            invokeinterface java.lang.AutoCloseable.close:()V
      StackMap locals: java.lang.Class java.lang.Throwable java.lang.Throwable java.lang.AutoCloseable top java.lang.String
      StackMap stack:
         5: aload 0
            monitorexit
         6: .line 106
            ldc Ljava/lang/String;
            dup
            astore 6
            monitorenter
         7: .line 107
            ldc Ljava/lang/String;
            invokevirtual java.lang.Class.toString:()Ljava/lang/String;
            pop
         8: .line 106
            aload 6
            monitorexit
         9: goto 12
      StackMap locals: java.lang.Class java.lang.Throwable java.lang.Throwable java.lang.AutoCloseable top java.lang.String java.lang.Class
      StackMap stack: java.lang.Throwable
        10: aload 6
            monitorexit
        11: athrow
        12: .line 100
      StackMap locals:
      StackMap stack:
            aload 5
            areturn
      StackMap locals: java.lang.Class java.lang.Throwable java.lang.Throwable java.lang.AutoCloseable
      StackMap stack: java.lang.Throwable
        13: astore 1
        14: .line 101
            aload 3 /* scope */
            ifnull 15
            aload 3 /* scope */
            invokeinterface java.lang.AutoCloseable.close:()V
        end local 3 // java.lang.AutoCloseable scope
      StackMap locals:
      StackMap stack:
        15: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 2
            aload 1
            ifnonnull 17
            aload 2
            astore 1
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 1
            aload 2
            if_acmpeq 18
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        18: aload 1
            athrow
      StackMap locals: java.lang.Class
      StackMap stack: java.lang.Throwable
        19: astore 1 /* t */
        start local 1 // java.lang.Throwable t
        20: .line 102
            aload 1 /* t */
            invokevirtual java.lang.Throwable.toString:()Ljava/lang/String;
            astore 5
            aload 0
            monitorexit
        21: .line 106
            ldc Ljava/lang/String;
            dup
            astore 6
            monitorenter
        22: .line 107
            ldc Ljava/lang/String;
            invokevirtual java.lang.Class.toString:()Ljava/lang/String;
            pop
        23: .line 106
            aload 6
            monitorexit
        24: goto 27
      StackMap locals: java.lang.Class java.lang.Throwable top top top java.lang.String java.lang.Class
      StackMap stack: java.lang.Throwable
        25: aload 6
            monitorexit
        26: athrow
        27: .line 102
      StackMap locals:
      StackMap stack:
            aload 5
            areturn
        end local 1 // java.lang.Throwable t
        28: .line 98
      StackMap locals: java.lang.Class
      StackMap stack: java.lang.Throwable
            aload 0
            monitorexit
        29: athrow
        30: .line 105
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        31: .line 106
            ldc Ljava/lang/String;
            dup
            astore 6
            monitorenter
        32: .line 107
            ldc Ljava/lang/String;
            invokevirtual java.lang.Class.toString:()Ljava/lang/String;
            pop
        33: .line 106
            aload 6
            monitorexit
        34: goto 37
      StackMap locals: top top top top java.lang.Throwable top java.lang.Class
      StackMap stack: java.lang.Throwable
        35: aload 6
            monitorexit
        36: athrow
        37: .line 109
      StackMap locals: top top top top java.lang.Throwable
      StackMap stack:
            aload 4
            athrow
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            3   15     3  scope  Ljava/lang/AutoCloseable;
           20   28     1      t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           7     9      10  any
          10    11      10  any
           3     4      13  any
           2     5      16  any
          13    16      16  any
           1     5      19  Class java.lang.Throwable
          13    19      19  Class java.lang.Throwable
          22    24      25  any
          25    26      25  any
           1     6      28  any
          13    21      28  any
          28    29      28  any
           0     6      30  any
          13    21      30  any
          28    30      30  any
          32    34      35  any
          35    36      35  any

  private static java.lang.String performCompilation();
    descriptor: ()Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 113
            ldc "passed"
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void testSnippet1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
         0: .line 119
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.parseAllCodeWithoutInlining:()Lorg/graalvm/compiler/options/OptionValues;
            astore 1 /* options */
        start local 1 // org.graalvm.compiler.options.OptionValues options
         1: .line 120
            aload 0 /* this */
            ldc "snippet1"
            invokevirtual org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.getResolvedJavaMethod:(Ljava/lang/String;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 2 /* method */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
         2: .line 121
            aload 0 /* this */
            aload 2 /* method */
            getstatic org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions.YES:Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;
            aload 1 /* options */
            invokevirtual org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.parseEager:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;Lorg/graalvm/compiler/options/OptionValues;)Lorg/graalvm/compiler/nodes/StructuredGraph;
            pop
         3: .line 122
            return
        end local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/graalvm/compiler/replacements/test/NestedExceptionHandlerTest;
            1    4     1  options  Lorg/graalvm/compiler/options/OptionValues;
            2    4     2   method  Ljdk/vm/ci/meta/ResolvedJavaMethod;
    RuntimeVisibleAnnotations: 
      org.junit.Ignore(value = "https://bugs.eclipse.org/bugs/show_bug.cgi?id=533187")
      org.junit.Test()

  public void testSnippet2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
         0: .line 127
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.parseAllCodeWithoutInlining:()Lorg/graalvm/compiler/options/OptionValues;
            astore 1 /* options */
        start local 1 // org.graalvm.compiler.options.OptionValues options
         1: .line 128
            aload 0 /* this */
            ldc "snippet2"
            invokevirtual org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.getResolvedJavaMethod:(Ljava/lang/String;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 2 /* method */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
         2: .line 129
            aload 0 /* this */
            aload 2 /* method */
            getstatic org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions.YES:Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;
            aload 1 /* options */
            invokevirtual org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.parseEager:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/nodes/StructuredGraph$AllowAssumptions;Lorg/graalvm/compiler/options/OptionValues;)Lorg/graalvm/compiler/nodes/StructuredGraph;
            pop
         3: .line 130
            return
        end local 2 // jdk.vm.ci.meta.ResolvedJavaMethod method
        end local 1 // org.graalvm.compiler.options.OptionValues options
        end local 0 // org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/graalvm/compiler/replacements/test/NestedExceptionHandlerTest;
            1    4     1  options  Lorg/graalvm/compiler/options/OptionValues;
            2    4     2   method  Ljdk/vm/ci/meta/ResolvedJavaMethod;
    RuntimeVisibleAnnotations: 
      org.junit.Ignore(value = "https://bugs.eclipse.org/bugs/show_bug.cgi?id=533187")
      org.junit.Test()

  private static org.graalvm.compiler.options.OptionValues parseAllCodeWithoutInlining();
    descriptor: ()Lorg/graalvm/compiler/options/OptionValues;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=1, args_size=0
         0: .line 133
            new org.graalvm.compiler.options.OptionValues
            dup
            invokestatic org.graalvm.compiler.replacements.test.NestedExceptionHandlerTest.getInitialOptions:()Lorg/graalvm/compiler/options/OptionValues;
         1: .line 134
            getstatic org.graalvm.compiler.core.common.GraalOptions.UseTypeCheckHints:Lorg/graalvm/compiler/options/OptionKey;
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 135
            getstatic org.graalvm.compiler.core.common.GraalOptions.UseExceptionProbability:Lorg/graalvm/compiler/options/OptionKey;
            aastore
            dup
            iconst_1
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aastore
            dup
            iconst_2
         3: .line 136
            getstatic org.graalvm.compiler.core.common.GraalOptions.RemoveNeverExecutedCode:Lorg/graalvm/compiler/options/OptionKey;
            aastore
            dup
            iconst_3
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
         4: .line 133
            aastore
            invokespecial org.graalvm.compiler.options.OptionValues.<init>:(Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/options/OptionKey;Ljava/lang/Object;[Ljava/lang/Object;)V
            astore 0 /* options */
        start local 0 // org.graalvm.compiler.options.OptionValues options
         5: .line 137
            aload 0 /* options */
            areturn
        end local 0 // org.graalvm.compiler.options.OptionValues options
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            5    6     0  options  Lorg/graalvm/compiler/options/OptionValues;
}
SourceFile: "NestedExceptionHandlerTest.java"
InnerClasses:
  public Options = org.graalvm.compiler.core.phases.HighTier$Options of org.graalvm.compiler.core.phases.HighTier
  public abstract BytecodeParserNeverInline = org.graalvm.compiler.core.test.GraalCompilerTest$BytecodeParserNeverInline of org.graalvm.compiler.core.test.GraalCompilerTest
  public Result = org.graalvm.compiler.core.test.GraalCompilerTest$Result of org.graalvm.compiler.core.test.GraalCompilerTest
  public final AllowAssumptions = org.graalvm.compiler.nodes.StructuredGraph$AllowAssumptions of org.graalvm.compiler.nodes.StructuredGraph