public class org.graalvm.compiler.loop.phases.LoopUnswitchingPhase extends org.graalvm.compiler.loop.phases.ContextlessLoopPhase<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.LoopUnswitchingPhase
  super_class: org.graalvm.compiler.loop.phases.ContextlessLoopPhase
{
  private static final org.graalvm.compiler.debug.DebugCounter UNSWITCHED;
    descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.debug.DebugCounter UNSWITCH_CANDIDATES;
    descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.graalvm.compiler.debug.DebugCounter UNSWITCH_EARLY_REJECTS;
    descriptor: Lorg/graalvm/compiler/debug/DebugCounter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 39
            ldc "Unswitched"
            invokestatic org.graalvm.compiler.debug.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
            putstatic org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.UNSWITCHED:Lorg/graalvm/compiler/debug/DebugCounter;
         1: .line 40
            ldc "UnswitchCandidates"
            invokestatic org.graalvm.compiler.debug.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
            putstatic org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.UNSWITCH_CANDIDATES:Lorg/graalvm/compiler/debug/DebugCounter;
         2: .line 41
            ldc "UnswitchEarlyRejects"
            invokestatic org.graalvm.compiler.debug.Debug.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/DebugCounter;
            putstatic org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.UNSWITCH_EARLY_REJECTS:Lorg/graalvm/compiler/debug/DebugCounter;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.graalvm.compiler.loop.LoopPolicies);
    descriptor: (Lorg/graalvm/compiler/loop/LoopPolicies;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.loop.phases.LoopUnswitchingPhase this
        start local 1 // org.graalvm.compiler.loop.LoopPolicies policies
         0: .line 44
            aload 0 /* this */
            aload 1 /* policies */
            invokespecial org.graalvm.compiler.loop.phases.ContextlessLoopPhase.<init>:(Lorg/graalvm/compiler/loop/LoopPolicies;)V
         1: .line 45
            return
        end local 1 // org.graalvm.compiler.loop.LoopPolicies policies
        end local 0 // org.graalvm.compiler.loop.phases.LoopUnswitchingPhase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/graalvm/compiler/loop/phases/LoopUnswitchingPhase;
            0    2     1  policies  Lorg/graalvm/compiler/loop/LoopPolicies;
    MethodParameters:
          Name  Flags
      policies  

  protected void run(org.graalvm.compiler.nodes.StructuredGraph);
    descriptor: (Lorg/graalvm/compiler/nodes/StructuredGraph;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.graalvm.compiler.loop.phases.LoopUnswitchingPhase this
        start local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
         0: .line 49
            aload 1 /* graph */
            invokevirtual org.graalvm.compiler.nodes.StructuredGraph.hasLoops:()Z
            ifeq 20
         1: .line 52
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* unswitched */
        start local 2 // boolean unswitched
         2: .line 53
            new org.graalvm.compiler.loop.LoopsData
            dup
            aload 1 /* graph */
            invokespecial org.graalvm.compiler.loop.LoopsData.<init>:(Lorg/graalvm/compiler/nodes/StructuredGraph;)V
            astore 3 /* dataUnswitch */
        start local 3 // org.graalvm.compiler.loop.LoopsData dataUnswitch
         3: .line 54
            aload 3 /* dataUnswitch */
            invokevirtual org.graalvm.compiler.loop.LoopsData.outerFirst:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 18
      StackMap locals: org.graalvm.compiler.loop.phases.LoopUnswitchingPhase org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.loop.LoopsData top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.loop.LoopEx
            astore 4 /* loop */
        start local 4 // org.graalvm.compiler.loop.LoopEx loop
         5: .line 55
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.getPolicies:()Lorg/graalvm/compiler/loop/LoopPolicies;
            aload 4 /* loop */
            invokeinterface org.graalvm.compiler.loop.LoopPolicies.shouldTryUnswitch:(Lorg/graalvm/compiler/loop/LoopEx;)Z
            ifeq 17
         6: .line 56
            aload 4 /* loop */
            invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.findUnswitchable:(Lorg/graalvm/compiler/loop/LoopEx;)Ljava/util/List;
            astore 6 /* controlSplits */
        start local 6 // java.util.List controlSplits
         7: .line 57
            aload 6 /* controlSplits */
            ifnull 18
         8: .line 58
            getstatic org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.UNSWITCH_CANDIDATES:Lorg/graalvm/compiler/debug/DebugCounter;
            invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()V
         9: .line 59
            aload 0 /* this */
            invokevirtual org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.getPolicies:()Lorg/graalvm/compiler/loop/LoopPolicies;
            aload 4 /* loop */
            aload 6 /* controlSplits */
            invokeinterface org.graalvm.compiler.loop.LoopPolicies.shouldUnswitch:(Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List;)Z
            ifeq 18
        10: .line 60
            invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
            ifeq 12
        11: .line 61
            aload 4 /* loop */
            aload 6 /* controlSplits */
            invokestatic org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.logUnswitch:(Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List;)V
        12: .line 63
      StackMap locals: org.graalvm.compiler.loop.phases.LoopUnswitchingPhase org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.loop.LoopsData org.graalvm.compiler.loop.LoopEx java.util.Iterator java.util.List
      StackMap stack:
            aload 4 /* loop */
            aload 6 /* controlSplits */
            invokestatic org.graalvm.compiler.loop.phases.LoopTransformations.unswitch:(Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List;)V
        13: .line 64
            iconst_2
            aload 1 /* graph */
            ldc "After unswitch %s"
            aload 6 /* controlSplits */
            invokestatic org.graalvm.compiler.debug.Debug.dump:(ILjava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        14: .line 65
            getstatic org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.UNSWITCHED:Lorg/graalvm/compiler/debug/DebugCounter;
            invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()V
        15: .line 66
            iconst_1
            istore 2 /* unswitched */
        16: .line 67
            goto 19
        end local 6 // java.util.List controlSplits
        17: .line 71
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.loop.phases.LoopUnswitchingPhase.UNSWITCH_EARLY_REJECTS:Lorg/graalvm/compiler/debug/DebugCounter;
            invokeinterface org.graalvm.compiler.debug.DebugCounter.increment:()V
        end local 4 // org.graalvm.compiler.loop.LoopEx loop
        18: .line 54
      StackMap locals: org.graalvm.compiler.loop.phases.LoopUnswitchingPhase org.graalvm.compiler.nodes.StructuredGraph int org.graalvm.compiler.loop.LoopsData top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 3 // org.graalvm.compiler.loop.LoopsData dataUnswitch
        19: .line 74
      StackMap locals: org.graalvm.compiler.loop.phases.LoopUnswitchingPhase org.graalvm.compiler.nodes.StructuredGraph int
      StackMap stack:
            iload 2 /* unswitched */
            ifne 1
        end local 2 // boolean unswitched
        20: .line 76
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.compiler.nodes.StructuredGraph graph
        end local 0 // org.graalvm.compiler.loop.phases.LoopUnswitchingPhase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0           this  Lorg/graalvm/compiler/loop/phases/LoopUnswitchingPhase;
            0   21     1          graph  Lorg/graalvm/compiler/nodes/StructuredGraph;
            2   20     2     unswitched  Z
            3   19     3   dataUnswitch  Lorg/graalvm/compiler/loop/LoopsData;
            5   18     4           loop  Lorg/graalvm/compiler/loop/LoopEx;
            7   17     6  controlSplits  Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
    MethodParameters:
       Name  Flags
      graph  

  private static void logUnswitch(org.graalvm.compiler.loop.LoopEx, java.util.List<org.graalvm.compiler.nodes.ControlSplitNode>);
    descriptor: (Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // org.graalvm.compiler.loop.LoopEx loop
        start local 1 // java.util.List controlSplits
         0: .line 79
            new java.lang.StringBuilder
            dup
            ldc "Unswitching "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         1: .line 80
            aload 2 /* sb */
            aload 0 /* loop */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " at "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 81
            aload 1 /* controlSplits */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 12
      StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.ControlSplitNode
            astore 3 /* controlSplit */
        start local 3 // org.graalvm.compiler.nodes.ControlSplitNode controlSplit
         4: .line 82
            aload 2 /* sb */
            aload 3 /* controlSplit */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 83
            aload 3 /* controlSplit */
            invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.successors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.iterator:()Ljava/util/Iterator;
            astore 5 /* it */
        start local 5 // java.util.Iterator it
         6: .line 84
            goto 10
         7: .line 85
      StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List java.lang.StringBuilder org.graalvm.compiler.nodes.ControlSplitNode java.util.Iterator java.util.Iterator
      StackMap stack:
            aload 2 /* sb */
            aload 3 /* controlSplit */
            aload 5 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.AbstractBeginNode
            invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.probability:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)D
            invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
            pop
         8: .line 86
            aload 5 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 10
         9: .line 87
            aload 2 /* sb */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 84
      StackMap locals:
      StackMap stack:
            aload 5 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        11: .line 90
            aload 2 /* sb */
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.util.Iterator it
        end local 3 // org.graalvm.compiler.nodes.ControlSplitNode controlSplit
        12: .line 81
      StackMap locals: org.graalvm.compiler.loop.LoopEx java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        13: .line 92
            ldc "%s"
            aload 2 /* sb */
            invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;Ljava/lang/Object;)V
        14: .line 93
            return
        end local 2 // java.lang.StringBuilder sb
        end local 1 // java.util.List controlSplits
        end local 0 // org.graalvm.compiler.loop.LoopEx loop
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   15     0           loop  Lorg/graalvm/compiler/loop/LoopEx;
            0   15     1  controlSplits  Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;
            1   15     2             sb  Ljava/lang/StringBuilder;
            4   12     3   controlSplit  Lorg/graalvm/compiler/nodes/ControlSplitNode;
            6   12     5             it  Ljava/util/Iterator<Lorg/graalvm/compiler/graph/Node;>;
    Signature: (Lorg/graalvm/compiler/loop/LoopEx;Ljava/util/List<Lorg/graalvm/compiler/nodes/ControlSplitNode;>;)V
    MethodParameters:
               Name  Flags
      loop           
      controlSplits  

  public float codeSizeIncrease();
    descriptor: ()F
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.loop.phases.LoopUnswitchingPhase this
         0: .line 97
            ldc 10.0
            freturn
        end local 0 // org.graalvm.compiler.loop.phases.LoopUnswitchingPhase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/loop/phases/LoopUnswitchingPhase;
}
Signature: Lorg/graalvm/compiler/loop/phases/ContextlessLoopPhase<Lorg/graalvm/compiler/loop/LoopPolicies;>;
SourceFile: "LoopUnswitchingPhase.java"