public class org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase extends org.graalvm.compiler.lir.phases.AllocationPhase
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase
super_class: org.graalvm.compiler.lir.phases.AllocationPhase
{
protected final org.graalvm.compiler.lir.alloc.lsra.LinearScan allocator;
descriptor: Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
flags: (0x0014) ACC_PROTECTED, 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: ldc Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
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.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>(org.graalvm.compiler.lir.alloc.lsra.LinearScan);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial org.graalvm.compiler.lir.phases.AllocationPhase.<init>:()V
1: aload 0
aload 1
putfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
0 3 1 allocator Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
MethodParameters:
Name Flags
allocator
protected void run(jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.lir.gen.LIRGenerationResult, org.graalvm.compiler.lir.phases.AllocationPhase$AllocationContext);
descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/lir/phases/AllocationPhase$AllocationContext;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.resolveDataFlow:()V
1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
ldc "After resolve data flow"
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.printIntervals:(Ljava/lang/String;)V
2: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
0 3 1 target Ljdk/vm/ci/code/TargetDescription;
0 3 2 lirGenRes Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;
0 3 3 context Lorg/graalvm/compiler/lir/phases/AllocationPhase$AllocationContext;
MethodParameters:
Name Flags
target
lirGenRes
context
protected void resolveCollectMappings(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.lir.alloc.lsra.MoveResolver);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 1
aload 4
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.checkEmpty:()Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 7
aload 3
ifnull 7
2: aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
iconst_1
if_icmpne 6
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessorCount:()I
iconst_1
if_icmpne 6
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
iconst_0
aaload
aload 1
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 6
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
iconst_0
aaload
3: aload 2
4: invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
5: ifne 7
StackMap locals:
StackMap stack:
6: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
7: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getFirstLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
istore 5
start local 5 8: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLastLirInstructionId:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)I
iconst_1
iadd
istore 6
start local 6 9: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.operandSize:()I
istore 7
start local 7 10: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getBlockData:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan$BlockData;
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScan$BlockData.liveIn:Ljava/util/BitSet;
astore 8
start local 8 11: aload 8
iconst_0
invokevirtual java.util.BitSet.nextSetBit:(I)I
istore 9
start local 9 12: goto 21
13: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.lir.alloc.lsra.MoveResolver int int int java.util.BitSet int
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 14
iload 9
iload 7
if_icmplt 14
new java.lang.AssertionError
dup
ldc "live information set for not exisiting interval"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 16
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getBlockData:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan$BlockData;
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScan$BlockData.liveOut:Ljava/util/BitSet;
iload 9
invokevirtual java.util.BitSet.get:(I)Z
ifeq 15
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 2
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getBlockData:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan$BlockData;
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScan$BlockData.liveIn:Ljava/util/BitSet;
iload 9
invokevirtual java.util.BitSet.get:(I)Z
ifne 16
StackMap locals:
StackMap stack:
15: new java.lang.AssertionError
dup
ldc "interval not live at this edge"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
16: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.intervalFor:(I)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
iload 6
getstatic org.graalvm.compiler.lir.LIRInstruction$OperandMode.DEF:Lorg/graalvm/compiler/lir/LIRInstruction$OperandMode;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.splitChildAtOpId:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;ILorg/graalvm/compiler/lir/LIRInstruction$OperandMode;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 10
start local 10 17: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
iload 9
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.intervalFor:(I)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
iload 5
getstatic org.graalvm.compiler.lir.LIRInstruction$OperandMode.DEF:Lorg/graalvm/compiler/lir/LIRInstruction$OperandMode;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.splitChildAtOpId:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;ILorg/graalvm/compiler/lir/LIRInstruction$OperandMode;)Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
astore 11
start local 11 18: aload 10
aload 11
if_acmpeq 20
aload 10
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.Interval.location:()Ljdk/vm/ci/meta/AllocatableValue;
invokevirtual jdk.vm.ci.meta.AllocatableValue.equals:(Ljava/lang/Object;)Z
ifne 20
19: aload 4
aload 10
aload 11
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.addMapping:(Lorg/graalvm/compiler/lir/alloc/lsra/Interval;Lorg/graalvm/compiler/lir/alloc/lsra/Interval;)V
end local 11 end local 10 20: StackMap locals:
StackMap stack:
aload 8
iload 9
iconst_1
iadd
invokevirtual java.util.BitSet.nextSetBit:(I)I
istore 9
StackMap locals:
StackMap stack:
21: iload 9
ifge 13
end local 9 22: return
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
0 23 1 fromBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 23 2 toBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 23 3 midBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 23 4 moveResolver Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
8 23 5 toBlockFirstInstructionId I
9 23 6 fromBlockLastInstructionId I
10 23 7 numOperands I
11 23 8 liveAtEdge Ljava/util/BitSet;
12 22 9 operandNum I
17 20 10 fromInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
18 20 11 toInterval Lorg/graalvm/compiler/lir/alloc/lsra/Interval;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;)V
MethodParameters:
Name Flags
fromBlock
toBlock
midBlock
moveResolver
void resolveFindInsertPos(org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.core.common.cfg.AbstractBlockBase<?>, org.graalvm.compiler.lir.alloc.lsra.MoveResolver);
descriptor: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;)V
flags: (0x0000)
Code:
stack=4, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessorCount:()I
iconst_1
if_icmpgt 10
1: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 3
2: ldc "inserting moves at end of fromBlock B%d"
aload 1
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
3: StackMap locals:
StackMap stack:
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 1
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
astore 4
start local 4 4: aload 4
aload 4
invokeinterface java.util.List.size:()I
iconst_1
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast org.graalvm.compiler.lir.LIRInstruction
astore 5
start local 5 5: aload 5
instanceof org.graalvm.compiler.lir.StandardOp$JumpOp
ifeq 8
6: aload 3
aload 4
aload 4
invokeinterface java.util.List.size:()I
iconst_1
isub
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.setInsertPosition:(Ljava/util/List;I)V
7: goto 20
8: StackMap locals: java.util.List org.graalvm.compiler.lir.LIRInstruction
StackMap stack:
aload 3
aload 4
aload 4
invokeinterface java.util.List.size:()I
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.setInsertPosition:(Ljava/util/List;I)V
end local 5 end local 4 9: goto 20
10: StackMap locals:
StackMap stack:
invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 12
11: ldc "inserting moves at beginning of toBlock B%d"
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;I)V
12: StackMap locals:
StackMap stack:
getstatic org.graalvm.compiler.core.common.GraalOptions.DetailedAsserts:Lorg/graalvm/compiler/options/OptionValue;
invokevirtual org.graalvm.compiler.options.OptionValue.getValue:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifeq 19
13: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 14
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 1
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
iconst_0
invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
instanceof org.graalvm.compiler.lir.StandardOp$LabelOp
ifne 14
new java.lang.AssertionError
dup
ldc "block does not start with a label"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 18
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.lir.alloc.lsra.MoveResolver top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
15: aload 7
iload 5
aaload
astore 4
start local 4 16: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 17
aload 1
aload 4
if_acmpeq 17
new java.lang.AssertionError
dup
ldc "all critical edges must be broken"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 4 17: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
18: iload 5
iload 6
if_icmplt 15
19: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.lir.alloc.lsra.MoveResolver
StackMap stack:
aload 3
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 2
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.setInsertPosition:(Ljava/util/List;I)V
20: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
0 21 1 fromBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 21 2 toBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
0 21 3 moveResolver Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
4 9 4 instructions Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
5 9 5 instr Lorg/graalvm/compiler/lir/LIRInstruction;
16 17 4 predecessor Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
Signature: (Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;)V
MethodParameters:
Name Flags
fromBlock
toBlock
moveResolver
protected void resolveDataFlow();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=6, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: ldc "resolve data flow"
invokestatic org.graalvm.compiler.debug.Debug.logAndIndent:(Ljava/lang/String;)Lorg/graalvm/compiler/debug/Indent;
astore 3
start local 3 2: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.createMoveResolver:()Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
astore 4
start local 4 3: new java.util.BitSet
dup
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockCount:()I
invokespecial java.util.BitSet.<init>:(I)V
astore 5
start local 5 4: aload 0
aload 4
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.optimizeEmptyBlocks:(Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;Ljava/util/BitSet;)V
5: aload 0
aload 4
aload 5
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.resolveDataFlow0:(Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;Ljava/util/BitSet;)V
end local 5 end local 4 6: aload 3
ifnull 12
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
goto 12
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase java.lang.Throwable java.lang.Throwable org.graalvm.compiler.debug.Indent
StackMap stack: java.lang.Throwable
7: astore 1
aload 3
ifnull 8
aload 3
invokeinterface org.graalvm.compiler.debug.Indent.close:()V
end local 3 StackMap locals:
StackMap stack:
8: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
9: astore 2
aload 1
ifnonnull 10
aload 2
astore 1
goto 11
StackMap locals:
StackMap stack:
10: aload 1
aload 2
if_acmpeq 11
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
11: aload 1
athrow
12: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
2 8 3 indent Lorg/graalvm/compiler/debug/Indent;
3 6 4 moveResolver Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
4 6 5 blockCompleted Ljava/util/BitSet;
Exception table:
from to target type
2 6 7 any
1 9 9 any
protected void optimizeEmptyBlocks(org.graalvm.compiler.lir.alloc.lsra.MoveResolver, java.util.BitSet);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;Ljava/util/BitSet;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.sortedBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 18
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
1: aload 6
iload 4
aaload
astore 3
start local 3 2: aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessorCount:()I
iconst_1
if_icmpne 17
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessorCount:()I
iconst_1
if_icmpne 17
3: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.getLIR:()Lorg/graalvm/compiler/lir/LIR;
aload 3
invokevirtual org.graalvm.compiler.lir.LIR.getLIRforBlock:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;)Ljava/util/ArrayList;
astore 7
start local 7 4: getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 5
aload 7
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
instanceof org.graalvm.compiler.lir.StandardOp$LabelOp
ifne 5
new java.lang.AssertionError
dup
ldc "block must start with label"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
5: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] java.util.List
StackMap stack:
getstatic org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.$assertionsDisabled:Z
ifne 6
aload 7
aload 7
invokeinterface java.util.List.size:()I
iconst_1
isub
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
instanceof org.graalvm.compiler.lir.StandardOp$JumpOp
ifne 6
new java.lang.AssertionError
dup
ldc "block with successor must end with unconditional jump"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
6: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.List.size:()I
iconst_2
if_icmpne 17
7: aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getPredecessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
iconst_0
aaload
astore 8
start local 8 8: aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
iconst_0
aaload
astore 9
start local 9 9: aload 2
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
invokevirtual java.util.BitSet.get:(I)Z
ifne 17
aload 2
aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
invokevirtual java.util.BitSet.get:(I)Z
ifne 17
10: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 12
11: ldc " optimizing empty block B%d (pred: B%d, sux: B%d)"
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 9
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;III)V
12: StackMap locals: org.graalvm.compiler.core.common.cfg.AbstractBlockBase org.graalvm.compiler.core.common.cfg.AbstractBlockBase
StackMap stack:
aload 2
aload 3
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
invokevirtual java.util.BitSet.set:(I)V
13: aload 0
aload 8
aload 9
aload 3
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.resolveCollectMappings:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;)V
14: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.hasMappings:()Z
ifeq 17
15: aload 1
aload 7
iconst_1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.setInsertPosition:(Ljava/util/List;I)V
16: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.resolveAndAppendMoves:()V
end local 9 end local 8 end local 7 end local 3 17: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
18: iload 4
iload 5
if_icmplt 1
19: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
0 20 1 moveResolver Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 20 2 blockCompleted Ljava/util/BitSet;
2 17 3 block Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
4 17 7 instructions Ljava/util/List<Lorg/graalvm/compiler/lir/LIRInstruction;>;
8 17 8 pred Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
9 17 9 sux Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
moveResolver
blockCompleted
protected void resolveDataFlow0(org.graalvm.compiler.lir.alloc.lsra.MoveResolver, java.util.BitSet);
descriptor: (Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;Ljava/util/BitSet;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=12, args_size=3
start local 0 start local 1 start local 2 0: new java.util.BitSet
dup
aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.blockCount:()I
invokespecial java.util.BitSet.<init>:(I)V
astore 3
start local 3 1: aload 0
getfield org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.allocator:Lorg/graalvm/compiler/lir/alloc/lsra/LinearScan;
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScan.sortedBlocks:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 19
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet java.util.BitSet top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
2: aload 7
iload 5
aaload
astore 4
start local 4 3: aload 2
aload 4
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
invokevirtual java.util.BitSet.get:(I)Z
ifne 18
4: aload 3
invokevirtual java.util.BitSet.clear:()V
5: aload 3
aload 2
invokevirtual java.util.BitSet.or:(Ljava/util/BitSet;)V
6: aload 4
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getSuccessors:()[Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 17
StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
7: aload 11
iload 9
aaload
astore 8
start local 8 8: aload 3
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
invokevirtual java.util.BitSet.get:(I)Z
ifne 16
9: invokestatic org.graalvm.compiler.debug.Debug.isLogEnabled:()Z
ifeq 11
10: ldc "processing edge between B%d and B%d"
aload 4
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getId:()I
invokestatic org.graalvm.compiler.debug.Debug.log:(Ljava/lang/String;II)V
11: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
aload 3
aload 8
invokevirtual org.graalvm.compiler.core.common.cfg.AbstractBlockBase.getLinearScanNumber:()I
invokevirtual java.util.BitSet.set:(I)V
12: aload 0
aload 4
aload 8
aconst_null
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.resolveCollectMappings:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;)V
13: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.hasMappings:()Z
ifeq 16
14: aload 0
aload 4
aload 8
aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.resolveFindInsertPos:(Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase;Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;)V
15: aload 1
invokevirtual org.graalvm.compiler.lir.alloc.lsra.MoveResolver.resolveAndAppendMoves:()V
end local 8 16: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet java.util.BitSet org.graalvm.compiler.core.common.cfg.AbstractBlockBase int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[] top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
iinc 9 1
StackMap locals:
StackMap stack:
17: iload 9
iload 10
if_icmplt 7
end local 4 18: StackMap locals: org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase org.graalvm.compiler.lir.alloc.lsra.MoveResolver java.util.BitSet java.util.BitSet top int int org.graalvm.compiler.core.common.cfg.AbstractBlockBase[]
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
19: iload 5
iload 6
if_icmplt 2
20: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/graalvm/compiler/lir/alloc/lsra/LinearScanResolveDataFlowPhase;
0 21 1 moveResolver Lorg/graalvm/compiler/lir/alloc/lsra/MoveResolver;
0 21 2 blockCompleted Ljava/util/BitSet;
1 21 3 alreadyResolved Ljava/util/BitSet;
3 18 4 fromBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
8 16 8 toBlock Lorg/graalvm/compiler/core/common/cfg/AbstractBlockBase<*>;
MethodParameters:
Name Flags
moveResolver
blockCompleted
protected void run(jdk.vm.ci.code.TargetDescription, org.graalvm.compiler.lir.gen.LIRGenerationResult, java.lang.Object);
descriptor: (Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Ljava/lang/Object;)V
flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=4, locals=4, args_size=4
0: aload 0
aload 1
aload 2
aload 3
checkcast org.graalvm.compiler.lir.phases.AllocationPhase$AllocationContext
invokevirtual org.graalvm.compiler.lir.alloc.lsra.LinearScanResolveDataFlowPhase.run:(Ljdk/vm/ci/code/TargetDescription;Lorg/graalvm/compiler/lir/gen/LIRGenerationResult;Lorg/graalvm/compiler/lir/phases/AllocationPhase$AllocationContext;)V
return
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "LinearScanResolveDataFlowPhase.java"
InnerClasses:
public final OperandMode = org.graalvm.compiler.lir.LIRInstruction$OperandMode of org.graalvm.compiler.lir.LIRInstruction
public JumpOp = org.graalvm.compiler.lir.StandardOp$JumpOp of org.graalvm.compiler.lir.StandardOp
public final LabelOp = org.graalvm.compiler.lir.StandardOp$LabelOp of org.graalvm.compiler.lir.StandardOp
public BlockData = org.graalvm.compiler.lir.alloc.lsra.LinearScan$BlockData of org.graalvm.compiler.lir.alloc.lsra.LinearScan
public final AllocationContext = org.graalvm.compiler.lir.phases.AllocationPhase$AllocationContext of org.graalvm.compiler.lir.phases.AllocationPhase