public class org.graalvm.compiler.core.LIRGenerationPhase extends org.graalvm.compiler.lir.phases.LIRPhase<org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.core.LIRGenerationPhase
  super_class: org.graalvm.compiler.lir.phases.LIRPhase
{
  private static final org.graalvm.compiler.debug.DebugCounter instructionCounter;
    descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 43
            ldc Lorg/graalvm/compiler/core/LIRGenerationPhase;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.graalvm.compiler.core.LIRGenerationPhase.$assertionsDisabled:Z
         3: .line 59
            ldc "GeneratedLIRInstructions"
            invokestatic org.graalvm.compiler.debug.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
            putstatic org.graalvm.compiler.core.LIRGenerationPhase.instructionCounter:Lorg/graalvm/compiler/debug/DebugCounter;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.LIRGenerationPhase this
         0: .line 43
            aload 0 /* this */
            invokespecial org.graalvm.compiler.lir.phases.LIRPhase.<init>:()V
            return
        end local 0 // org.graalvm.compiler.core.LIRGenerationPhase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/core/LIRGenerationPhase;

  protected final void run(jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/core/LIRGenerationPhase$LIRGenerationContext;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // org.graalvm.compiler.core.LIRGenerationPhase this
        start local 1 // jdk.vm.ci.code.TargetDescription target
        start local 2 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        start local 3 // org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext context
         0: .line 63
            aload 3 /* context */
            getfield org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext.nodeLirBuilder:Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;
            astore 4 /* nodeLirBuilder */
        start local 4 // org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool nodeLirBuilder
         1: .line 64
            aload 3 /* context */
            getfield org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext.graph:Lorg/graalvm/compiler/nodes/StructuredGraph;
            astore 5 /* graph */
        start local 5 // org.graalvm.compiler.nodes.StructuredGraph graph
         2: .line 65
            aload 3 /* context */
            getfield org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext.schedule:Lorg/graalvm/compiler/nodes/StructuredGraph$ScheduleResult;
            astore 6 /* schedule */
        start local 6 // org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult schedule
         3: .line 66
            aload 2 /* lirGenRes */
            invokevirtual org.graalvm.compiler.lir.gen.LIRGenerationResult.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            invokevirtual org.graalvm.compiler.lir.LIR.getControlFlowGraph:()Lorg/graalvm/compiler/core/common/cfg/AbstractControlFlowGraph;
            invokeinterface org.graalvm.compiler.core.common.cfg.AbstractControlFlowGraph.getBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 7
      StackMap locals: org.graalvm.compiler.core.LIRGenerationPhase jdk.vm.ci.code.TargetDescription org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
         4: aload 10
            iload 8
            aaload
            astore 7 /* b */
        start local 7 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase b
         5: .line 67
            aload 4 /* nodeLirBuilder */
            aload 2 /* lirGenRes */
            aload 7 /* b */
            checkcast org.graalvm.compiler.nodes.cfg.Block
            aload 5 /* graph */
            aload 6 /* schedule */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult.getBlockToNodesMap:()Lorg/graalvm/compiler/core/common/cfg/BlockMap;
            invokestatic org.graalvm.compiler.core.LIRGenerationPhase.emitBlock:(Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/core/common/cfg/BlockMap;)V
        end local 7 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase b
         6: .line 66
            iinc 8 1
      StackMap locals:
      StackMap stack:
         7: iload 8
            iload 9
            if_icmplt 4
         8: .line 69
            aload 3 /* context */
            getfield org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext.lirGen:Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool;
            invokeinterface org.graalvm.compiler.lir.gen.LIRGeneratorTool.beforeRegisterAllocation:()V
         9: .line 70
            getstatic org.graalvm.compiler.core.LIRGenerationPhase.$assertionsDisabled:Z
            ifne 10
            aload 2 /* lirGenRes */
            invokevirtual org.graalvm.compiler.lir.gen.LIRGenerationResult.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            invokestatic org.graalvm.compiler.lir.ssa.SSAUtil.verifySSAForm:(Lorg/graalvm/compiler/lir/LIR;)Z
            ifne 10
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        10: .line 71
      StackMap locals: org.graalvm.compiler.core.LIRGenerationPhase jdk.vm.ci.code.TargetDescription org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult
      StackMap stack:
            return
        end local 6 // org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult schedule
        end local 5 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 4 // org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool nodeLirBuilder
        end local 3 // org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext context
        end local 2 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        end local 1 // jdk.vm.ci.code.TargetDescription target
        end local 0 // org.graalvm.compiler.core.LIRGenerationPhase this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lorg/graalvm/compiler/core/LIRGenerationPhase;
            0   11     1          target  Ljdk/vm/ci/code/TargetDescription;
            0   11     2       lirGenRes  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            0   11     3         context  Lorg/graalvm/compiler/core/LIRGenerationPhase$LIRGenerationContext;
            1   11     4  nodeLirBuilder  Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;
            2   11     5           graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            3   11     6        schedule  Lorg/graalvm/compiler/nodes/StructuredGraph$ScheduleResult;
            5    6     7               b  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
    MethodParameters:
           Name  Flags
      target     
      lirGenRes  
      context    

  private static void emitBlock(org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool, org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.nodes.cfg.Block, org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.core.common.cfg.BlockMap<java.util.List<org.graalvm.compiler.graph.Node>>);
    descriptor: (Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/core/common/cfg/BlockMap;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool nodeLirGen
        start local 1 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        start local 2 // org.graalvm.compiler.nodes.cfg.Block b
        start local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
        start local 4 // org.graalvm.compiler.core.common.cfg.BlockMap blockMap
         0: .line 74
            getstatic org.graalvm.compiler.core.LIRGenerationPhase.$assertionsDisabled:Z
            ifne 1
            aload 1 /* lirGenRes */
            aload 2 /* b */
            invokestatic org.graalvm.compiler.core.LIRGenerationPhase.isProcessed:(Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Block already processed "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* b */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 75
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.core.LIRGenerationPhase.$assertionsDisabled:Z
            ifne 2
            aload 1 /* lirGenRes */
            aload 2 /* b */
            invokestatic org.graalvm.compiler.core.LIRGenerationPhase.verifyPredecessors:(Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* nodeLirGen */
            aload 2 /* b */
            aload 3 /* graph */
            aload 4 /* blockMap */
            invokeinterface org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool.doBlock:(Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/core/common/cfg/BlockMap;)V
         3: .line 77
            getstatic org.graalvm.compiler.core.LIRGenerationPhase.instructionCounter:Lorg/graalvm/compiler/debug/DebugCounter;
            invokeinterface org.graalvm.compiler.debug.DebugCounter.isEnabled:()Z
            ifeq 5
         4: .line 78
            getstatic org.graalvm.compiler.core.LIRGenerationPhase.instructionCounter:Lorg/graalvm/compiler/debug/DebugCounter;
            aload 1 /* lirGenRes */
            invokevirtual org.graalvm.compiler.lir.gen.LIRGenerationResult.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            aload 2 /* b */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            i2l
            invokeinterface org.graalvm.compiler.debug.DebugCounter.add:(J)V
         5: .line 80
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.graalvm.compiler.core.common.cfg.BlockMap blockMap
        end local 3 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 2 // org.graalvm.compiler.nodes.cfg.Block b
        end local 1 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        end local 0 // org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool nodeLirGen
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0  nodeLirGen  Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;
            0    6     1   lirGenRes  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            0    6     2           b  Lorg/graalvm/compiler/nodes/cfg/Block;
            0    6     3       graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            0    6     4    blockMap  Lorg/graalvm/compiler/core/common/cfg/BlockMap<Ljava/util/List<Lorg/graalvm/compiler/graph/Node;>;>;
    Signature: (Lorg/graalvm/compiler/nodes/spi/NodeLIRBuilderTool;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/core/common/cfg/BlockMap<Ljava/util/List<Lorg/graalvm/compiler/graph/Node;>;>;)V
    MethodParameters:
            Name  Flags
      nodeLirGen  
      lirGenRes   
      b           
      graph       
      blockMap    

  private static boolean verifyPredecessors(org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.nodes.cfg.Block);
    descriptor: (Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        start local 1 // org.graalvm.compiler.nodes.cfg.Block block
         0: .line 83
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            checkcast org.graalvm.compiler.nodes.cfg.Block[]
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* pred */
        start local 2 // org.graalvm.compiler.nodes.cfg.Block pred
         2: .line 84
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopHeader:()Z
            ifeq 3
            aload 2 /* pred */
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.isLoopEnd:()Z
            ifne 4
         3: .line 85
      StackMap locals: org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.nodes.cfg.Block org.graalvm.compiler.nodes.cfg.Block int int org.graalvm.compiler.nodes.cfg.Block[]
      StackMap stack:
            getstatic org.graalvm.compiler.core.LIRGenerationPhase.$assertionsDisabled:Z
            ifne 4
            aload 0 /* lirGenRes */
            aload 2 /* pred */
            invokestatic org.graalvm.compiler.core.LIRGenerationPhase.isProcessed:(Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;)Z
            ifne 4
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Predecessor not yet processed "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* pred */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 2 // org.graalvm.compiler.nodes.cfg.Block pred
         4: .line 83
      StackMap locals: org.graalvm.compiler.lir.gen.LIRGenerationResult org.graalvm.compiler.nodes.cfg.Block top int int org.graalvm.compiler.nodes.cfg.Block[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 88
            iconst_1
            ireturn
        end local 1 // org.graalvm.compiler.nodes.cfg.Block block
        end local 0 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0  lirGenRes  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            0    7     1      block  Lorg/graalvm/compiler/nodes/cfg/Block;
            2    4     2       pred  Lorg/graalvm/compiler/nodes/cfg/Block;
    MethodParameters:
           Name  Flags
      lirGenRes  
      block      

  private static boolean isProcessed(org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.nodes.cfg.Block);
    descriptor: (Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/nodes/cfg/Block;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        start local 1 // org.graalvm.compiler.nodes.cfg.Block b
         0: .line 92
            aload 0 /* lirGenRes */
            invokevirtual org.graalvm.compiler.lir.gen.LIRGenerationResult.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            aload 1 /* b */
            invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.graalvm.compiler.nodes.cfg.Block b
        end local 0 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0  lirGenRes  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            0    2     1          b  Lorg/graalvm/compiler/nodes/cfg/Block;
    MethodParameters:
           Name  Flags
      lirGenRes  
      b          

  protected void run(jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.lir.gen.LIRGenerationResult, java.lang.Object);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Ljava/lang/Object;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            aload 3
            checkcast org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext
            invokevirtual org.graalvm.compiler.core.LIRGenerationPhase.run:(Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/core/LIRGenerationPhase$LIRGenerationContext;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lorg/graalvm/compiler/lir/phases/LIRPhase<Lorg/graalvm/compiler/core/LIRGenerationPhase$LIRGenerationContext;>;
SourceFile: "LIRGenerationPhase.java"
NestMembers:
  org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext
InnerClasses:
  public final LIRGenerationContext = org.graalvm.compiler.core.LIRGenerationPhase$LIRGenerationContext of org.graalvm.compiler.core.LIRGenerationPhase
  public ScheduleResult = org.graalvm.compiler.nodes.StructuredGraph$ScheduleResult of org.graalvm.compiler.nodes.StructuredGraph