public final class org.graalvm.compiler.core.common.alloc.ComputeBlockOrder
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.compiler.core.common.alloc.ComputeBlockOrder
  super_class: java.lang.Object
{
  private static final int INITIAL_WORKLIST_CAPACITY;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  private static final int PENALTY_VERSUS_UNSCHEDULED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  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 57
            ldc Lorg/graalvm/compiler/core/common/alloc/ComputeBlockOrder;
            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.common.alloc.ComputeBlockOrder.$assertionsDisabled:Z
         3: .line 69
            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.common.alloc.ComputeBlockOrder this
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.core.common.alloc.ComputeBlockOrder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/core/common/alloc/ComputeBlockOrder;

  public static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>[] computeLinearScanOrder(int, T);
    descriptor: (ILorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // int blockCount
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
         0: .line 77
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* order */
        start local 2 // java.util.List order
         1: .line 78
            new java.util.BitSet
            dup
            iload 0 /* blockCount */
            invokespecial java.util.BitSet.<init>:(I)V
            astore 3 /* visitedBlocks */
        start local 3 // java.util.BitSet visitedBlocks
         2: .line 79
            aload 1 /* startBlock */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.initializeWorklist:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/BitSet;)Ljava/util/PriorityQueue;
            astore 4 /* worklist */
        start local 4 // java.util.PriorityQueue worklist
         3: .line 80
            aload 2 /* order */
            aload 4 /* worklist */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.computeLinearScanOrder:(Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
         4: .line 81
            getstatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.$assertionsDisabled:Z
            ifne 5
            aload 2 /* order */
            iload 0 /* blockCount */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.checkOrder:(Ljava/util/List;I)Z
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 82
      StackMap locals: java.util.List java.util.BitSet java.util.PriorityQueue
      StackMap stack:
            aload 2 /* order */
            iconst_0
            anewarray org.graalvm.compiler.core.common.cfg.AbstractBlockBase
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
            areturn
        end local 4 // java.util.PriorityQueue worklist
        end local 3 // java.util.BitSet visitedBlocks
        end local 2 // java.util.List order
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
        end local 0 // int blockCount
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0     blockCount  I
            0    6     1     startBlock  TT;
            1    6     2          order  Ljava/util/List<TT;>;
            2    6     3  visitedBlocks  Ljava/util/BitSet;
            3    6     4       worklist  Ljava/util/PriorityQueue<TT;>;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(ITT;)[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
    MethodParameters:
            Name  Flags
      blockCount  
      startBlock  

  public static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>[] computeCodeEmittingOrder(int, T);
    descriptor: (ILorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // int blockCount
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
         0: .line 91
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* order */
        start local 2 // java.util.List order
         1: .line 92
            new java.util.BitSet
            dup
            iload 0 /* blockCount */
            invokespecial java.util.BitSet.<init>:(I)V
            astore 3 /* visitedBlocks */
        start local 3 // java.util.BitSet visitedBlocks
         2: .line 93
            aload 1 /* startBlock */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.initializeWorklist:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/BitSet;)Ljava/util/PriorityQueue;
            astore 4 /* worklist */
        start local 4 // java.util.PriorityQueue worklist
         3: .line 94
            aload 2 /* order */
            aload 4 /* worklist */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.computeCodeEmittingOrder:(Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
         4: .line 95
            getstatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.$assertionsDisabled:Z
            ifne 5
            aload 2 /* order */
            iload 0 /* blockCount */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.checkOrder:(Ljava/util/List;I)Z
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 96
      StackMap locals: java.util.List java.util.BitSet java.util.PriorityQueue
      StackMap stack:
            aload 2 /* order */
            iconst_0
            anewarray org.graalvm.compiler.core.common.cfg.AbstractBlockBase
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
            areturn
        end local 4 // java.util.PriorityQueue worklist
        end local 3 // java.util.BitSet visitedBlocks
        end local 2 // java.util.List order
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
        end local 0 // int blockCount
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0     blockCount  I
            0    6     1     startBlock  TT;
            1    6     2          order  Ljava/util/List<TT;>;
            2    6     3  visitedBlocks  Ljava/util/BitSet;
            3    6     4       worklist  Ljava/util/PriorityQueue<TT;>;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(ITT;)[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
    MethodParameters:
            Name  Flags
      blockCount  
      startBlock  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> void computeCodeEmittingOrder(java.util.List<T>, java.util.PriorityQueue<T>, java.util.BitSet);
    descriptor: (Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.util.List order
        start local 1 // java.util.PriorityQueue worklist
        start local 2 // java.util.BitSet visitedBlocks
         0: .line 103
            goto 3
         1: .line 104
      StackMap locals:
      StackMap stack:
            aload 1 /* worklist */
            invokevirtual java.util.PriorityQueue.poll:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.core.common.cfg.AbstractBlockBase
            astore 3 /* nextImportantPath */
        start local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase nextImportantPath
         2: .line 105
            aload 3 /* nextImportantPath */
            aload 0 /* order */
            aload 1 /* worklist */
            aload 2 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.addPathToCodeEmittingOrder:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
        end local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase nextImportantPath
         3: .line 103
      StackMap locals:
      StackMap stack:
            aload 1 /* worklist */
            invokevirtual java.util.PriorityQueue.isEmpty:()Z
            ifeq 1
         4: .line 107
            return
        end local 2 // java.util.BitSet visitedBlocks
        end local 1 // java.util.PriorityQueue worklist
        end local 0 // java.util.List order
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0              order  Ljava/util/List<TT;>;
            0    5     1           worklist  Ljava/util/PriorityQueue<TT;>;
            0    5     2      visitedBlocks  Ljava/util/BitSet;
            2    3     3  nextImportantPath  TT;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(Ljava/util/List<TT;>;Ljava/util/PriorityQueue<TT;>;Ljava/util/BitSet;)V
    MethodParameters:
               Name  Flags
      order          
      worklist       
      visitedBlocks  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> void computeLinearScanOrder(java.util.List<T>, java.util.PriorityQueue<T>, java.util.BitSet);
    descriptor: (Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.util.List order
        start local 1 // java.util.PriorityQueue worklist
        start local 2 // java.util.BitSet visitedBlocks
         0: .line 113
            goto 4
         1: .line 114
      StackMap locals:
      StackMap stack:
            aload 1 /* worklist */
            invokevirtual java.util.PriorityQueue.poll:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.core.common.cfg.AbstractBlockBase
            astore 3 /* nextImportantPath */
        start local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase nextImportantPath
         2: .line 116
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack:
            aload 3 /* nextImportantPath */
            aload 0 /* order */
            aload 1 /* worklist */
            aload 2 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.addPathToLinearScanOrder:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 3 /* nextImportantPath */
         3: .line 117
            aload 3 /* nextImportantPath */
            ifnonnull 2
        end local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase nextImportantPath
         4: .line 113
      StackMap locals:
      StackMap stack:
            aload 1 /* worklist */
            invokevirtual java.util.PriorityQueue.isEmpty:()Z
            ifeq 1
         5: .line 119
            return
        end local 2 // java.util.BitSet visitedBlocks
        end local 1 // java.util.PriorityQueue worklist
        end local 0 // java.util.List order
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0              order  Ljava/util/List<TT;>;
            0    6     1           worklist  Ljava/util/PriorityQueue<TT;>;
            0    6     2      visitedBlocks  Ljava/util/BitSet;
            2    4     3  nextImportantPath  TT;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(Ljava/util/List<TT;>;Ljava/util/PriorityQueue<TT;>;Ljava/util/BitSet;)V
    MethodParameters:
               Name  Flags
      order          
      worklist       
      visitedBlocks  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> java.util.PriorityQueue<T> initializeWorklist(T, java.util.BitSet);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/BitSet;)Ljava/util/PriorityQueue;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
        start local 1 // java.util.BitSet visitedBlocks
         0: .line 125
            new java.util.PriorityQueue
            dup
            bipush 10
            new org.graalvm.compiler.core.common.alloc.ComputeBlockOrder$BlockOrderComparator
            dup
            invokespecial org.graalvm.compiler.core.common.alloc.ComputeBlockOrder$BlockOrderComparator.<init>:()V
            invokespecial java.util.PriorityQueue.<init>:(ILjava/util/Comparator;)V
            astore 2 /* result */
        start local 2 // java.util.PriorityQueue result
         1: .line 126
            aload 2 /* result */
            aload 0 /* startBlock */
            invokevirtual java.util.PriorityQueue.add:(Ljava/lang/Object;)Z
            pop
         2: .line 127
            aload 1 /* visitedBlocks */
            aload 0 /* startBlock */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.set:(I)V
         3: .line 128
            aload 2 /* result */
            areturn
        end local 2 // java.util.PriorityQueue result
        end local 1 // java.util.BitSet visitedBlocks
        end local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0     startBlock  TT;
            0    4     1  visitedBlocks  Ljava/util/BitSet;
            1    4     2         result  Ljava/util/PriorityQueue<TT;>;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(TT;Ljava/util/BitSet;)Ljava/util/PriorityQueue<TT;>;
    MethodParameters:
               Name  Flags
      startBlock     
      visitedBlocks  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> T addPathToLinearScanOrder(T, java.util.List<T>, java.util.PriorityQueue<T>, java.util.BitSet);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=4
        start local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        start local 1 // java.util.List order
        start local 2 // java.util.PriorityQueue worklist
        start local 3 // java.util.BitSet visitedBlocks
         0: .line 135
            aload 0 /* block */
            aload 1 /* order */
            invokeinterface java.util.List.size:()I
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.setLinearScanNumber:(I)V
         1: .line 136
            aload 1 /* order */
            aload 0 /* block */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 137
            aload 0 /* block */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.findAndMarkMostLikelySuccessor:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/BitSet;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 4 /* mostLikelySuccessor */
        start local 4 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase mostLikelySuccessor
         3: .line 138
            aload 0 /* block */
            aload 2 /* worklist */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.enqueueSuccessors:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
         4: .line 139
            aload 4 /* mostLikelySuccessor */
            ifnull 17
         5: .line 140
            aload 4 /* mostLikelySuccessor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isLoopHeader:()Z
            ifne 16
            aload 4 /* mostLikelySuccessor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
            iconst_1
            if_icmple 16
         6: .line 143
            dconst_0
            dstore 5 /* unscheduledSum */
        start local 5 // double unscheduledSum
         7: .line 144
            aload 4 /* mostLikelySuccessor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 12
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.List java.util.PriorityQueue java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase double top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
         8: aload 10
            iload 8
            aaload
            astore 7 /* pred */
        start local 7 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase pred
         9: .line 145
            aload 7 /* pred */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
            iconst_m1
            if_icmpne 11
        10: .line 146
            dload 5 /* unscheduledSum */
            aload 7 /* pred */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getRelativeFrequency:()D
            dadd
            dstore 5 /* unscheduledSum */
        end local 7 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase pred
        11: .line 144
      StackMap locals:
      StackMap stack:
            iinc 8 1
      StackMap locals:
      StackMap stack:
        12: iload 8
            iload 9
            if_icmplt 8
        13: .line 150
            dload 5 /* unscheduledSum */
            aload 0 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getRelativeFrequency:()D
            ldc 10.0
            ddiv
            dcmpl
            ifle 16
        14: .line 152
            aload 3 /* visitedBlocks */
            aload 4 /* mostLikelySuccessor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.clear:(I)V
        15: .line 153
            aconst_null
            areturn
        end local 5 // double unscheduledSum
        16: .line 156
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.List java.util.PriorityQueue java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack:
            aload 4 /* mostLikelySuccessor */
            areturn
        17: .line 158
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase mostLikelySuccessor
        end local 3 // java.util.BitSet visitedBlocks
        end local 2 // java.util.PriorityQueue worklist
        end local 1 // java.util.List order
        end local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   18     0                block  TT;
            0   18     1                order  Ljava/util/List<TT;>;
            0   18     2             worklist  Ljava/util/PriorityQueue<TT;>;
            0   18     3        visitedBlocks  Ljava/util/BitSet;
            3   18     4  mostLikelySuccessor  TT;
            7   16     5       unscheduledSum  D
            9   11     7                 pred  TT;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(TT;Ljava/util/List<TT;>;Ljava/util/PriorityQueue<TT;>;Ljava/util/BitSet;)TT;
    MethodParameters:
               Name  Flags
      block          
      order          
      worklist       
      visitedBlocks  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> void addPathToCodeEmittingOrder(T, java.util.List<T>, java.util.PriorityQueue<T>, java.util.BitSet);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/List;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=4
        start local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase initialBlock
        start local 1 // java.util.List order
        start local 2 // java.util.PriorityQueue worklist
        start local 3 // java.util.BitSet visitedBlocks
         0: .line 165
            aload 0 /* initialBlock */
            astore 4 /* block */
        start local 4 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         1: .line 166
            goto 18
         2: .line 169
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack:
            aload 4 /* block */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.skipLoopHeader:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifne 6
         3: .line 172
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isLoopHeader:()Z
            ifeq 5
         4: .line 173
            aload 4 /* block */
            iconst_1
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.setAlign:(Z)V
         5: .line 175
      StackMap locals:
      StackMap stack:
            aload 4 /* block */
            aload 1 /* order */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.addBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/List;)V
         6: .line 178
      StackMap locals:
      StackMap stack:
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            astore 5 /* loop */
        start local 5 // org.graalvm.compiler.core.common.cfg.Loop loop
         7: .line 179
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isLoopEnd:()Z
            ifeq 15
            aload 5 /* loop */
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.skipLoopHeader:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifeq 15
         8: .line 183
            aload 5 /* loop */
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            aload 1 /* order */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.addBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/List;)V
         9: .line 188
            aload 5 /* loop */
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 14
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.List java.util.PriorityQueue java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.Loop top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
        10: aload 9
            iload 7
            aaload
            astore 6 /* successor */
        start local 6 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase successor
        11: .line 189
            aload 6 /* successor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
            if_icmpne 13
        12: .line 190
            aload 6 /* successor */
            iconst_1
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.setAlign:(Z)V
        end local 6 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase successor
        13: .line 188
      StackMap locals:
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        14: iload 7
            iload 8
            if_icmplt 10
        15: .line 195
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.List java.util.PriorityQueue java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.Loop
      StackMap stack:
            aload 4 /* block */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.findAndMarkMostLikelySuccessor:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/BitSet;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 6 /* mostLikelySuccessor */
        start local 6 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase mostLikelySuccessor
        16: .line 196
            aload 4 /* block */
            aload 2 /* worklist */
            aload 3 /* visitedBlocks */
            invokestatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.enqueueSuccessors:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
        17: .line 197
            aload 6 /* mostLikelySuccessor */
            astore 4 /* block */
        end local 6 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase mostLikelySuccessor
        end local 5 // org.graalvm.compiler.core.common.cfg.Loop loop
        18: .line 166
      StackMap locals:
      StackMap stack:
            aload 4 /* block */
            ifnonnull 2
        19: .line 199
            return
        end local 4 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 3 // java.util.BitSet visitedBlocks
        end local 2 // java.util.PriorityQueue worklist
        end local 1 // java.util.List order
        end local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase initialBlock
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   20     0         initialBlock  TT;
            0   20     1                order  Ljava/util/List<TT;>;
            0   20     2             worklist  Ljava/util/PriorityQueue<TT;>;
            0   20     3        visitedBlocks  Ljava/util/BitSet;
            1   20     4                block  TT;
            7   18     5                 loop  Lorg/graalvm/compiler/core/common/cfg/Loop<TT;>;
           11   13     6            successor  TT;
           16   18     6  mostLikelySuccessor  TT;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(TT;Ljava/util/List<TT;>;Ljava/util/PriorityQueue<TT;>;Ljava/util/BitSet;)V
    MethodParameters:
               Name  Flags
      initialBlock   
      order          
      worklist       
      visitedBlocks  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> void addBlock(T, java.util.List<T>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase header
        start local 1 // java.util.List order
         0: .line 205
            getstatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.$assertionsDisabled:Z
            ifne 1
            aload 1 /* order */
            aload 0 /* header */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            ldc "Cannot insert block twice"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 206
      StackMap locals:
      StackMap stack:
            aload 1 /* order */
            aload 0 /* header */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 207
            return
        end local 1 // java.util.List order
        end local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase header
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  header  TT;
            0    3     1   order  Ljava/util/List<TT;>;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(TT;Ljava/util/List<TT;>;)V
    MethodParameters:
        Name  Flags
      header  
      order   

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> T findAndMarkMostLikelySuccessor(T, java.util.BitSet);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/BitSet;)Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        start local 1 // java.util.BitSet visitedBlocks
         0: .line 213
            aconst_null
            astore 2 /* result */
        start local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase result
         1: .line 214
            aload 0 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 7
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* successor */
        start local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase successor
         3: .line 215
            getstatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.$assertionsDisabled:Z
            ifne 4
            aload 3 /* successor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getRelativeFrequency:()D
            dconst_0
            dcmpl
            ifge 4
            new java.lang.AssertionError
            dup
            ldc "Relative frequencies must be positive"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         4: .line 216
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
            aload 1 /* visitedBlocks */
            aload 3 /* successor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.get:(I)Z
            ifne 6
            aload 3 /* successor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
            aload 0 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoopDepth:()I
            if_icmplt 6
            aload 2 /* result */
            ifnull 5
            aload 3 /* successor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getRelativeFrequency:()D
            aload 2 /* result */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getRelativeFrequency:()D
            dcmpl
            iflt 6
         5: .line 217
      StackMap locals:
      StackMap stack:
            aload 3 /* successor */
            astore 2 /* result */
        end local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase successor
         6: .line 214
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         7: iload 4
            iload 5
            if_icmplt 2
         8: .line 220
            aload 2 /* result */
            ifnull 10
         9: .line 221
            aload 1 /* visitedBlocks */
            aload 2 /* result */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.set:(I)V
        10: .line 223
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase result
        end local 1 // java.util.BitSet visitedBlocks
        end local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0          block  TT;
            0   11     1  visitedBlocks  Ljava/util/BitSet;
            1   11     2         result  TT;
            3    6     3      successor  TT;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(TT;Ljava/util/BitSet;)TT;
    MethodParameters:
               Name  Flags
      block          
      visitedBlocks  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> void enqueueSuccessors(T, java.util.PriorityQueue<T>, java.util.BitSet);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/util/PriorityQueue;Ljava/util/BitSet;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        start local 1 // java.util.PriorityQueue worklist
        start local 2 // java.util.BitSet visitedBlocks
         0: .line 230
            aload 0 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.PriorityQueue java.util.BitSet top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
      StackMap stack:
         1: aload 6
            iload 4
            aaload
            astore 3 /* successor */
        start local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase successor
         2: .line 231
            aload 2 /* visitedBlocks */
            aload 3 /* successor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.get:(I)Z
            ifne 5
         3: .line 232
            aload 2 /* visitedBlocks */
            aload 3 /* successor */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.set:(I)V
         4: .line 233
            aload 1 /* worklist */
            aload 3 /* successor */
            invokevirtual java.util.PriorityQueue.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase successor
         5: .line 230
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 1
         7: .line 236
            return
        end local 2 // java.util.BitSet visitedBlocks
        end local 1 // java.util.PriorityQueue worklist
        end local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0          block  TT;
            0    8     1       worklist  Ljava/util/PriorityQueue<TT;>;
            0    8     2  visitedBlocks  Ljava/util/BitSet;
            2    5     3      successor  TT;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(TT;Ljava/util/PriorityQueue<TT;>;Ljava/util/BitSet;)V
    MethodParameters:
               Name  Flags
      block          
      worklist       
      visitedBlocks  

  private static <T extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>> boolean skipLoopHeader(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<T>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 243
            aload 0 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isLoopHeader:()Z
            ifeq 1
            aload 0 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.isLoopEnd:()Z
            ifne 1
            aload 0 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLoop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.numBackedges:()J
            lconst_1
            lcmp
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;
    Signature: <T:Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;>(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<TT;>;)Z
    MethodParameters:
       Name  Flags
      block  

  private static boolean checkOrder(java.util.List<? extends org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>>, );
    descriptor: (Ljava/util/List;I)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // java.util.List order
        start local 1 // int expectedBlockCount
         0: .line 250
            getstatic org.graalvm.compiler.core.common.alloc.ComputeBlockOrder.$assertionsDisabled:Z
            ifne 1
            aload 0 /* order */
            invokeinterface java.util.List.size:()I
            iload 1 /* expectedBlockCount */
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            ldc "Number of blocks in ordering (%d) does not match expected block count (%d)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* order */
            invokeinterface java.util.List.size:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 1 /* expectedBlockCount */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 251
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // int expectedBlockCount
        end local 0 // java.util.List order
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0               order  Ljava/util/List<+Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
            0    2     1  expectedBlockCount  I
    Signature: (Ljava/util/List<+Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;I)Z
    MethodParameters:
                    Name  Flags
      order               
      expectedBlockCount  
}
SourceFile: "ComputeBlockOrder.java"
NestMembers:
  org.graalvm.compiler.core.common.alloc.ComputeBlockOrder$BlockOrderComparator
InnerClasses:
  private BlockOrderComparator = org.graalvm.compiler.core.common.alloc.ComputeBlockOrder$BlockOrderComparator of org.graalvm.compiler.core.common.alloc.ComputeBlockOrder