public class org.graalvm.compiler.loop.phases.LoopFullUnrollPhase extends org.graalvm.compiler.loop.phases.LoopPhase<org.graalvm.compiler.loop.LoopPolicies>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.loop.phases.LoopFullUnrollPhase
  super_class: org.graalvm.compiler.loop.phases.LoopPhase
{
  private static final org.graalvm.compiler.debug.CounterKey FULLY_UNROLLED_LOOPS;
    descriptor: Lorg/graalvm/compiler/debug/CounterKey;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final java.util.Comparator<org.graalvm.compiler.loop.LoopEx> LOOP_COMPARATOR;
    descriptor: Ljava/util/Comparator;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Comparator<Lorg/graalvm/compiler/loop/LoopEx;>;

  private final org.graalvm.compiler.phases.common.CanonicalizerPhase canonicalizer;
    descriptor: Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 50
            ldc "FullUnrolls"
            invokestatic org.graalvm.compiler.debug.DebugContext.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/CounterKey;
            putstatic org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.FULLY_UNROLLED_LOOPS:Lorg/graalvm/compiler/debug/CounterKey;
         1: .line 53
            invokedynamic applyAsDouble()Ljava/util/function/ToDoubleFunction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)D
                  org/graalvm/compiler/loop/phases/LoopFullUnrollPhase.lambda$0(Lorg/graalvm/compiler/loop/LoopEx;)D (6)
                  (Lorg/graalvm/compiler/loop/LoopEx;)D
            astore 0 /* loopFreq */
        start local 0 // java.util.function.ToDoubleFunction loopFreq
         2: .line 54
            invokedynamic applyAsInt()Ljava/util/function/ToIntFunction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)I
                  org/graalvm/compiler/loop/phases/LoopFullUnrollPhase.lambda$1(Lorg/graalvm/compiler/loop/LoopEx;)I (6)
                  (Lorg/graalvm/compiler/loop/LoopEx;)I
            astore 1 /* loopDepth */
        start local 1 // java.util.function.ToIntFunction loopDepth
         3: .line 55
            aload 0 /* loopFreq */
            invokestatic java.util.Comparator.comparingDouble:(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
            aload 1 /* loopDepth */
            invokeinterface java.util.Comparator.thenComparingInt:(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
            invokeinterface java.util.Comparator.reversed:()Ljava/util/Comparator;
            putstatic org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.LOOP_COMPARATOR:Ljava/util/Comparator;
        end local 1 // java.util.function.ToIntFunction loopDepth
        end local 0 // java.util.function.ToDoubleFunction loopFreq
         4: .line 56
            return
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            2    4     0   loopFreq  Ljava/util/function/ToDoubleFunction<Lorg/graalvm/compiler/loop/LoopEx;>;
            3    4     1  loopDepth  Ljava/util/function/ToIntFunction<Lorg/graalvm/compiler/loop/LoopEx;>;

  public void <init>(org.graalvm.compiler.phases.common.CanonicalizerPhase, org.graalvm.compiler.loop.LoopPolicies);
    descriptor: (Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;Lorg/graalvm/compiler/loop/LoopPolicies;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.graalvm.compiler.loop.phases.LoopFullUnrollPhase this
        start local 1 // org.graalvm.compiler.phases.common.CanonicalizerPhase canonicalizer
        start local 2 // org.graalvm.compiler.loop.LoopPolicies policies
         0: .line 61
            aload 0 /* this */
            aload 2 /* policies */
            invokespecial org.graalvm.compiler.loop.phases.LoopPhase.<init>:(Lorg/graalvm/compiler/loop/LoopPolicies;)V
         1: .line 62
            aload 0 /* this */
            aload 1 /* canonicalizer */
            putfield org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.canonicalizer:Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
         2: .line 63
            return
        end local 2 // org.graalvm.compiler.loop.LoopPolicies policies
        end local 1 // org.graalvm.compiler.phases.common.CanonicalizerPhase canonicalizer
        end local 0 // org.graalvm.compiler.loop.phases.LoopFullUnrollPhase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/graalvm/compiler/loop/phases/LoopFullUnrollPhase;
            0    3     1  canonicalizer  Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            0    3     2       policies  Lorg/graalvm/compiler/loop/LoopPolicies;
    MethodParameters:
               Name  Flags
      canonicalizer  
      policies       

  protected void run(org.graalvm.compiler.nodes.StructuredGraph, org.graalvm.compiler.nodes.spi.CoreProviders);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/spi/CoreProviders;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.graalvm.compiler.loop.phases.LoopFullUnrollPhase this
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
        start local 2 // org.graalvm.compiler.nodes.spi.CoreProviders context
         0: .line 67
            getstatic org.graalvm.compiler.core.common.GraalOptions.FullUnroll:Lorg/graalvm/compiler/options/OptionKey;
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 23
         1: .line 68
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            astore 3 /* debug */
        start local 3 // org.graalvm.compiler.debug.DebugContext debug
         2: .line 69
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasLoops:()Z
            ifeq 23
         3: .line 71
            iconst_0
            istore 5 /* applications */
        start local 5 // int applications
         4: .line 73
      StackMap locals: org.graalvm.compiler.loop.phases.LoopFullUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.debug.DebugContext top int
      StackMap stack:
            iconst_0
            istore 4 /* peeled */
        start local 4 // boolean peeled
         5: .line 74
            new org.graalvm.compiler.loop.LoopsData
            dup
            aload 1 /* graph */
            invokespecial org.graalvm.compiler.loop.LoopsData.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
            astore 6 /* dataCounted */
        start local 6 // org.graalvm.compiler.loop.LoopsData dataCounted
         6: .line 75
            aload 6 /* dataCounted */
            invokevirtual org.graalvm.compiler.loop.LoopsData.detectedCountedLoops:()V
         7: .line 76
            aload 6 /* dataCounted */
            invokevirtual org.graalvm.compiler.loop.LoopsData.countedLoops:()Ljava/util/List;
            astore 7 /* countedLoops */
        start local 7 // java.util.List countedLoops
         8: .line 77
            aload 7 /* countedLoops */
            getstatic org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.LOOP_COMPARATOR:Ljava/util/Comparator;
            invokeinterface java.util.List.sort:(Ljava/util/Comparator;)V
         9: .line 78
            aload 7 /* countedLoops */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 18
      StackMap locals: org.graalvm.compiler.loop.phases.LoopFullUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.debug.DebugContext int int org.graalvm.compiler.loop.LoopsData java.util.List top java.util.Iterator
      StackMap stack:
        10: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.loop.LoopEx
            astore 8 /* loop */
        start local 8 // org.graalvm.compiler.loop.LoopEx loop
        11: .line 79
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.getPolicies:()Lorg/graalvm/compiler/loop/LoopPolicies;
            aload 8 /* loop */
            invokeinterface org.graalvm.compiler.loop.LoopPolicies.shouldFullUnroll:(Lorg/graalvm/compiler/loop/LoopEx;)Z
            ifeq 18
        12: .line 80
            aload 3 /* debug */
            ldc "FullUnroll %s"
            aload 8 /* loop */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(Ljava/lang/String;Ljava/lang/Object;)V
        13: .line 81
            aload 8 /* loop */
            aload 2 /* context */
            aload 0 /* this */
            getfield org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.canonicalizer:Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;
            invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.fullUnroll:(Lorg/graalvm/compiler/loop/LoopEx;Lorg/graalvm/compiler/nodes/spi/CoreProviders;Lorg/graalvm/compiler/phases/common/CanonicalizerPhase;)V
        14: .line 82
            getstatic org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.FULLY_UNROLLED_LOOPS:Lorg/graalvm/compiler/debug/CounterKey;
            aload 3 /* debug */
            invokeinterface org.graalvm.compiler.debug.CounterKey.increment:(Lorg/graalvm/compiler/debug/DebugContext;)V
        15: .line 83
            aload 3 /* debug */
            iconst_4
            aload 1 /* graph */
            ldc "FullUnroll %s"
            aload 8 /* loop */
            invokevirtual org.graalvm.compiler.debug.DebugContext.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        16: .line 84
            iconst_1
            istore 4 /* peeled */
        17: .line 85
            goto 19
        end local 8 // org.graalvm.compiler.loop.LoopEx loop
        18: .line 78
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        19: .line 88
      StackMap locals: org.graalvm.compiler.loop.phases.LoopFullUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders org.graalvm.compiler.debug.DebugContext int int org.graalvm.compiler.loop.LoopsData java.util.List
      StackMap stack:
            aload 6 /* dataCounted */
            invokevirtual org.graalvm.compiler.loop.LoopsData.deleteUnusedNodes:()V
        20: .line 89
            iinc 5 /* applications */ 1
        end local 7 // java.util.List countedLoops
        end local 6 // org.graalvm.compiler.loop.LoopsData dataCounted
        21: .line 90
            iload 4 /* peeled */
            ifeq 23
            iload 5 /* applications */
            getstatic org.graalvm.compiler.loop.phases.LoopFullUnrollPhase$Options.FullUnrollMaxApplication:Lorg/graalvm/compiler/options/OptionKey;
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.getOptions:()Lorg/graalvm/compiler/options/OptionValues;
            invokevirtual org.graalvm.compiler.options.OptionKey.getValue:(Lorg/graalvm/compiler/options/OptionValues;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
        22: .line 72
            if_icmplt 4
        end local 5 // int applications
        end local 4 // boolean peeled
        end local 3 // org.graalvm.compiler.debug.DebugContext debug
        23: .line 93
      StackMap locals: org.graalvm.compiler.loop.phases.LoopFullUnrollPhase org.graalvm.compiler.nodes.StructuredGraph org.graalvm.compiler.nodes.spi.CoreProviders
      StackMap stack:
            return
        end local 2 // org.graalvm.compiler.nodes.spi.CoreProviders context
        end local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 0 // org.graalvm.compiler.loop.phases.LoopFullUnrollPhase this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   24     0          this  Lorg/graalvm/compiler/loop/phases/LoopFullUnrollPhase;
            0   24     1         graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            0   24     2       context  Lorg/graalvm/compiler/nodes/spi/CoreProviders;
            2   23     3         debug  Lorg/graalvm/compiler/debug/DebugContext;
            5   23     4        peeled  Z
            4   23     5  applications  I
            6   21     6   dataCounted  Lorg/graalvm/compiler/loop/LoopsData;
            8   21     7  countedLoops  Ljava/util/List<Lorg/graalvm/compiler/loop/LoopEx;>;
           11   18     8          loop  Lorg/graalvm/compiler/loop/LoopEx;
    MethodParameters:
         Name  Flags
      graph    
      context  

  public boolean checkContract();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.phases.LoopFullUnrollPhase this
         0: .line 97
            iconst_0
            ireturn
        end local 0 // org.graalvm.compiler.loop.phases.LoopFullUnrollPhase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/phases/LoopFullUnrollPhase;

  protected void run(org.graalvm.compiler.nodes.StructuredGraph, java.lang.Object);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;Ljava/lang/Object;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast org.graalvm.compiler.nodes.spi.CoreProviders
            invokevirtual org.graalvm.compiler.loop.phases.LoopFullUnrollPhase.run:(Lorg/graalvm/compiler/nodes/StructuredGraph;Lorg/graalvm/compiler/nodes/spi/CoreProviders;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static double lambda$0(org.graalvm.compiler.loop.LoopEx);
    descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)D
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx e
         0: .line 53
            aload 0 /* e */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getHeader:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            checkcast org.graalvm.compiler.nodes.cfg.Block
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getFirstPredecessor:()Lorg/graalvm/compiler/nodes/cfg/Block;
            invokevirtual org.graalvm.compiler.nodes.cfg.Block.getRelativeFrequency:()D
            dreturn
        end local 0 // org.graalvm.compiler.loop.LoopEx e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Lorg/graalvm/compiler/loop/LoopEx;

  private static int lambda$1(org.graalvm.compiler.loop.LoopEx);
    descriptor: (Lorg/graalvm/compiler/loop/LoopEx;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.LoopEx e
         0: .line 54
            aload 0 /* e */
            invokevirtual org.graalvm.compiler.loop.LoopEx.loop:()Lorg/graalvm/compiler/core/common/cfg/Loop;
            invokevirtual org.graalvm.compiler.core.common.cfg.Loop.getDepth:()I
            ireturn
        end local 0 // org.graalvm.compiler.loop.LoopEx e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Lorg/graalvm/compiler/loop/LoopEx;
}
Signature: Lorg/graalvm/compiler/loop/phases/LoopPhase<Lorg/graalvm/compiler/loop/LoopPolicies;>;
SourceFile: "LoopFullUnrollPhase.java"
NestMembers:
  org.graalvm.compiler.loop.phases.LoopFullUnrollPhase$Options
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Options = org.graalvm.compiler.loop.phases.LoopFullUnrollPhase$Options of org.graalvm.compiler.loop.phases.LoopFullUnrollPhase