public abstract class org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy
  super_class: java.lang.Object
{
  org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase<org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase$TraceAllocationContext> allocator;
    descriptor: Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
    flags: (0x0000) 
    Signature: Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase<Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase$TraceAllocationContext;>;

  final org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy this$0;
    descriptor: Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  protected void <init>(org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy);
    descriptor: (Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
         0: .line 44
            aload 0 /* this */
            aload 1
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;
    MethodParameters:
        Name  Flags
      this$0  final

  public final org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase<org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase$TraceAllocationContext> getAllocator();
    descriptor: ()Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=10, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
         0: .line 48
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.allocator:Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
            ifnonnull 2
         1: .line 49
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.target:Ljdk/vm/ci/code/TargetDescription;
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.lirGenRes:Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.spillMoveFactory:Lorg/graalvm/compiler/lir/gen/LIRGeneratorTool$MoveFactory;
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.registerAllocationConfig:Lorg/graalvm/compiler/core/common/alloc/RegisterAllocationConfig;
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.cachedStackSlots:[Ljdk/vm/ci/meta/AllocatableValue;
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.resultTraces:Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.neverSpillConstants:Z
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.strategies:Ljava/util/ArrayList;
            invokevirtual org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.initAllocator:(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;ZLjava/util/ArrayList;)Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
            putfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.allocator:Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
         2: .line 51
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.allocator:Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
            areturn
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;
    Signature: ()Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase<Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase$TraceAllocationContext;>;

  protected final org.graalvm.compiler.lir.LIR getLIR();
    descriptor: ()Lorg/graalvm/compiler/lir/LIR;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
         0: .line 55
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.lirGenRes:Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            invokevirtual org.graalvm.compiler.lir.gen.LIRGenerationResult.getLIR:()Lorg/graalvm/compiler/lir/LIR;
            areturn
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;

  protected final org.graalvm.compiler.lir.gen.LIRGenerationResult getLIRGenerationResult();
    descriptor: ()Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
         0: .line 59
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.lirGenRes:Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
            areturn
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;

  protected final org.graalvm.compiler.core.common.alloc.TraceBuilderResult getTraceBuilderResult();
    descriptor: ()Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
         0: .line 63
            aload 0 /* this */
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy.this$0:Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy;
            getfield org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy.resultTraces:Lorg/graalvm/compiler/core/common/alloc/TraceBuilderResult;
            areturn
        end local 0 // org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;

  public abstract boolean shouldApplyTo(org.graalvm.compiler.core.common.alloc.Trace);
    descriptor: (Lorg/graalvm/compiler/core/common/alloc/Trace;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      trace  

  protected abstract org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase<org.graalvm.compiler.lir.alloc.trace.TraceAllocationPhase$TraceAllocationContext> initAllocator(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, java.util.ArrayList<org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy$AllocationStrategy>);
    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;ZLjava/util/ArrayList;)Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (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;ZLjava/util/ArrayList<Lorg/graalvm/compiler/lir/alloc/trace/TraceRegisterAllocationPolicy$AllocationStrategy;>;)Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase<Lorg/graalvm/compiler/lir/alloc/trace/TraceAllocationPhase$TraceAllocationContext;>;
    MethodParameters:
                          Name  Flags
      target                    
      lirGenRes                 
      spillMoveFactory          
      registerAllocationConfig  
      cachedStackSlots          
      resultTraces              
      neverSpillConstant        
      strategies                
}
SourceFile: "TraceRegisterAllocationPolicy.java"
NestHost: org.graalvm.compiler.lir.alloc.trace.TraceRegisterAllocationPolicy
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