public final class org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy
  super_class: java.lang.Object
{
  private final jdk.vm.ci.code.TargetDescription target;
    descriptor: Ljdk/vm/ci/code/TargetDescription;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes;
    descriptor: Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory spillMoveFactory;
    descriptor: Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig registerAllocationConfig;
    descriptor: Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.meta.AllocatableValue[] cachedStackSlots;
    descriptor: [Ljdk/vm/ci/meta/AllocatableValue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.graalvm.compiler.core.common.alloc.TraceBuilderResult resultTraces;
    descriptor: Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean neverSpillConstants;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.ArrayList<org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy> strategies;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;>;

  public void <init>(jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory, org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig, jdk.vm.ci.meta.AllocatableValue[], org.graalvm.compiler.core.common.alloc.TraceBuilderResult, boolean);
    descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;[Ljdk/vm/ci/meta/AllocatableValue;Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=8
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy this
        start local 1 // jdk.vm.ci.code.TargetDescription target
        start local 2 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        start local 3 // org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory spillMoveFactory
        start local 4 // org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig registerAllocationConfig
        start local 5 // jdk.vm.ci.meta.AllocatableValue[] cachedStackSlots
        start local 6 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult resultTraces
        start local 7 // boolean neverSpillConstant
         0: .line 87
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 89
            aload 0 /* this */
            aload 1 /* target */
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.target:Ljdk/vm/ci/code/TargetDescription;
         2: .line 90
            aload 0 /* this */
            aload 2 /* lirGenRes */
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.lirGenRes:Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
         3: .line 91
            aload 0 /* this */
            aload 3 /* spillMoveFactory */
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.spillMoveFactory:Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
         4: .line 92
            aload 0 /* this */
            aload 4 /* registerAllocationConfig */
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.registerAllocationConfig:Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
         5: .line 93
            aload 0 /* this */
            aload 5 /* cachedStackSlots */
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.cachedStackSlots:[Ljdk/vm/ci/meta/AllocatableValue;
         6: .line 94
            aload 0 /* this */
            aload 6 /* resultTraces */
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.resultTraces:Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
         7: .line 95
            aload 0 /* this */
            iload 7 /* neverSpillConstant */
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.neverSpillConstants:Z
         8: .line 97
            aload 0 /* this */
            new java.util.ArrayList
            dup
            iconst_3
            invokespecial java.util.ArrayList.<init>:(I)V
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.strategies:Ljava/util/ArrayList;
         9: .line 98
            return
        end local 7 // boolean neverSpillConstant
        end local 6 // org.graalvm.compiler.core.common.alloc.TraceBuilderResult resultTraces
        end local 5 // jdk.vm.ci.meta.AllocatableValue[] cachedStackSlots
        end local 4 // org.graalvm.compiler.core.common.alloc.RegisterAllocationConfig registerAllocationConfig
        end local 3 // org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory spillMoveFactory
        end local 2 // org.graalvm.compiler.lir.gen.LIRGenerationResult lirGenRes
        end local 1 // jdk.vm.ci.code.TargetDescription target
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   10     0                      this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            0   10     1                    target  Ljdk/vm/ci/code/TargetDescription;
            0   10     2                 lirGenRes  Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            0   10     3          spillMoveFactory  Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
            0   10     4  registerAllocationConfig  Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
            0   10     5          cachedStackSlots  [Ljdk/vm/ci/meta/AllocatableValue;
            0   10     6              resultTraces  Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            0   10     7        neverSpillConstant  Z
    MethodParameters:
                          Name  Flags
      target                    
      lirGenRes                 
      spillMoveFactory          
      registerAllocationConfig  
      cachedStackSlots          
      resultTraces              
      neverSpillConstant        

  public void appendStrategy(org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy);
    descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy this
        start local 1 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy strategy
         0: .line 101
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.strategies:Ljava/util/ArrayList;
            aload 1 /* strategy */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         1: .line 102
            return
        end local 1 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy strategy
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            0    2     1  strategy  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;
    MethodParameters:
          Name  Flags
      strategy  

  public org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase<org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase$TraceAllocationContext> selectStrategy(org.graalvm.compiler.core.common.alloc.Trace);
    descriptor: (Lorg/graalvm/compiler/core/common/alloc/Trace;)Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy this
        start local 1 // org.graalvm.compiler.core.common.alloc.Trace trace
         0: .line 105
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.strategies:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy org.graalvm.compiler.core.common.alloc.Trace top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy
            astore 2 /* strategy */
        start local 2 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy strategy
         2: .line 106
            aload 2 /* strategy */
            aload 1 /* trace */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.shouldApplyTo:(Lorg/graalvm/compiler/core/common/alloc/Trace;)Z
            ifeq 4
         3: .line 107
            aload 2 /* strategy */
            invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.getAllocator:()Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
            areturn
        end local 2 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy strategy
         4: .line 105
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 110
            ldc "No Allocation Strategy found!"
            invokestatic jdk.vm.ci.common.JVMCIError.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        end local 1 // org.graalvm.compiler.core.common.alloc.Trace trace
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            0    6     1     trace  Lorg/graalvm/compiler/core/common/alloc/Trace;
            2    4     2  strategy  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;
    Signature: (Lorg/graalvm/compiler/core/common/alloc/Trace;)Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase<Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase$TraceAllocationContext;>;
    MethodParameters:
       Name  Flags
      trace  
}
SourceFile: "TraceRegisterAllocationPolicy.java"
NestMembers:
  org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy
InnerClasses:
  public TraceAllocationContext = org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase$TraceAllocationContext of org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase
  protected abstract AllocationStrategy = org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy of org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy
  public abstract MoveFactory = org.graalvm.compiler.lir.gen.LIRGeneratorTool$MoveFactory of org.graalvm.compiler.lir.gen.LIRGeneratorTool