class org.jruby.compiler.BlockJITTask extends org.jruby.compiler.JITCompiler$Task
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.jruby.compiler.BlockJITTask
  super_class: org.jruby.compiler.JITCompiler$Task
{
  private final java.lang.String className;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.jruby.runtime.MixedModeIRBlockBody body;
    descriptor: Lorg/jruby/runtime/MixedModeIRBlockBody;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String blockId;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String methodName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(org.jruby.compiler.JITCompiler, org.jruby.runtime.MixedModeIRBlockBody, java.lang.String);
    descriptor: (Lorg/jruby/compiler/JITCompiler;Lorg/jruby/runtime/MixedModeIRBlockBody;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=4
        start local 0 // org.jruby.compiler.BlockJITTask this
        start local 1 // org.jruby.compiler.JITCompiler jitCompiler
        start local 2 // org.jruby.runtime.MixedModeIRBlockBody body
        start local 3 // java.lang.String className
         0: .line 48
            aload 0 /* this */
            aload 1 /* jitCompiler */
            invokespecial org.jruby.compiler.JITCompiler$Task.<init>:(Lorg/jruby/compiler/JITCompiler;)V
         1: .line 49
            aload 0 /* this */
            aload 2 /* body */
            putfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
         2: .line 50
            aload 0 /* this */
            aload 3 /* className */
            putfield org.jruby.compiler.BlockJITTask.className:Ljava/lang/String;
         3: .line 51
            aload 0 /* this */
            aload 2 /* body */
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getName:()Ljava/lang/String;
            putfield org.jruby.compiler.BlockJITTask.blockId:Ljava/lang/String;
         4: .line 52
            aload 2 /* body */
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getIRScope:()Lorg/jruby/ir/IRScope;
            invokevirtual org.jruby.ir.IRScope.getNearestMethod:()Lorg/jruby/ir/IRMethod;
            astore 4 /* method */
        start local 4 // org.jruby.ir.IRMethod method
         5: .line 53
            aload 0 /* this */
            aload 4 /* method */
            ifnull 6
            aload 4 /* method */
            invokevirtual org.jruby.ir.IRMethod.getByteName:()Lorg/jruby/util/ByteList;
            invokevirtual org.jruby.util.ByteList.toString:()Ljava/lang/String;
            goto 7
      StackMap locals: org.jruby.compiler.BlockJITTask org.jruby.compiler.JITCompiler org.jruby.runtime.MixedModeIRBlockBody java.lang.String org.jruby.ir.IRMethod
      StackMap stack: org.jruby.compiler.BlockJITTask
         6: aconst_null
      StackMap locals: org.jruby.compiler.BlockJITTask org.jruby.compiler.JITCompiler org.jruby.runtime.MixedModeIRBlockBody java.lang.String org.jruby.ir.IRMethod
      StackMap stack: org.jruby.compiler.BlockJITTask java.lang.String
         7: putfield org.jruby.compiler.BlockJITTask.methodName:Ljava/lang/String;
         8: .line 54
            return
        end local 4 // org.jruby.ir.IRMethod method
        end local 3 // java.lang.String className
        end local 2 // org.jruby.runtime.MixedModeIRBlockBody body
        end local 1 // org.jruby.compiler.JITCompiler jitCompiler
        end local 0 // org.jruby.compiler.BlockJITTask this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lorg/jruby/compiler/BlockJITTask;
            0    9     1  jitCompiler  Lorg/jruby/compiler/JITCompiler;
            0    9     2         body  Lorg/jruby/runtime/MixedModeIRBlockBody;
            0    9     3    className  Ljava/lang/String;
            5    9     4       method  Lorg/jruby/ir/IRMethod;
    MethodParameters:
             Name  Flags
      jitCompiler  
      body         
      className    

  public void exec();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=9, args_size=1
        start local 0 // org.jruby.compiler.BlockJITTask this
         0: .line 59
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.jitCompiler:Lorg/jruby/compiler/JITCompiler;
            getfield org.jruby.compiler.JITCompiler.config:Lorg/jruby/RubyInstanceConfig;
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.className:Ljava/lang/String;
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.methodName:Ljava/lang/String;
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokestatic org.jruby.compiler.MethodJITTask.checkExcludedMethod:(Lorg/jruby/RubyInstanceConfig;Ljava/lang/String;Ljava/lang/String;Lorg/jruby/compiler/Compilable;)Ljava/lang/String;
            astore 1 /* excludeModuleName */
        start local 1 // java.lang.String excludeModuleName
         1: .line 60
            aload 1 /* excludeModuleName */
            ifnull 6
         2: .line 61
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            iconst_m1
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.setCallCount:(I)V
         3: .line 62
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.jitCompiler:Lorg/jruby/compiler/JITCompiler;
            getfield org.jruby.compiler.JITCompiler.config:Lorg/jruby/RubyInstanceConfig;
            invokevirtual org.jruby.RubyInstanceConfig.isJitLogging:()Z
            ifeq 5
         4: .line 63
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.blockId:Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            ldc "skipping block in "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* excludeModuleName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic org.jruby.compiler.JITCompiler.log:(Lorg/jruby/compiler/Compilable;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 65
      StackMap locals: java.lang.String
      StackMap stack:
            return
         6: .line 68
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getIRScope:()Lorg/jruby/ir/IRScope;
            invokestatic org.jruby.ast.util.SexpMaker.sha1:(Lorg/jruby/ir/IRScope;)Ljava/lang/String;
            astore 2 /* key */
        start local 2 // java.lang.String key
         7: .line 69
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.jitCompiler:Lorg/jruby/compiler/JITCompiler;
            getfield org.jruby.compiler.JITCompiler.runtime:Lorg/jruby/Ruby;
            astore 3 /* runtime */
        start local 3 // org.jruby.Ruby runtime
         8: .line 70
            new org.jruby.ir.targets.JVMVisitor
            dup
            aload 3 /* runtime */
            invokespecial org.jruby.ir.targets.JVMVisitor.<init>:(Lorg/jruby/Ruby;)V
            astore 4 /* visitor */
        start local 4 // org.jruby.ir.targets.JVMVisitor visitor
         9: .line 71
            new org.jruby.compiler.BlockJITClassGenerator
            dup
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.className:Ljava/lang/String;
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.blockId:Ljava/lang/String;
            aload 2 /* key */
            aload 3 /* runtime */
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            aload 4 /* visitor */
            invokespecial org.jruby.compiler.BlockJITClassGenerator.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/jruby/Ruby;Lorg/jruby/runtime/MixedModeIRBlockBody;Lorg/jruby/ir/targets/JVMVisitor;)V
            astore 5 /* generator */
        start local 5 // org.jruby.compiler.BlockJITClassGenerator generator
        10: .line 73
            new org.jruby.ir.targets.JVMVisitorMethodContext
            dup
            invokespecial org.jruby.ir.targets.JVMVisitorMethodContext.<init>:()V
            astore 6 /* context */
        start local 6 // org.jruby.ir.targets.JVMVisitorMethodContext context
        11: .line 74
            aload 5 /* generator */
            aload 6 /* context */
            invokevirtual org.jruby.compiler.BlockJITClassGenerator.compile:(Lorg/jruby/ir/targets/JVMVisitorMethodContext;)V
        12: .line 76
            aload 0 /* this */
            aload 5 /* generator */
            aload 4 /* visitor */
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getIRScope:()Lorg/jruby/ir/IRScope;
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.ensureInstrsReady:()Lorg/jruby/ir/interpreter/InterpreterContext;
            invokevirtual org.jruby.compiler.BlockJITTask.defineClass:(Lorg/jruby/compiler/JITClassGenerator;Lorg/jruby/ir/targets/JVMVisitor;Lorg/jruby/ir/IRScope;Lorg/jruby/ir/interpreter/InterpreterContext;)Ljava/lang/Class;
            astore 7 /* sourceClass */
        start local 7 // java.lang.Class sourceClass
        13: .line 77
            aload 7 /* sourceClass */
            ifnonnull 14
            return
        14: .line 80
      StackMap locals: org.jruby.compiler.BlockJITTask java.lang.String java.lang.String org.jruby.Ruby org.jruby.ir.targets.JVMVisitor org.jruby.compiler.BlockJITClassGenerator org.jruby.ir.targets.JVMVisitorMethodContext java.lang.Class
      StackMap stack:
            aload 6 /* context */
            invokevirtual org.jruby.ir.targets.JVMVisitorMethodContext.getVariableName:()Ljava/lang/String;
            astore 8 /* jittedName */
        start local 8 // java.lang.String jittedName
        15: .line 83
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
        16: .line 84
            new org.jruby.runtime.CompiledIRBlockBody
            dup
        17: .line 85
            getstatic org.jruby.compiler.JITCompiler.PUBLIC_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup;
            aload 7 /* sourceClass */
            aload 8 /* jittedName */
            getstatic org.jruby.ir.targets.JVMVisitor.CLOSURE_SIGNATURE:Lcom/headius/invokebinder/Signature;
            invokevirtual com.headius.invokebinder.Signature.type:()Ljava/lang/invoke/MethodType;
            invokevirtual java.lang.invoke.MethodHandles$Lookup.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
        18: .line 86
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getIRScope:()Lorg/jruby/ir/IRScope;
        19: .line 87
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getIRScope:()Lorg/jruby/ir/IRScope;
            checkcast org.jruby.ir.IRClosure
            invokevirtual org.jruby.ir.IRClosure.getSignature:()Lorg/jruby/runtime/Signature;
            invokevirtual org.jruby.runtime.Signature.encode:()J
        20: .line 84
            invokespecial org.jruby.runtime.CompiledIRBlockBody.<init>:(Ljava/lang/invoke/MethodHandle;Lorg/jruby/ir/IRScope;J)V
        21: .line 83
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.completeBuild:(Lorg/jruby/runtime/CompiledIRBlockBody;)V
        22: .line 88
            return
        end local 8 // java.lang.String jittedName
        end local 7 // java.lang.Class sourceClass
        end local 6 // org.jruby.ir.targets.JVMVisitorMethodContext context
        end local 5 // org.jruby.compiler.BlockJITClassGenerator generator
        end local 4 // org.jruby.ir.targets.JVMVisitor visitor
        end local 3 // org.jruby.Ruby runtime
        end local 2 // java.lang.String key
        end local 1 // java.lang.String excludeModuleName
        end local 0 // org.jruby.compiler.BlockJITTask this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   23     0               this  Lorg/jruby/compiler/BlockJITTask;
            1   23     1  excludeModuleName  Ljava/lang/String;
            7   23     2                key  Ljava/lang/String;
            8   23     3            runtime  Lorg/jruby/Ruby;
            9   23     4            visitor  Lorg/jruby/ir/targets/JVMVisitor;
           10   23     5          generator  Lorg/jruby/compiler/BlockJITClassGenerator;
           11   23     6            context  Lorg/jruby/ir/targets/JVMVisitorMethodContext;
           13   23     7        sourceClass  Ljava/lang/Class<*>;
           15   23     8         jittedName  Ljava/lang/String;
    Exceptions:
      throws java.lang.NoSuchMethodException, java.lang.IllegalAccessException

  protected java.lang.String getSourceFile();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.compiler.BlockJITTask this
         0: .line 92
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getFile:()Ljava/lang/String;
            areturn
        end local 0 // org.jruby.compiler.BlockJITTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/compiler/BlockJITTask;

  protected void logJitted();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.compiler.BlockJITTask this
         0: .line 97
            aload 0 /* this */
            ldc "block done jitting"
            iconst_0
            anewarray java.lang.Object
            invokevirtual org.jruby.compiler.BlockJITTask.logImpl:(Ljava/lang/String;[Ljava/lang/Object;)V
         1: .line 98
            return
        end local 0 // org.jruby.compiler.BlockJITTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/compiler/BlockJITTask;

  protected void logFailed(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.jruby.compiler.BlockJITTask this
        start local 1 // java.lang.Throwable ex
         0: .line 102
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "could not compile block; passes run: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            invokevirtual org.jruby.runtime.MixedModeIRBlockBody.getIRScope:()Lorg/jruby/ir/IRScope;
            invokevirtual org.jruby.ir.IRScope.getExecutedPasses:()Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* ex */
            aastore
            invokevirtual org.jruby.compiler.BlockJITTask.logImpl:(Ljava/lang/String;[Ljava/lang/Object;)V
         1: .line 103
            return
        end local 1 // java.lang.Throwable ex
        end local 0 // org.jruby.compiler.BlockJITTask this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/compiler/BlockJITTask;
            0    2     1    ex  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      ex    final

  protected void logImpl(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)V
    flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jruby.compiler.BlockJITTask this
        start local 1 // java.lang.String message
        start local 2 // java.lang.Object[] reason
         0: .line 107
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.body:Lorg/jruby/runtime/MixedModeIRBlockBody;
            aload 0 /* this */
            getfield org.jruby.compiler.BlockJITTask.blockId:Ljava/lang/String;
            aload 1 /* message */
            aload 2 /* reason */
            invokestatic org.jruby.compiler.JITCompiler.log:(Lorg/jruby/compiler/Compilable;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
         1: .line 108
            return
        end local 2 // java.lang.Object[] reason
        end local 1 // java.lang.String message
        end local 0 // org.jruby.compiler.BlockJITTask this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/jruby/compiler/BlockJITTask;
            0    2     1  message  Ljava/lang/String;
            0    2     2   reason  [Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      message  final
      reason   
}
SourceFile: "BlockJITTask.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  abstract Task = org.jruby.compiler.JITCompiler$Task of org.jruby.compiler.JITCompiler