public abstract class org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation extends org.graalvm.compiler.lir.asm.CompilationResultBuilder
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation
  super_class: org.graalvm.compiler.lir.asm.CompilationResultBuilder
{
  protected final org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config;
    descriptor: Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers;
    descriptor: Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final jdk.vm.ci.meta.MetaAccessProvider metaAccess;
    descriptor: Ljdk/vm/ci/meta/MetaAccessProvider;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  public void <init>(org.graalvm.compiler.core.common.spi.CodeGenProviders, org.graalvm.compiler.lir.framemap.FrameMap, org.graalvm.compiler.asm.Assembler, org.graalvm.compiler.lir.asm.DataBuilder, org.graalvm.compiler.lir.asm.FrameContext, org.graalvm.compiler.options.OptionValues, org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.code.CompilationResult, org.graalvm.compiler.hotspot.GraalHotSpotVMConfig, org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider);
    descriptor: (Lorg/graalvm/compiler/core/common/spi/CodeGenProviders;Lorg/graalvm/compiler/lir/framemap/FrameMap;Lorg/graalvm/compiler/asm/Assembler;Lorg/graalvm/compiler/lir/asm/DataBuilder;Lorg/graalvm/compiler/lir/asm/FrameContext;Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/code/CompilationResult;Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=11, args_size=11
        start local 0 // org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation this
        start local 1 // org.graalvm.compiler.core.common.spi.CodeGenProviders providers
        start local 2 // org.graalvm.compiler.lir.framemap.FrameMap frameMap
        start local 3 // org.graalvm.compiler.asm.Assembler asm
        start local 4 // org.graalvm.compiler.lir.asm.DataBuilder dataBuilder
        start local 5 // org.graalvm.compiler.lir.asm.FrameContext frameContext
        start local 6 // org.graalvm.compiler.options.OptionValues options
        start local 7 // org.graalvm.compiler.debug.DebugContext debug
        start local 8 // org.graalvm.compiler.code.CompilationResult compilationResult
        start local 9 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        start local 10 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
         0: .line 59
            aload 0 /* this */
            aload 1 /* providers */
            aload 2 /* frameMap */
            aload 3 /* asm */
            aload 4 /* dataBuilder */
            aload 5 /* frameContext */
            aload 6 /* options */
            aload 7 /* debug */
            aload 8 /* compilationResult */
            getstatic jdk.vm.ci.code.Register.None:Ljdk/vm/ci/code/Register;
            aconst_null
            invokespecial org.graalvm.compiler.lir.asm.CompilationResultBuilder.<init>:(Lorg/graalvm/compiler/core/common/spi/CodeGenProviders;Lorg/graalvm/compiler/lir/framemap/FrameMap;Lorg/graalvm/compiler/asm/Assembler;Lorg/graalvm/compiler/lir/asm/DataBuilder;Lorg/graalvm/compiler/lir/asm/FrameContext;Lorg/graalvm/compiler/options/OptionValues;Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/code/CompilationResult;Ljdk/vm/ci/code/Register;Lorg/graalvm/collections/EconomicMap;)V
         1: .line 60
            aload 0 /* this */
            aload 1 /* providers */
            invokeinterface org.graalvm.compiler.core.common.spi.CodeGenProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            putfield org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
         2: .line 61
            aload 0 /* this */
            aload 9 /* config */
            putfield org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.config:Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
         3: .line 62
            aload 0 /* this */
            aload 10 /* registers */
            putfield org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.registers:Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
         4: .line 63
            return
        end local 10 // org.graalvm.compiler.hotspot.meta.HotSpotRegistersProvider registers
        end local 9 // org.graalvm.compiler.hotspot.GraalHotSpotVMConfig config
        end local 8 // org.graalvm.compiler.code.CompilationResult compilationResult
        end local 7 // org.graalvm.compiler.debug.DebugContext debug
        end local 6 // org.graalvm.compiler.options.OptionValues options
        end local 5 // org.graalvm.compiler.lir.asm.FrameContext frameContext
        end local 4 // org.graalvm.compiler.lir.asm.DataBuilder dataBuilder
        end local 3 // org.graalvm.compiler.asm.Assembler asm
        end local 2 // org.graalvm.compiler.lir.framemap.FrameMap frameMap
        end local 1 // org.graalvm.compiler.core.common.spi.CodeGenProviders providers
        end local 0 // org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lorg/graalvm/compiler/truffle/compiler/hotspot/TruffleCallBoundaryInstrumentation;
            0    5     1          providers  Lorg/graalvm/compiler/core/common/spi/CodeGenProviders;
            0    5     2           frameMap  Lorg/graalvm/compiler/lir/framemap/FrameMap;
            0    5     3                asm  Lorg/graalvm/compiler/asm/Assembler;
            0    5     4        dataBuilder  Lorg/graalvm/compiler/lir/asm/DataBuilder;
            0    5     5       frameContext  Lorg/graalvm/compiler/lir/asm/FrameContext;
            0    5     6            options  Lorg/graalvm/compiler/options/OptionValues;
            0    5     7              debug  Lorg/graalvm/compiler/debug/DebugContext;
            0    5     8  compilationResult  Lorg/graalvm/compiler/code/CompilationResult;
            0    5     9             config  Lorg/graalvm/compiler/hotspot/GraalHotSpotVMConfig;
            0    5    10          registers  Lorg/graalvm/compiler/hotspot/meta/HotSpotRegistersProvider;
    MethodParameters:
                   Name  Flags
      providers          
      frameMap           
      asm                
      dataBuilder        
      frameContext       
      options            
      debug              
      compilationResult  
      config             
      registers          

  public org.graalvm.compiler.code.CompilationResult$CodeMark recordMark(org.graalvm.compiler.code.CompilationResult$MarkId);
    descriptor: (Lorg/graalvm/compiler/code/CompilationResult$MarkId;)Lorg/graalvm/compiler/code/CompilationResult$CodeMark;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation this
        start local 1 // org.graalvm.compiler.code.CompilationResult$MarkId id
         0: .line 67
            aload 0 /* this */
            aload 1 /* id */
            invokespecial org.graalvm.compiler.lir.asm.CompilationResultBuilder.recordMark:(Lorg/graalvm/compiler/code/CompilationResult$MarkId;)Lorg/graalvm/compiler/code/CompilationResult$CodeMark;
            astore 2 /* mark */
        start local 2 // org.graalvm.compiler.code.CompilationResult$CodeMark mark
         1: .line 68
            aload 1 /* id */
            getstatic org.graalvm.compiler.hotspot.HotSpotMarkId.VERIFIED_ENTRY:Lorg/graalvm/compiler/hotspot/HotSpotMarkId;
            if_acmpne 6
         2: .line 69
            invokestatic org.graalvm.compiler.truffle.common.TruffleCompilerRuntime.getRuntime:()Lorg/graalvm/compiler/truffle/common/TruffleCompilerRuntime;
            aload 0 /* this */
            getfield org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            ldc "org.graalvm.compiler.truffle.runtime.hotspot.HotSpotOptimizedCallTarget"
            invokeinterface org.graalvm.compiler.truffle.common.TruffleCompilerRuntime.resolveType:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljava/lang/String;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 3 /* optimizedCallTargetType */
        start local 3 // jdk.vm.ci.meta.ResolvedJavaType optimizedCallTargetType
         3: .line 70
            ldc "installedCode"
            aload 3 /* optimizedCallTargetType */
            invokestatic org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.getFieldOffset:(Ljava/lang/String;Ljdk/vm/ci/meta/ResolvedJavaType;)I
            istore 4 /* installedCodeOffset */
        start local 4 // int installedCodeOffset
         4: .line 71
            ldc "entryPoint"
            invokestatic org.graalvm.compiler.truffle.common.TruffleCompilerRuntime.getRuntime:()Lorg/graalvm/compiler/truffle/common/TruffleCompilerRuntime;
            aload 0 /* this */
            getfield org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            ldc Ljdk/vm/ci/code/InstalledCode;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokeinterface org.graalvm.compiler.truffle.common.TruffleCompilerRuntime.resolveType:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljava/lang/String;)Ljdk/vm/ci/meta/ResolvedJavaType;
            invokestatic org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.getFieldOffset:(Ljava/lang/String;Ljdk/vm/ci/meta/ResolvedJavaType;)I
            istore 5 /* entryPointOffset */
        start local 5 // int entryPointOffset
         5: .line 72
            aload 0 /* this */
            iload 4 /* installedCodeOffset */
            iload 5 /* entryPointOffset */
            invokevirtual org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation.injectTailCallCode:(II)V
        end local 5 // int entryPointOffset
        end local 4 // int installedCodeOffset
        end local 3 // jdk.vm.ci.meta.ResolvedJavaType optimizedCallTargetType
         6: .line 74
      StackMap locals: org.graalvm.compiler.code.CompilationResult$CodeMark
      StackMap stack:
            aload 2 /* mark */
            areturn
        end local 2 // org.graalvm.compiler.code.CompilationResult$CodeMark mark
        end local 1 // org.graalvm.compiler.code.CompilationResult$MarkId id
        end local 0 // org.graalvm.compiler.truffle.compiler.hotspot.TruffleCallBoundaryInstrumentation this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    7     0                     this  Lorg/graalvm/compiler/truffle/compiler/hotspot/TruffleCallBoundaryInstrumentation;
            0    7     1                       id  Lorg/graalvm/compiler/code/CompilationResult$MarkId;
            1    7     2                     mark  Lorg/graalvm/compiler/code/CompilationResult$CodeMark;
            3    6     3  optimizedCallTargetType  Ljdk/vm/ci/meta/ResolvedJavaType;
            4    6     4      installedCodeOffset  I
            5    6     5         entryPointOffset  I
    MethodParameters:
      Name  Flags
      id    

  private static int getFieldOffset(java.lang.String, jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljava/lang/String;Ljdk/vm/ci/meta/ResolvedJavaType;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // java.lang.String name
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType declaringType
         0: .line 78
            aload 1 /* declaringType */
            iconst_0
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getInstanceFields:(Z)[Ljdk/vm/ci/meta/ResolvedJavaField;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: java.lang.String jdk.vm.ci.meta.ResolvedJavaType top int int jdk.vm.ci.meta.ResolvedJavaField[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* field */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaField field
         2: .line 79
            aload 2 /* field */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.getName:()Ljava/lang/String;
            aload 0 /* name */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 80
            aload 2 /* field */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.getOffset:()I
            ireturn
        end local 2 // jdk.vm.ci.meta.ResolvedJavaField field
         4: .line 78
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 83
            new java.lang.NoSuchFieldError
            dup
            new java.lang.StringBuilder
            dup
            aload 1 /* declaringType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.toJavaName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.NoSuchFieldError.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType declaringType
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           name  Ljava/lang/String;
            0    7     1  declaringType  Ljdk/vm/ci/meta/ResolvedJavaType;
            2    4     2          field  Ljdk/vm/ci/meta/ResolvedJavaField;
    MethodParameters:
               Name  Flags
      name           
      declaringType  

  protected abstract void injectTailCallCode(int, int);
    descriptor: (II)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
                     Name  Flags
      installedCodeOffset  
      entryPointOffset     
}
SourceFile: "TruffleCallBoundaryInstrumentation.java"
InnerClasses:
  public CodeMark = org.graalvm.compiler.code.CompilationResult$CodeMark of org.graalvm.compiler.code.CompilationResult
  public abstract MarkId = org.graalvm.compiler.code.CompilationResult$MarkId of org.graalvm.compiler.code.CompilationResult
  public abstract Data = org.graalvm.compiler.code.DataSection$Data of org.graalvm.compiler.code.DataSection