public class org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache implements java.util.function.ToDoubleFunction<org.graalvm.compiler.nodes.FixedNode>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache
  super_class: java.lang.Object
{
  private static final org.graalvm.compiler.debug.CounterKey computeNodeProbabilityCounter;
    descriptor: Lorg/graalvm/compiler/debug/CounterKey;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final org.graalvm.util.EconomicMap<org.graalvm.compiler.nodes.FixedNode, java.lang.Double> cache;
    descriptor: Lorg/graalvm/util/EconomicMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/graalvm/util/EconomicMap<Lorg/graalvm/compiler/nodes/FixedNode;Ljava/lang/Double;>;

  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 47
            ldc Lorg/graalvm/compiler/phases/graph/FixedNodeProbabilityCache;
            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.phases.graph.FixedNodeProbabilityCache.$assertionsDisabled:Z
         3: .line 49
            ldc "ComputeNodeProbability"
            invokestatic org.graalvm.compiler.debug.DebugContext.counter:(Ljava/lang/CharSequence;)Lorg/graalvm/compiler/debug/CounterKey;
            putstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.computeNodeProbabilityCounter:Lorg/graalvm/compiler/debug/CounterKey;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache this
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 51
            aload 0 /* this */
            getstatic org.graalvm.util.Equivalence.IDENTITY:Lorg/graalvm/util/Equivalence;
            invokestatic org.graalvm.util.EconomicMap.create:(Lorg/graalvm/util/Equivalence;)Lorg/graalvm/util/EconomicMap;
            putfield org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.cache:Lorg/graalvm/util/EconomicMap;
         2: .line 47
            return
        end local 0 // org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/phases/graph/FixedNodeProbabilityCache;

  public double applyAsDouble(org.graalvm.compiler.nodes.FixedNode);
    descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache this
        start local 1 // org.graalvm.compiler.nodes.FixedNode node
         0: .line 86
            getstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.$assertionsDisabled:Z
            ifne 1
            aload 1 /* node */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 87
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.computeNodeProbabilityCounter:Lorg/graalvm/compiler/debug/CounterKey;
            aload 1 /* node */
            invokevirtual org.graalvm.compiler.nodes.FixedNode.getDebug:()Lorg/graalvm/compiler/debug/DebugContext;
            invokeinterface org.graalvm.compiler.debug.CounterKey.increment:(Lorg/graalvm/compiler/debug/DebugContext;)V
         2: .line 89
            aload 1 /* node */
            invokestatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.findBegin:(Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/FixedNode;
            astore 2 /* current */
        start local 2 // org.graalvm.compiler.nodes.FixedNode current
         3: .line 90
            aload 2 /* current */
            ifnonnull 5
         4: .line 92
            dconst_1
            dreturn
         5: .line 95
      StackMap locals: org.graalvm.compiler.nodes.FixedNode
      StackMap stack:
            getstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.$assertionsDisabled:Z
            ifne 6
            aload 2 /* current */
            instanceof org.graalvm.compiler.nodes.AbstractBeginNode
            ifne 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.cache:Lorg/graalvm/util/EconomicMap;
            aload 2 /* current */
            invokeinterface org.graalvm.util.EconomicMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Double
            astore 3 /* cachedValue */
        start local 3 // java.lang.Double cachedValue
         7: .line 97
            aload 3 /* cachedValue */
            ifnull 9
         8: .line 98
            aload 3 /* cachedValue */
            invokevirtual java.lang.Double.doubleValue:()D
            dreturn
         9: .line 101
      StackMap locals: java.lang.Double
      StackMap stack:
            dconst_0
            dstore 4 /* probability */
        start local 4 // double probability
        10: .line 102
            aload 2 /* current */
            invokevirtual org.graalvm.compiler.nodes.FixedNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
            ifnonnull 17
        11: .line 103
            aload 2 /* current */
            instanceof org.graalvm.compiler.nodes.AbstractMergeNode
            ifeq 14
        12: .line 104
            aload 0 /* this */
            aload 2 /* current */
            dload 4 /* probability */
            invokevirtual org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.handleMerge:(Lorg/graalvm/compiler/nodes/FixedNode;D)D
            dstore 4 /* probability */
        13: .line 105
            goto 19
        14: .line 106
      StackMap locals: double
      StackMap stack:
            getstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.$assertionsDisabled:Z
            ifne 15
            aload 2 /* current */
            instanceof org.graalvm.compiler.nodes.StartNode
            ifne 15
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        15: .line 107
      StackMap locals:
      StackMap stack:
            dconst_1
            dstore 4 /* probability */
        16: .line 109
            goto 19
        17: .line 110
      StackMap locals:
      StackMap stack:
            aload 2 /* current */
            invokevirtual org.graalvm.compiler.nodes.FixedNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
            checkcast org.graalvm.compiler.nodes.ControlSplitNode
            astore 6 /* split */
        start local 6 // org.graalvm.compiler.nodes.ControlSplitNode split
        18: .line 111
            aload 6 /* split */
            aload 2 /* current */
            checkcast org.graalvm.compiler.nodes.AbstractBeginNode
            invokevirtual org.graalvm.compiler.nodes.ControlSplitNode.probability:(Lorg/graalvm/compiler/nodes/AbstractBeginNode;)D
            aload 0 /* this */
            aload 6 /* split */
            invokevirtual org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.applyAsDouble:(Lorg/graalvm/compiler/nodes/FixedNode;)D
            invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.multiplyProbabilities:(DD)D
            dstore 4 /* probability */
        end local 6 // org.graalvm.compiler.nodes.ControlSplitNode split
        19: .line 113
      StackMap locals:
      StackMap stack:
            getstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.$assertionsDisabled:Z
            ifne 21
            dload 4 /* probability */
            invokestatic java.lang.Double.isNaN:(D)Z
            ifne 20
            dload 4 /* probability */
            invokestatic java.lang.Double.isInfinite:(D)Z
            ifeq 21
      StackMap locals:
      StackMap stack:
        20: new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 2 /* current */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            dload 4 /* probability */
            invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        21: .line 114
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.cache:Lorg/graalvm/util/EconomicMap;
            aload 2 /* current */
            dload 4 /* probability */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface org.graalvm.util.EconomicMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 115
            dload 4 /* probability */
            dreturn
        end local 4 // double probability
        end local 3 // java.lang.Double cachedValue
        end local 2 // org.graalvm.compiler.nodes.FixedNode current
        end local 1 // org.graalvm.compiler.nodes.FixedNode node
        end local 0 // org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lorg/graalvm/compiler/phases/graph/FixedNodeProbabilityCache;
            0   23     1         node  Lorg/graalvm/compiler/nodes/FixedNode;
            3   23     2      current  Lorg/graalvm/compiler/nodes/FixedNode;
            7   23     3  cachedValue  Ljava/lang/Double;
           10   23     4  probability  D
           18   19     6        split  Lorg/graalvm/compiler/nodes/ControlSplitNode;
    MethodParameters:
      Name  Flags
      node  

  private double handleMerge(org.graalvm.compiler.nodes.FixedNode, double);
    descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;D)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache this
        start local 1 // org.graalvm.compiler.nodes.FixedNode current
        start local 2 // double probability
         0: .line 119
            dload 2 /* probability */
            dstore 4 /* result */
        start local 4 // double result
         1: .line 120
            aload 1 /* current */
            checkcast org.graalvm.compiler.nodes.AbstractMergeNode
            astore 6 /* currentMerge */
        start local 6 // org.graalvm.compiler.nodes.AbstractMergeNode currentMerge
         2: .line 121
            aload 6 /* currentMerge */
            invokevirtual org.graalvm.compiler.nodes.AbstractMergeNode.forwardEnds:()Lorg/graalvm/compiler/graph/NodeInputList;
            astore 7 /* currentForwardEnds */
        start local 7 // org.graalvm.compiler.graph.NodeInputList currentForwardEnds
         3: .line 126
            aload 7 /* currentForwardEnds */
            invokevirtual org.graalvm.compiler.graph.NodeInputList.iterator:()Ljava/util/Iterator;
            astore 9
            goto 6
      StackMap locals: org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache org.graalvm.compiler.nodes.FixedNode double double org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.graph.NodeInputList top java.util.Iterator
      StackMap stack:
         4: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.nodes.AbstractEndNode
            astore 8 /* endNode */
        start local 8 // org.graalvm.compiler.nodes.AbstractEndNode endNode
         5: .line 127
            dload 4 /* result */
            aload 0 /* this */
            aload 8 /* endNode */
            invokevirtual org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.applyAsDouble:(Lorg/graalvm/compiler/nodes/FixedNode;)D
            dadd
            dstore 4 /* result */
        end local 8 // org.graalvm.compiler.nodes.AbstractEndNode endNode
         6: .line 126
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         7: .line 129
            aload 1 /* current */
            instanceof org.graalvm.compiler.nodes.LoopBeginNode
            ifeq 9
         8: .line 130
            dload 4 /* result */
            aload 1 /* current */
            checkcast org.graalvm.compiler.nodes.LoopBeginNode
            invokevirtual org.graalvm.compiler.nodes.LoopBeginNode.loopFrequency:()D
            invokestatic org.graalvm.compiler.nodes.cfg.ControlFlowGraph.multiplyProbabilities:(DD)D
            dstore 4 /* result */
         9: .line 132
      StackMap locals: org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache org.graalvm.compiler.nodes.FixedNode double double org.graalvm.compiler.nodes.AbstractMergeNode org.graalvm.compiler.graph.NodeInputList
      StackMap stack:
            dload 4 /* result */
            dreturn
        end local 7 // org.graalvm.compiler.graph.NodeInputList currentForwardEnds
        end local 6 // org.graalvm.compiler.nodes.AbstractMergeNode currentMerge
        end local 4 // double result
        end local 2 // double probability
        end local 1 // org.graalvm.compiler.nodes.FixedNode current
        end local 0 // org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   10     0                this  Lorg/graalvm/compiler/phases/graph/FixedNodeProbabilityCache;
            0   10     1             current  Lorg/graalvm/compiler/nodes/FixedNode;
            0   10     2         probability  D
            1   10     4              result  D
            2   10     6        currentMerge  Lorg/graalvm/compiler/nodes/AbstractMergeNode;
            3   10     7  currentForwardEnds  Lorg/graalvm/compiler/graph/NodeInputList<Lorg/graalvm/compiler/nodes/EndNode;>;
            5    6     8             endNode  Lorg/graalvm/compiler/nodes/AbstractEndNode;
    MethodParameters:
             Name  Flags
      current      
      probability  

  private static org.graalvm.compiler.nodes.FixedNode findBegin(org.graalvm.compiler.nodes.FixedNode);
    descriptor: (Lorg/graalvm/compiler/nodes/FixedNode;)Lorg/graalvm/compiler/nodes/FixedNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // org.graalvm.compiler.nodes.FixedNode node
         0: .line 136
            aload 0 /* node */
            astore 1 /* current */
        start local 1 // org.graalvm.compiler.nodes.FixedNode current
         1: .line 138
      StackMap locals: org.graalvm.compiler.nodes.FixedNode
      StackMap stack:
            getstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.$assertionsDisabled:Z
            ifne 2
            aload 1 /* current */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 139
      StackMap locals:
      StackMap stack:
            aload 1 /* current */
            invokevirtual org.graalvm.compiler.nodes.FixedNode.predecessor:()Lorg/graalvm/compiler/graph/Node;
            astore 2 /* predecessor */
        start local 2 // org.graalvm.compiler.graph.Node predecessor
         3: .line 140
            aload 1 /* current */
            instanceof org.graalvm.compiler.nodes.AbstractBeginNode
            ifeq 8
         4: .line 141
            aload 2 /* predecessor */
            ifnonnull 6
         5: .line 142
            goto 13
         6: .line 143
      StackMap locals: org.graalvm.compiler.graph.Node
      StackMap stack:
            aload 2 /* predecessor */
            invokevirtual org.graalvm.compiler.graph.Node.successors:()Lorg/graalvm/compiler/graph/iterators/NodeIterable;
            invokeinterface org.graalvm.compiler.graph.iterators.NodeIterable.count:()I
            iconst_1
            if_icmpeq 11
         7: .line 144
            getstatic org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.$assertionsDisabled:Z
            ifne 13
            aload 2 /* predecessor */
            instanceof org.graalvm.compiler.nodes.ControlSplitNode
            ifne 13
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "a FixedNode with multiple successors needs to be a ControlSplitNode: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* current */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " / "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* predecessor */
            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
         8: .line 147
      StackMap locals:
      StackMap stack:
            aload 2 /* predecessor */
            ifnonnull 11
         9: .line 148
            aconst_null
            astore 1 /* current */
        10: .line 149
            goto 13
        11: .line 151
      StackMap locals:
      StackMap stack:
            aload 2 /* predecessor */
            checkcast org.graalvm.compiler.nodes.FixedNode
            astore 1 /* current */
        end local 2 // org.graalvm.compiler.graph.Node predecessor
        12: .line 137
            goto 1
        13: .line 153
      StackMap locals:
      StackMap stack:
            aload 1 /* current */
            areturn
        end local 1 // org.graalvm.compiler.nodes.FixedNode current
        end local 0 // org.graalvm.compiler.nodes.FixedNode node
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         node  Lorg/graalvm/compiler/nodes/FixedNode;
            1   14     1      current  Lorg/graalvm/compiler/nodes/FixedNode;
            3   12     2  predecessor  Lorg/graalvm/compiler/graph/Node;
    MethodParameters:
      Name  Flags
      node  

  public double applyAsDouble(java.lang.Object);
    descriptor: (Ljava/lang/Object;)D
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast org.graalvm.compiler.nodes.FixedNode
            invokevirtual org.graalvm.compiler.phases.graph.FixedNodeProbabilityCache.applyAsDouble:(Lorg/graalvm/compiler/nodes/FixedNode;)D
            dreturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Ljava/util/function/ToDoubleFunction<Lorg/graalvm/compiler/nodes/FixedNode;>;
SourceFile: "FixedNodeProbabilityCache.java"