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

  private static void boundary();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 181
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public void testDefault();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
         0: .line 186
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.CompileImmediately"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.BackgroundCompilation"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.MultiTier"
         1: .line 187
            ldc "true"
         2: .line 186
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         3: .line 187
            ldc "engine.FirstTierInliningPolicy"
            ldc "None"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.Splitting"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.FirstTierCompilationThreshold"
            ldc "100"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         4: .line 188
            ldc "engine.CompilationThreshold"
            ldc "1000"
         5: .line 187
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         6: .line 188
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
         7: .line 186
            invokevirtual org.graalvm.compiler.truffle.test.MultiTierCompilationTest.setupContext:(Lorg/graalvm/polyglot/Context;)V
         8: .line 190
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode
            dup
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode.<init>:()V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
            astore 1 /* calleeTarget */
        start local 1 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget calleeTarget
         9: .line 191
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierRootNode
            dup
            aload 1 /* calleeTarget */
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierRootNode.<init>:(Lcom/oracle/truffle/api/CallTarget;)V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
            astore 2 /* multiTierTarget */
        start local 2 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget multiTierTarget
        10: .line 192
            aload 1 /* calleeTarget */
            getstatic org.graalvm.compiler.truffle.options.PolyglotCompilerOptions.FirstTierCompilationThreshold:Lorg/graalvm/options/OptionKey;
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.getOptionValue:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 3 /* firstTierCompilationThreshold */
        start local 3 // int firstTierCompilationThreshold
        11: .line 193
            aload 1 /* calleeTarget */
            getstatic org.graalvm.compiler.truffle.options.PolyglotCompilerOptions.CompilationThreshold:Lorg/graalvm/options/OptionKey;
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.getOptionValue:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 4 /* compilationThreshold */
        start local 4 // int compilationThreshold
        12: .line 195
            ldc "root:interpreter"
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 196
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        14: goto 17
        15: .line 197
      StackMap locals: org.graalvm.compiler.truffle.test.MultiTierCompilationTest org.graalvm.compiler.truffle.runtime.OptimizedCallTarget org.graalvm.compiler.truffle.runtime.OptimizedCallTarget int int int
      StackMap stack:
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 196
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 5 /* i */
            iload 3 /* firstTierCompilationThreshold */
            if_icmplt 15
        end local 5 // int i
        18: .line 199
            ldc "callee:interpreter"
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        19: .line 200
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        20: goto 23
        21: .line 201
      StackMap locals:
      StackMap stack:
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 200
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 5 /* i */
            iload 3 /* firstTierCompilationThreshold */
            if_icmplt 21
        end local 5 // int i
        24: .line 203
            ldc "callee:first-tier"
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        25: .line 204
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        26: goto 29
        27: .line 205
      StackMap locals:
      StackMap stack:
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        28: .line 204
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        29: iload 5 /* i */
            iload 4 /* compilationThreshold */
            if_icmplt 27
        end local 5 // int i
        30: .line 207
            ldc "callee:inlined"
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        31: .line 208
            return
        end local 4 // int compilationThreshold
        end local 3 // int firstTierCompilationThreshold
        end local 2 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget multiTierTarget
        end local 1 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget calleeTarget
        end local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   32     0                           this  Lorg/graalvm/compiler/truffle/test/MultiTierCompilationTest;
            9   32     1                   calleeTarget  Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
           10   32     2                multiTierTarget  Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
           11   32     3  firstTierCompilationThreshold  I
           12   32     4           compilationThreshold  I
           14   18     5                              i  I
           20   24     5                              i  I
           26   30     5                              i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testFirstTierInlining();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
         0: .line 213
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.CompileImmediately"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.BackgroundCompilation"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.MultiTier"
         1: .line 214
            ldc "true"
         2: .line 213
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         3: .line 214
            ldc "engine.FirstTierInliningPolicy"
            ldc "Default"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.Splitting"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.FirstTierCompilationThreshold"
            ldc "100"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         4: .line 215
            ldc "engine.CompilationThreshold"
            ldc "1000"
         5: .line 214
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         6: .line 215
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
         7: .line 213
            invokevirtual org.graalvm.compiler.truffle.test.MultiTierCompilationTest.setupContext:(Lorg/graalvm/polyglot/Context;)V
         8: .line 217
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode
            dup
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode.<init>:()V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
            astore 1 /* calleeTarget */
        start local 1 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget calleeTarget
         9: .line 218
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierRootNode
            dup
            aload 1 /* calleeTarget */
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierRootNode.<init>:(Lcom/oracle/truffle/api/CallTarget;)V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
            astore 2 /* multiTierTarget */
        start local 2 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget multiTierTarget
        10: .line 219
            aload 1 /* calleeTarget */
            getstatic org.graalvm.compiler.truffle.options.PolyglotCompilerOptions.FirstTierCompilationThreshold:Lorg/graalvm/options/OptionKey;
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.getOptionValue:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 3 /* firstTierCompilationThreshold */
        start local 3 // int firstTierCompilationThreshold
        11: .line 220
            aload 1 /* calleeTarget */
            getstatic org.graalvm.compiler.truffle.options.PolyglotCompilerOptions.CompilationThreshold:Lorg/graalvm/options/OptionKey;
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.getOptionValue:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 4 /* compilationThreshold */
        start local 4 // int compilationThreshold
        12: .line 222
            ldc "root:interpreter"
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 223
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        14: goto 17
        15: .line 224
      StackMap locals: org.graalvm.compiler.truffle.test.MultiTierCompilationTest org.graalvm.compiler.truffle.runtime.OptimizedCallTarget org.graalvm.compiler.truffle.runtime.OptimizedCallTarget int int int
      StackMap stack:
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 223
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 5 /* i */
            iload 3 /* firstTierCompilationThreshold */
            if_icmplt 15
        end local 5 // int i
        18: .line 226
            ldc "callee:first-tier"
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        19: .line 227
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        20: goto 23
        21: .line 228
      StackMap locals:
      StackMap stack:
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 227
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 5 /* i */
            iload 4 /* compilationThreshold */
            if_icmplt 21
        end local 5 // int i
        24: .line 230
            ldc "callee:inlined"
            aload 2 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        25: .line 231
            return
        end local 4 // int compilationThreshold
        end local 3 // int firstTierCompilationThreshold
        end local 2 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget multiTierTarget
        end local 1 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget calleeTarget
        end local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   26     0                           this  Lorg/graalvm/compiler/truffle/test/MultiTierCompilationTest;
            9   26     1                   calleeTarget  Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
           10   26     2                multiTierTarget  Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
           11   26     3  firstTierCompilationThreshold  I
           12   26     4           compilationThreshold  I
           14   18     5                              i  I
           20   24     5                              i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testWhenCalleeCompiledFirst();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
         0: .line 236
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.CompileImmediately"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.BackgroundCompilation"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.MultiTier"
         1: .line 237
            ldc "true"
         2: .line 236
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         3: .line 237
            ldc "engine.FirstTierInliningPolicy"
            ldc "None"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.Splitting"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.FirstTierCompilationThreshold"
            ldc "100"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         4: .line 238
            ldc "engine.CompilationThreshold"
            ldc "1000"
         5: .line 237
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         6: .line 238
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
         7: .line 236
            invokevirtual org.graalvm.compiler.truffle.test.MultiTierCompilationTest.setupContext:(Lorg/graalvm/polyglot/Context;)V
         8: .line 240
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode
            dup
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode.<init>:()V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
            astore 1 /* calleeTarget */
        start local 1 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget calleeTarget
         9: .line 241
            aload 1 /* calleeTarget */
            getstatic org.graalvm.compiler.truffle.options.PolyglotCompilerOptions.FirstTierCompilationThreshold:Lorg/graalvm/options/OptionKey;
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.getOptionValue:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 2 /* firstTierCompilationThreshold */
        start local 2 // int firstTierCompilationThreshold
        10: .line 242
            aload 1 /* calleeTarget */
            getstatic org.graalvm.compiler.truffle.options.PolyglotCompilerOptions.CompilationThreshold:Lorg/graalvm/options/OptionKey;
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.getOptionValue:(Lorg/graalvm/options/OptionKey;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 3 /* compilationThreshold */
        start local 3 // int compilationThreshold
        11: .line 243
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithFrequentCalleeRootNode
            dup
            aload 1 /* calleeTarget */
            iload 2 /* firstTierCompilationThreshold */
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithFrequentCalleeRootNode.<init>:(Lcom/oracle/truffle/api/CallTarget;I)V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
            astore 4 /* multiTierTarget */
        start local 4 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget multiTierTarget
        12: .line 245
            ldc "root:interpreter"
            aload 4 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 246
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        14: goto 17
        15: .line 251
      StackMap locals: org.graalvm.compiler.truffle.test.MultiTierCompilationTest org.graalvm.compiler.truffle.runtime.OptimizedCallTarget int int org.graalvm.compiler.truffle.runtime.OptimizedCallTarget int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "iteration: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc "root:interpreter"
            aload 4 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 246
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 5 /* i */
            iload 2 /* firstTierCompilationThreshold */
            iconst_2
            isub
            if_icmplt 15
        end local 5 // int i
        18: .line 253
            ldc "callee:first-tier"
            aload 4 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        19: .line 254
            ldc 10
            iload 3 /* compilationThreshold */
            iload 2 /* firstTierCompilationThreshold */
            idiv
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        20: .line 256
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        21: goto 24
        22: .line 257
      StackMap locals:
      StackMap stack:
            aload 4 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        23: .line 256
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 5 /* i */
            iload 3 /* compilationThreshold */
            iload 2 /* firstTierCompilationThreshold */
            idiv
            if_icmplt 22
        end local 5 // int i
        25: .line 259
            ldc "callee:second-tier-root"
            aload 4 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        26: .line 261
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        27: goto 30
        28: .line 262
      StackMap locals:
      StackMap stack:
            aload 4 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        29: .line 261
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        30: iload 5 /* i */
            iload 3 /* compilationThreshold */
            if_icmplt 28
        end local 5 // int i
        31: .line 264
            ldc "callee:inlined"
            aload 4 /* multiTierTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        32: .line 265
            return
        end local 4 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget multiTierTarget
        end local 3 // int compilationThreshold
        end local 2 // int firstTierCompilationThreshold
        end local 1 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget calleeTarget
        end local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   33     0                           this  Lorg/graalvm/compiler/truffle/test/MultiTierCompilationTest;
            9   33     1                   calleeTarget  Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
           10   33     2  firstTierCompilationThreshold  I
           11   33     3           compilationThreshold  I
           12   33     4                multiTierTarget  Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
           14   18     5                              i  I
           21   25     5                              i  I
           27   31     5                              i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testLoop();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
         0: .line 270
            bipush 100
            istore 1 /* firstThreshold */
        start local 1 // int firstThreshold
         1: .line 271
            sipush 1000
            istore 2 /* secondThreshold */
        start local 2 // int secondThreshold
         2: .line 272
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.CompileImmediately"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.BackgroundCompilation"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.MultiTier"
         3: .line 273
            ldc "true"
         4: .line 272
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         5: .line 273
            ldc "engine.FirstTierInliningPolicy"
            ldc "None"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.Splitting"
            ldc "false"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "engine.FirstTierCompilationThreshold"
         6: .line 274
            iload 1 /* firstThreshold */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
         7: .line 273
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         8: .line 274
            ldc "engine.CompilationThreshold"
            iload 2 /* secondThreshold */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
         9: .line 272
            invokevirtual org.graalvm.compiler.truffle.test.MultiTierCompilationTest.setupContext:(Lorg/graalvm/polyglot/Context;)V
        10: .line 276
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierLoopBodyNode
            dup
            iload 1 /* firstThreshold */
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierLoopBodyNode.<init>:(I)V
            astore 3 /* body */
        start local 3 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierLoopBodyNode body
        11: .line 277
            new org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode
            dup
            aload 3 /* body */
            invokespecial org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode.<init>:(Lorg/graalvm/compiler/truffle/test/MultiTierCompilationTest$MultiTierLoopBodyNode;)V
            astore 4 /* rootNode */
        start local 4 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode rootNode
        12: .line 278
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 4 /* rootNode */
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            checkcast org.graalvm.compiler.truffle.runtime.OptimizedCallTarget
            astore 5 /* rootTarget */
        start local 5 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget rootTarget
        13: .line 280
            ldc "break:interpreter"
            aload 5 /* rootTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        14: .line 281
            ldc "break:first-tier"
            aload 5 /* rootTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        15: .line 282
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        16: goto 19
        17: .line 283
      StackMap locals: org.graalvm.compiler.truffle.test.MultiTierCompilationTest int int org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierLoopBodyNode org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode org.graalvm.compiler.truffle.runtime.OptimizedCallTarget int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "at iteration "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 6 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc "break:first-tier"
            aload 5 /* rootTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        18: .line 282
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 6 /* i */
            iload 2 /* secondThreshold */
            iload 1 /* firstThreshold */
            idiv
            iconst_2
            isub
            if_icmplt 17
        end local 6 // int i
        20: .line 285
            aload 5 /* rootTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 286
            ldc "break:second-tier"
            aload 5 /* rootTarget */
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call:([Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        22: .line 287
            ldc 9
            aload 4 /* rootNode */
            getfield org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode.firstTierCallCount:I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        23: .line 288
            return
        end local 5 // org.graalvm.compiler.truffle.runtime.OptimizedCallTarget rootTarget
        end local 4 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode rootNode
        end local 3 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierLoopBodyNode body
        end local 2 // int secondThreshold
        end local 1 // int firstThreshold
        end local 0 // org.graalvm.compiler.truffle.test.MultiTierCompilationTest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   24     0             this  Lorg/graalvm/compiler/truffle/test/MultiTierCompilationTest;
            1   24     1   firstThreshold  I
            2   24     2  secondThreshold  I
           11   24     3             body  Lorg/graalvm/compiler/truffle/test/MultiTierCompilationTest$MultiTierLoopBodyNode;
           12   24     4         rootNode  Lorg/graalvm/compiler/truffle/test/MultiTierCompilationTest$MultiTierWithLoopRootNode;
           13   24     5       rootTarget  Lorg/graalvm/compiler/truffle/runtime/OptimizedCallTarget;
           16   20     6                i  I
    RuntimeVisibleAnnotations: 
      org.junit.Test()
}
SourceFile: "MultiTierCompilationTest.java"
NestMembers:
  org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode  org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierLoopBodyNode  org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierRootNode  org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithFrequentCalleeRootNode  org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public MultiTierCalleeNode = org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierCalleeNode of org.graalvm.compiler.truffle.test.MultiTierCompilationTest
  private final MultiTierLoopBodyNode = org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierLoopBodyNode of org.graalvm.compiler.truffle.test.MultiTierCompilationTest
  private MultiTierRootNode = org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierRootNode of org.graalvm.compiler.truffle.test.MultiTierCompilationTest
  private MultiTierWithFrequentCalleeRootNode = org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithFrequentCalleeRootNode of org.graalvm.compiler.truffle.test.MultiTierCompilationTest
  private MultiTierWithLoopRootNode = org.graalvm.compiler.truffle.test.MultiTierCompilationTest$MultiTierWithLoopRootNode of org.graalvm.compiler.truffle.test.MultiTierCompilationTest
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context