public final class org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer
  super_class: java.lang.Object
{
  private final org.graalvm.compiler.lir.constopt.ConstantTree tree;
    descriptor: Lorg/graalvm/compiler/lir/constopt/ConstantTree;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.BitSet visited;
    descriptor: Ljava/util/BitSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 42
            ldc Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            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.lir.constopt.ConstantTreeAnalyzer.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost analyze(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.lir.constopt.ConstantTree, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/constopt/ConstantTree;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/lir/constopt/ConstantTree$NodeCost;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // org.graalvm.compiler.debug.DebugContext debug
        start local 1 // org.graalvm.compiler.lir.constopt.ConstantTree tree
        start local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
         0: .line 48
            aconst_null
            astore 3
            aconst_null
            astore 4
         1: aload 0 /* debug */
            ldc "ConstantTreeAnalyzer"
            invokevirtual org.graalvm.compiler.debug.DebugContext.scope:(Ljava/lang/Object;)Lorg/graalvm/compiler/debug/DebugContext$Scope;
            astore 5 /* s */
        start local 5 // org.graalvm.compiler.debug.DebugContext$Scope s
         2: .line 49
            new org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer
            dup
            aload 1 /* tree */
            invokespecial org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.<init>:(Lorg/graalvm/compiler/lir/constopt/ConstantTree;)V
            astore 6 /* analyzer */
        start local 6 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer analyzer
         3: .line 50
            aload 6 /* analyzer */
            aload 0 /* debug */
            aload 2 /* startBlock */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.analyzeBlocks:(Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
         4: .line 51
            aload 1 /* tree */
            aload 2 /* startBlock */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.getCost:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost
         5: .line 52
            aload 5 /* s */
            ifnull 6
            aload 5 /* s */
            invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
         6: .line 51
      StackMap locals: org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.lir.constopt.ConstantTree org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer
      StackMap stack: org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost
            areturn
        end local 6 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer analyzer
      StackMap locals: org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.lir.constopt.ConstantTree org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.DebugContext$Scope
      StackMap stack: java.lang.Throwable
         7: astore 3
         8: .line 52
            aload 5 /* s */
            ifnull 9
            aload 5 /* s */
            invokeinterface org.graalvm.compiler.debug.DebugContext$Scope.close:()V
        end local 5 // org.graalvm.compiler.debug.DebugContext$Scope s
      StackMap locals:
      StackMap stack:
         9: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 4
            aload 3
            ifnonnull 11
            aload 4
            astore 3
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 3
            aload 4
            if_acmpeq 12
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 3
            athrow
      StackMap locals: org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.lir.constopt.ConstantTree org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack: java.lang.Throwable
        13: astore 3 /* e */
        start local 3 // java.lang.Throwable e
        14: .line 53
            aload 0 /* debug */
            aload 3 /* e */
            invokevirtual org.graalvm.compiler.debug.DebugContext.handle:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.lang.Throwable e
        end local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
        end local 1 // org.graalvm.compiler.lir.constopt.ConstantTree tree
        end local 0 // org.graalvm.compiler.debug.DebugContext debug
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0       debug  Lorg/graalvm/compiler/debug/DebugContext;
            0   15     1        tree  Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            0   15     2  startBlock  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            2    9     5           s  Lorg/graalvm/compiler/debug/DebugContext$Scope;
            3    7     6    analyzer  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
           14   15     3           e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     5       7  any
           1     6      10  any
           7    10      10  any
           0     6      13  Class java.lang.Throwable
           7    13      13  Class java.lang.Throwable
    Signature: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/lir/constopt/ConstantTree;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Lorg/graalvm/compiler/lir/constopt/ConstantTree$NodeCost;
    MethodParameters:
            Name  Flags
      debug       
      tree        
      startBlock  

  private void <init>(org.graalvm.compiler.lir.constopt.ConstantTree);
    descriptor: (Lorg/graalvm/compiler/lir/constopt/ConstantTree;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
        start local 1 // org.graalvm.compiler.lir.constopt.ConstantTree tree
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 58
            aload 0 /* this */
            aload 1 /* tree */
            putfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
         2: .line 59
            aload 0 /* this */
            new java.util.BitSet
            dup
            aload 1 /* tree */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.size:()I
            invokespecial java.util.BitSet.<init>:(I)V
            putfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.visited:Ljava/util/BitSet;
         3: .line 60
            return
        end local 1 // org.graalvm.compiler.lir.constopt.ConstantTree tree
        end local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            0    4     1  tree  Lorg/graalvm/compiler/lir/constopt/ConstantTree;
    MethodParameters:
      Name  Flags
      tree  

  private void analyzeBlocks(org.graalvm.compiler.debug.DebugContext, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
        start local 1 // org.graalvm.compiler.debug.DebugContext debug
        start local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
         0: .line 72
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            astore 3 /* worklist */
        start local 3 // java.util.Deque worklist
         1: .line 73
            aload 3 /* worklist */
            aload 2 /* startBlock */
            invokeinterface java.util.Deque.offerLast:(Ljava/lang/Object;)Z
            pop
         2: .line 74
            goto 31
         3: .line 75
      StackMap locals: java.util.Deque
      StackMap stack:
            aload 3 /* worklist */
            invokeinterface java.util.Deque.pollLast:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.core.common.cfg.AbstractBlockBase
            astore 4 /* block */
        start local 4 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         4: .line 76
            aconst_null
            astore 5
            aconst_null
            astore 6
         5: aload 1 /* debug */
            iconst_3
            ldc "analyze: %s"
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.debug.DebugContext.logAndIndent:(ILjava/lang/String;Ljava/lang/Object;)Lorg/graalvm/compiler/debug/Indent;
            astore 7 /* i */
        start local 7 // org.graalvm.compiler.debug.Indent i
         6: .line 77
            getstatic org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.$assertionsDisabled:Z
            ifne 7
            aload 4 /* block */
            ifnonnull 7
            new java.lang.AssertionError
            dup
            ldc "worklist is empty!"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         7: .line 78
      StackMap locals: org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer org.graalvm.compiler.debug.DebugContext org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.Deque org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
      StackMap stack:
            getstatic org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.$assertionsDisabled:Z
            ifne 8
            aload 0 /* this */
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.isMarked:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifne 8
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Block not part of the dominator tree: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* block */
            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 80
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.isLeafBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifeq 13
         9: .line 81
            aload 1 /* debug */
            iconst_3
            ldc "leaf block"
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;)V
        10: .line 82
            aload 0 /* this */
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.leafCost:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
        11: .line 101
            aload 7 /* i */
            ifnull 31
            aload 7 /* i */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        12: .line 83
            goto 31
        13: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.visited:Ljava/util/BitSet;
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.get:(I)Z
            ifne 23
        14: .line 88
            aload 1 /* debug */
            iconst_3
            ldc "not marked"
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;)V
        15: .line 89
            aload 3 /* worklist */
            aload 4 /* block */
            invokeinterface java.util.Deque.offerLast:(Ljava/lang/Object;)Z
            pop
        16: .line 90
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 8 /* dominated */
        start local 8 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase dominated
        17: .line 91
            goto 20
        18: .line 92
      StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack:
            aload 0 /* this */
            aload 1 /* debug */
            aload 3 /* worklist */
            aload 8 /* dominated */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.filteredPush:(Lorg/graalvm/compiler/debug/DebugContext;Ljava/util/Deque;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
        19: .line 93
            aload 8 /* dominated */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 8 /* dominated */
        20: .line 91
      StackMap locals:
      StackMap stack:
            aload 8 /* dominated */
            ifnonnull 18
        21: .line 95
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.visited:Ljava/util/BitSet;
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
            invokevirtual java.util.BitSet.set:(I)V
        end local 8 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase dominated
        22: .line 96
            goto 25
        23: .line 97
      StackMap locals:
      StackMap stack:
            aload 1 /* debug */
            iconst_3
            ldc "marked"
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;)V
        24: .line 99
            aload 0 /* this */
            aload 4 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.process:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
        25: .line 101
      StackMap locals:
      StackMap stack:
            aload 7 /* i */
            ifnull 31
            aload 7 /* i */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
            goto 31
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: astore 5
            aload 7 /* i */
            ifnull 27
            aload 7 /* i */
            invokeinterface org.graalvm.compiler.debug.Indent.close:()V
        end local 7 // org.graalvm.compiler.debug.Indent i
      StackMap locals:
      StackMap stack:
        27: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: astore 6
            aload 5
            ifnonnull 29
            aload 6
            astore 5
            goto 30
      StackMap locals:
      StackMap stack:
        29: aload 5
            aload 6
            if_acmpeq 30
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        30: aload 5
            athrow
        end local 4 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        31: .line 74
      StackMap locals:
      StackMap stack:
            aload 3 /* worklist */
            invokeinterface java.util.Deque.isEmpty:()Z
            ifeq 3
        32: .line 103
            return
        end local 3 // java.util.Deque worklist
        end local 2 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase startBlock
        end local 1 // org.graalvm.compiler.debug.DebugContext debug
        end local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   33     0        this  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            0   33     1       debug  Lorg/graalvm/compiler/debug/DebugContext;
            0   33     2  startBlock  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            1   33     3    worklist  Ljava/util/Deque<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
            4   31     4       block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            6   27     7           i  Lorg/graalvm/compiler/debug/Indent;
           17   22     8   dominated  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
      Exception table:
        from    to  target  type
           6    11      26  any
          13    25      26  any
           5    12      28  any
          13    28      28  any
    Signature: (Lorg/graalvm/compiler/debug/DebugContext;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
    MethodParameters:
            Name  Flags
      debug       
      startBlock  

  private void process(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 112
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* usages */
        start local 2 // java.util.List usages
         1: .line 113
            dconst_0
            dstore 3 /* bestCost */
        start local 3 // double bestCost
         2: .line 114
            iconst_0
            istore 5 /* numMat */
        start local 5 // int numMat
         3: .line 117
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getFirstDominated:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 6 /* child */
        start local 6 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase child
         4: .line 118
            goto 12
         5: .line 119
      StackMap locals: org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer org.graalvm.compiler.core.common.cfg.AbstractBlockBase java.util.List double int org.graalvm.compiler.core.common.cfg.AbstractBlockBase
      StackMap stack:
            aload 0 /* this */
            aload 6 /* child */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.isMarked:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifeq 11
         6: .line 120
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            aload 6 /* child */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.getCost:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost
            astore 7 /* childCost */
        start local 7 // org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost childCost
         7: .line 121
            getstatic org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.$assertionsDisabled:Z
            ifne 8
            aload 7 /* childCost */
            ifnonnull 8
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Child with null cost? block: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* child */
            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 122
      StackMap locals: org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost
      StackMap stack:
            aload 2 /* usages */
            aload 7 /* childCost */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost.getUsages:()Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         9: .line 123
            iload 5 /* numMat */
            aload 7 /* childCost */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost.getNumMaterializations:()I
            iadd
            istore 5 /* numMat */
        10: .line 124
            dload 3 /* bestCost */
            aload 7 /* childCost */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost.getBestCost:()D
            dadd
            dstore 3 /* bestCost */
        end local 7 // org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost childCost
        11: .line 126
      StackMap locals:
      StackMap stack:
            aload 6 /* child */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getDominatedSibling:()Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
            astore 6 /* child */
        12: .line 118
      StackMap locals:
      StackMap stack:
            aload 6 /* child */
            ifnonnull 5
        13: .line 128
            getstatic org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.$assertionsDisabled:Z
            ifne 14
            iload 5 /* numMat */
            ifgt 14
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "No materialization? "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* numMat */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        14: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.getUsages:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/List;
            astore 7 /* usagesBlock */
        start local 7 // java.util.List usagesBlock
        15: .line 132
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.probability:()D
            dstore 8 /* probabilityBlock */
        start local 8 // double probabilityBlock
        16: .line 134
            aload 7 /* usagesBlock */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 17
            dload 8 /* probabilityBlock */
            dload 3 /* bestCost */
            iload 5 /* numMat */
            invokestatic org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.shouldMaterializerInCurrentBlock:(DDI)Z
            ifeq 21
        17: .line 136
      StackMap locals: java.util.List double
      StackMap stack:
            aload 2 /* usages */
            aload 7 /* usagesBlock */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        18: .line 137
            dload 8 /* probabilityBlock */
            dstore 3 /* bestCost */
        19: .line 138
            iconst_1
            istore 5 /* numMat */
        20: .line 139
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            getstatic org.graalvm.compiler.lir.constopt.ConstantTree$Flags.CANDIDATE:Lorg/graalvm/compiler/lir/constopt/ConstantTree$Flags;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.set:(Ljava/lang/Enum;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
        21: .line 144
      StackMap locals:
      StackMap stack:
            new org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost
            dup
            dload 3 /* bestCost */
            aload 2 /* usages */
            iload 5 /* numMat */
            invokespecial org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost.<init>:(DLjava/util/List;I)V
            astore 10 /* nodeCost */
        start local 10 // org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost nodeCost
        22: .line 145
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            aload 1 /* block */
            aload 10 /* nodeCost */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.setCost:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Ljava/lang/Object;)V
        23: .line 146
            return
        end local 10 // org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost nodeCost
        end local 8 // double probabilityBlock
        end local 7 // java.util.List usagesBlock
        end local 6 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase child
        end local 5 // int numMat
        end local 3 // double bestCost
        end local 2 // java.util.List usages
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   24     0              this  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            0   24     1             block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            1   24     2            usages  Ljava/util/List<Lorg/graalvm/compiler/lir/constopt/UseEntry;>;
            2   24     3          bestCost  D
            3   24     5            numMat  I
            4   24     6             child  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
            7   11     7         childCost  Lorg/graalvm/compiler/lir/constopt/ConstantTree$NodeCost;
           15   24     7       usagesBlock  Ljava/util/List<Lorg/graalvm/compiler/lir/constopt/UseEntry;>;
           16   24     8  probabilityBlock  D
           22   24    10          nodeCost  Lorg/graalvm/compiler/lir/constopt/ConstantTree$NodeCost;
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
    MethodParameters:
       Name  Flags
      block  

  private static boolean shouldMaterializerInCurrentBlock(double, double, int);
    descriptor: (DDI)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // double probabilityBlock
        start local 2 // double probabilityChildren
        start local 4 // int numMat
         0: .line 161
            dload 0 /* probabilityBlock */
            ldc 0.9
            iload 4 /* numMat */
            iconst_1
            isub
            i2d
            invokestatic java.lang.Math.pow:(DD)D
            dmul
            dload 2 /* probabilityChildren */
            dcmpg
            ifge 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 4 // int numMat
        end local 2 // double probabilityChildren
        end local 0 // double probabilityBlock
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0     probabilityBlock  D
            0    2     2  probabilityChildren  D
            0    2     4               numMat  I
    MethodParameters:
                     Name  Flags
      probabilityBlock     
      probabilityChildren  
      numMat               

  private void filteredPush(org.graalvm.compiler.debug.DebugContext, java.util.Deque<org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/debug/DebugContext;Ljava/util/Deque;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
        start local 1 // org.graalvm.compiler.debug.DebugContext debug
        start local 2 // java.util.Deque worklist
        start local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 165
            aload 0 /* this */
            aload 3 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.isMarked:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ifeq 3
         1: .line 166
            aload 1 /* debug */
            iconst_3
            ldc "adding %s to the worklist"
            aload 3 /* block */
            invokevirtual org.graalvm.compiler.debug.DebugContext.log:(ILjava/lang/String;Ljava/lang/Object;)V
         2: .line 167
            aload 2 /* worklist */
            aload 3 /* block */
            invokeinterface java.util.Deque.offerLast:(Ljava/lang/Object;)Z
            pop
         3: .line 169
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 2 // java.util.Deque worklist
        end local 1 // org.graalvm.compiler.debug.DebugContext debug
        end local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            0    4     1     debug  Lorg/graalvm/compiler/debug/DebugContext;
            0    4     2  worklist  Ljava/util/Deque<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;
            0    4     3     block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
    Signature: (Lorg/graalvm/compiler/debug/DebugContext;Ljava/util/Deque<Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
    MethodParameters:
          Name  Flags
      debug     
      worklist  
      block     

  private void leafCost(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 172
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            getstatic org.graalvm.compiler.lir.constopt.ConstantTree$Flags.CANDIDATE:Lorg/graalvm/compiler/lir/constopt/ConstantTree$Flags;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.set:(Ljava/lang/Enum;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)V
         1: .line 173
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.getOrInitCost:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/lir/constopt/ConstantTree$NodeCost;
            pop
         2: .line 174
            return
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            0    3     1  block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)V
    MethodParameters:
       Name  Flags
      block  

  private boolean isMarked(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 177
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.isMarked:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ireturn
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            0    1     1  block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Z
    MethodParameters:
       Name  Flags
      block  

  private boolean isLeafBlock(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>);
    descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
        start local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
         0: .line 181
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer.tree:Lorg/graalvm/compiler/lir/constopt/ConstantTree;
            aload 1 /* block */
            invokevirtual org.graalvm.compiler.lir.constopt.ConstantTree.isLeafBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Z
            ireturn
        end local 1 // org.graalvm.compiler.core.common.cfg.AbstractBlockBase block
        end local 0 // org.graalvm.compiler.lir.constopt.ConstantTreeAnalyzer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/graalvm/compiler/lir/constopt/ConstantTreeAnalyzer;
            0    1     1  block  Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
    Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;)Z
    MethodParameters:
       Name  Flags
      block  
}
SourceFile: "ConstantTreeAnalyzer.java"
InnerClasses:
  public abstract Scope = org.graalvm.compiler.debug.DebugContext$Scope of org.graalvm.compiler.debug.DebugContext
  public final Flags = org.graalvm.compiler.lir.constopt.ConstantTree$Flags of org.graalvm.compiler.lir.constopt.ConstantTree
  public NodeCost = org.graalvm.compiler.lir.constopt.ConstantTree$NodeCost of org.graalvm.compiler.lir.constopt.ConstantTree