[modular_aot] Fix LiveRange.findRegisterUseAfter
Issue: https://github.com/dart-lang/sdk/issues/61635 Change-Id: I6a599d32001d6df31e61b8ea5c68569792cc82bc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508704 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>
This commit is contained in:
committed by
dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent
6b9aecbe5f
commit
8b77454b37
@@ -1228,10 +1228,13 @@ class LiveRange {
|
||||
assert(!isPhysical);
|
||||
for (int i = currentUse; i <= uses.length; ++i) {
|
||||
final use = uses[uses.length - i];
|
||||
if (use.pos >= pos &&
|
||||
(use.constraint is AnyCpuRegister ||
|
||||
use.constraint is AnyFpuRegister)) {
|
||||
return use;
|
||||
if (use.pos >= pos) {
|
||||
final constr = use.constraint;
|
||||
if (constr is AnyCpuRegister ||
|
||||
constr is AnyFpuRegister ||
|
||||
constr is PhysicalRegister) {
|
||||
return use;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -53,9 +53,9 @@ B0 = EntryBlock() dominates:(B7, B6)
|
||||
v1 = Parameter(this) # RA: R0 <- ()
|
||||
v2 = Parameter(error) # RA: R1 <- ()
|
||||
v3 = Parameter(stackTrace) # RA: R2 <- ()
|
||||
ParallelMove output(R2 -> vloc:R0, R1 -> vloc:stack[1], R0 -> vloc:stack[0])
|
||||
ParallelMove spill(R0 -> stack[2])
|
||||
v5 = InterfaceCall getter BroadcastStreamController._mayAddEvent(v1) # RA: R0 <- (stack[0]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R2 -> vloc:R2, R1 -> vloc:R1, R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[0], R1 -> stack[1], R2 -> stack[2])
|
||||
v5 = InterfaceCall getter BroadcastStreamController._mayAddEvent(v1) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
Branch(v5, true: B6, false: B7) # RA: (R0)
|
||||
B6 = TargetBlock() idom:B0
|
||||
@@ -123,8 +123,8 @@ B0 = EntryBlock()
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[0])
|
||||
v10 = DirectCall Map.unmodifiable(v8, v9) # RA: R0 <- (-, -) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[1], stack[0] -> R0)
|
||||
DirectCall _InvocationMirror._withType(v3, v4, v5, v6, v7, v10) # RA: R0 <- (R0, -, -, -, -, stack[1]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[0] -> R1)
|
||||
DirectCall _InvocationMirror._withType(v3, v4, v5, v6, v7, v10) # RA: R0 <- (R1, -, -, -, -, R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(param[0] -> R1, stack[0] -> R2)
|
||||
v12 = DirectCall NoSuchMethodError.withInvocation(v1, v3) # RA: R0 <- (R1, R2) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
@@ -151,8 +151,8 @@ B0 = EntryBlock()
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[1])
|
||||
v14 = DirectCall Map.unmodifiable(v12, v13) # RA: R0 <- (-, -) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[2], stack[0] -> R0, stack[1] -> R1)
|
||||
DirectCall _InvocationMirror._withType(v4, v5, v6, v7, v11, v14) # RA: R0 <- (R0, -, -, -, R1, stack[2]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[0] -> R1, stack[1] -> R2)
|
||||
DirectCall _InvocationMirror._withType(v4, v5, v6, v7, v11, v14) # RA: R0 <- (R1, -, -, -, R2, R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(param[0] -> R1, stack[0] -> R2)
|
||||
v16 = DirectCall NoSuchMethodError.withInvocation(v1, v4) # RA: R0 <- (R1, R2) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
@@ -226,9 +226,9 @@ B0 = EntryBlock() dominates:(B15, B25, B14)
|
||||
v3 = Parameter(onError) # RA: R2 <- ()
|
||||
v4 = Parameter(onDone) # RA: R3 <- ()
|
||||
v5 = Parameter(cancelOnError) # RA: R5 <- ()
|
||||
ParallelMove output(R5 -> vloc:R0, R3 -> vloc:stack[3], R2 -> vloc:stack[2], R1 -> vloc:stack[1], R0 -> vloc:stack[0])
|
||||
ParallelMove spill(R0 -> stack[4])
|
||||
v9 = InterfaceCall getter AsBroadcastStream._controller(v1) # RA: R0 <- (stack[0]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R5 -> vloc:R4, R3 -> vloc:R3, R2 -> vloc:R2, R1 -> vloc:R1, R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[0], R1 -> stack[1], R2 -> stack[2], R3 -> stack[3], R4 -> stack[4])
|
||||
v9 = InterfaceCall getter AsBroadcastStream._controller(v1) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
CompareAndBranch ==(v9, v12, true: B14, false: B15) # RA: (R0, -)
|
||||
B14 = TargetBlock() idom:B0
|
||||
@@ -265,8 +265,9 @@ B21 = TargetBlock() idom:B15 dominates:(B37, B49, B36)
|
||||
B36 = TargetBlock() idom:B21
|
||||
ParallelMove output(stack[0] -> R0)
|
||||
v41 = InterfaceCall getter AsBroadcastStream._source(v1) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[7], stack[5] -> R0)
|
||||
v44 = InterfaceCall method-extractor _AsBroadcastStreamController.add(v18) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[5] -> R1)
|
||||
ParallelMove spill(R0 -> stack[7])
|
||||
v44 = InterfaceCall method-extractor _AsBroadcastStreamController.add(v18) # RA: R0 <- (R1) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[7] -> R1)
|
||||
v46 = InterfaceCall Stream.listen(v41, v44) # RA: R0 <- (R1, R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[0] -> R1)
|
||||
@@ -1439,8 +1440,9 @@ B0 = EntryBlock() dominates:(B11, B10)
|
||||
v2 = Parameter(action) # RA: param[1] <- ()
|
||||
ParallelMove output(param[1] -> vloc:R0, param[0] -> vloc:param[0])
|
||||
v6 = InterfaceCall getter LinkedList._modificationCount(v1) # RA: R0 <- (param[0]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[0], param[0] -> R0)
|
||||
v9 = InterfaceCall getter LinkedList.isEmpty(v1) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, param[0] -> R1)
|
||||
ParallelMove spill(R0 -> stack[0])
|
||||
v9 = InterfaceCall getter LinkedList.isEmpty(v1) # RA: R0 <- (R1) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
Branch(v9, true: B10, false: B11) # RA: (R0)
|
||||
B10 = TargetBlock() idom:B0
|
||||
@@ -1470,8 +1472,8 @@ B30 = TargetBlock() idom:B21 dominates:(B48, B47) in-loop:B21
|
||||
v41 = NullCheck(v40) # RA: R0 <- (R0)
|
||||
ParallelMove output(param[0] -> R0, R0 -> stack[1])
|
||||
v45 = InterfaceCall getter LinkedList._first(v1) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[3], stack[1] -> R0)
|
||||
v46 = DirectCall identical(v41, v45) # RA: R0 <- (R0, stack[3]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[1] -> R1)
|
||||
v46 = DirectCall identical(v41, v45) # RA: R0 <- (R1, R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
Branch(v46, true: B47, false: B48) # RA: (R0)
|
||||
B48 = TargetBlock() idom:B30 in-loop:B21
|
||||
@@ -1483,9 +1485,9 @@ B47 = TargetBlock() idom:B30
|
||||
B31 = TargetBlock() idom:B21
|
||||
v35 = AllocateObject ConcurrentModificationError() # RA: R0 <- () temps: [R1, R2, R3, R4]
|
||||
ParallelMove output(R0 -> vloc:R0, param[0] -> R1)
|
||||
ParallelMove spill(R0 -> stack[4])
|
||||
ParallelMove spill(R0 -> stack[3])
|
||||
DirectCall ConcurrentModificationError.(v35, v1) # RA: R0 <- (R0, R1) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(stack[4] -> R1)
|
||||
ParallelMove output(stack[3] -> R1)
|
||||
Throw(v35) # RA: (R1)
|
||||
|
||||
--- getter LinkedList._modificationCount
|
||||
@@ -1704,8 +1706,8 @@ B0 = EntryBlock() dominates:(B13, B12)
|
||||
v6 = Parameter(arg2) # RA: param[5] <- ()
|
||||
ParallelMove output(param[5] -> vloc:R0, param[4] -> vloc:param[4], param[3] -> vloc:param[3], param[2] -> vloc:param[2])
|
||||
v9 = LoadStaticField(Zone._current) # RA: R0 <- () temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[0], param[2] -> R0)
|
||||
v11 = DirectCall identical(v9, v3) # RA: R0 <- (stack[0], R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, param[2] -> R1)
|
||||
v11 = DirectCall identical(v9, v3) # RA: R0 <- (R0, R1) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
Branch(v11, true: B12, false: B13) # RA: (R0)
|
||||
B12 = TargetBlock() idom:B0
|
||||
@@ -1725,34 +1727,34 @@ B24 = TargetBlock() idom:B13 dominates:(B41, B40)
|
||||
v37 = TypeCast(v3, _Zone, unchecked) # RA: R0 <- (R6)
|
||||
v38 = DirectCall Zone._enter(v37) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[1])
|
||||
ParallelMove spill(R0 -> stack[0])
|
||||
TryEntry(try-body: B40, catch-block: B41)
|
||||
B40 = TargetBlock() exception-handler:B41 idom:B24 dominates:(B47)
|
||||
ParallelMove output(param[3] -> R0, param[4] -> R1, param[5] -> R2)
|
||||
v46 = ClosureCall(v4, v5, v6) # RA: R0 <- (R0, R1, R2) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[2])
|
||||
ParallelMove spill(R0 -> stack[1])
|
||||
Goto(B47)
|
||||
B47 = JoinBlock(B40) idom:B40
|
||||
ParallelMove output(stack[1] -> R0)
|
||||
ParallelMove output(stack[0] -> R0)
|
||||
DirectCall Zone._leave(v38) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(stack[2] -> R1)
|
||||
ParallelMove output(stack[1] -> R1)
|
||||
ParallelMove input(vloc:R1 -> R0)
|
||||
Return(v46) # RA: (R0)
|
||||
B41 = CatchBlock() idom:B24
|
||||
v49 = Parameter(#exception) # RA: R1 <- ()
|
||||
v50 = Parameter(#stackTrace) # RA: R2 <- ()
|
||||
ParallelMove control(stack[1] -> R0)
|
||||
ParallelMove output(R1 -> stack[3], R2 -> stack[4])
|
||||
ParallelMove control(stack[0] -> R0)
|
||||
ParallelMove output(R1 -> stack[2], R2 -> stack[3])
|
||||
DirectCall Zone._leave(v38) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(stack[3] -> R1, stack[4] -> R2)
|
||||
ParallelMove output(stack[2] -> R1, stack[3] -> R2)
|
||||
Throw(v49, v50) # RA: (R1, R2)
|
||||
B25 = TargetBlock() idom:B13
|
||||
v29 = AllocateObject ArgumentError() # RA: R0 <- () temps: [R1, R2, R3, R4]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[5])
|
||||
ParallelMove spill(R0 -> stack[4])
|
||||
DirectCall ArgumentError.value(v29, v3, v31, v32) # RA: R0 <- (R0, R6, -, -) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(stack[5] -> R1)
|
||||
ParallelMove output(stack[4] -> R1)
|
||||
Throw(v29) # RA: (R1)
|
||||
|
||||
--- replaceAll
|
||||
@@ -1767,10 +1769,11 @@ B0 = EntryBlock() dominates:(B16, B45, B15)
|
||||
v3 = Parameter(replacement) # RA: param[2] <- ()
|
||||
ParallelMove output(param[2] -> vloc:param[2], param[1] -> vloc:param[1], param[0] -> vloc:R0)
|
||||
v7 = DirectCall _GrowableList.(v6, v4) # RA: R0 <- (-, -) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[0], param[2] -> R0)
|
||||
v11 = InterfaceCall getter String.length(v3) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, param[2] -> R1)
|
||||
ParallelMove spill(R0 -> stack[0])
|
||||
v11 = InterfaceCall getter String.length(v3) # RA: R0 <- (R1) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[6])
|
||||
ParallelMove spill(R0 -> stack[5])
|
||||
v148 = UnboxInt(v11) # RA: R1 <- (R0)
|
||||
CompareAndBranch int ==(v148, v149, true: B15, false: B16) # RA: (R1, -)
|
||||
B15 = TargetBlock() idom:B0 dominates:(B23)
|
||||
@@ -1784,7 +1787,7 @@ B15 = TargetBlock() idom:B0 dominates:(B23)
|
||||
Goto(B23)
|
||||
B23 = JoinBlock(B15, B27) idom:B15 dominates:(B28, B27) loop-header (depth:1 body:(B23, B27) back-edges:(B27))
|
||||
v141 = Phi(v149, v39) # RA: R2 <- (-, R0)
|
||||
v138 = Phi(v4, v42) # RA: R1 <- (-, R1)
|
||||
v138 = Phi(v4, v42) # RA: R1 <- (-, R2)
|
||||
ParallelMove output(R1 -> stack[1], R2 -> stack[2])
|
||||
v26 = InterfaceCall Iterator.moveNext(v21) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
@@ -1795,20 +1798,20 @@ B27 = TargetBlock() idom:B23 in-loop:B23
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[4])
|
||||
v37 = InterfaceCall getter Match.start(v31) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[5], stack[0] -> R0, stack[1] -> R1)
|
||||
v38 = DirectCall _addReplaceSlice(v7, v138, v37) # RA: R0 <- (R0, R1, stack[5]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[0] -> R1, stack[1] -> R2)
|
||||
v38 = DirectCall _addReplaceSlice(v7, v138, v37) # RA: R0 <- (R1, R2, R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
v150 = UnboxInt(v38) # RA: R0 <- (R0)
|
||||
ParallelMove output(stack[2] -> R1)
|
||||
v39 = BinaryIntOp +(v141, v150) # RA: R1 <- (R1, R0)
|
||||
ParallelMove output(stack[4] -> R0, R1 -> stack[2])
|
||||
v42 = InterfaceCall getter Match.end(v31) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R1, stack[2] -> R0)
|
||||
ParallelMove spill(R1 -> stack[1])
|
||||
ParallelMove input(stack[3] -> R0, R0 -> R2)
|
||||
ParallelMove output(R0 -> vloc:R2, stack[2] -> R0)
|
||||
ParallelMove spill(R2 -> stack[1])
|
||||
ParallelMove input(stack[3] -> R0, R0 -> R2, R2 -> R1)
|
||||
Goto(B23)
|
||||
B28 = TargetBlock() idom:B23
|
||||
ParallelMove control(stack[1] -> R1, stack[2] -> R0)
|
||||
ParallelMove control(stack[1] -> R2, stack[2] -> R0)
|
||||
Goto(B45)
|
||||
B16 = TargetBlock() idom:B0 dominates:(B52)
|
||||
ParallelMove control(param[1] -> R1)
|
||||
@@ -1817,49 +1820,49 @@ B16 = TargetBlock() idom:B0 dominates:(B52)
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
v50 = InterfaceCall getter Iterable.iterator(v49) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[7])
|
||||
ParallelMove input(R0 -> R2, UnboxedIntConstant(0) -> R0, IntConstant(0) -> R1)
|
||||
ParallelMove spill(R0 -> stack[6])
|
||||
ParallelMove input(R0 -> R1, UnboxedIntConstant(0) -> R0, IntConstant(0) -> R2)
|
||||
Goto(B52)
|
||||
B52 = JoinBlock(B16, B56) idom:B16 dominates:(B57, B56) loop-header (depth:1 body:(B52, B56) back-edges:(B56))
|
||||
v143 = Phi(v149, v75) # RA: R0 <- (-, R0)
|
||||
v140 = Phi(v4, v78) # RA: R1 <- (-, R1)
|
||||
ParallelMove output(R2 -> R0, R1 -> stack[1], R0 -> stack[2])
|
||||
v140 = Phi(v4, v78) # RA: R2 <- (-, R2)
|
||||
ParallelMove output(R1 -> R0, R2 -> stack[1], R0 -> stack[2])
|
||||
v55 = InterfaceCall Iterator.moveNext(v50) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
Branch(v55, true: B56, false: B57) # RA: (R0)
|
||||
B56 = TargetBlock() idom:B52 in-loop:B52
|
||||
ParallelMove output(stack[7] -> R0)
|
||||
ParallelMove output(stack[6] -> R0)
|
||||
v60 = InterfaceCall getter Iterator.current(v50) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[8])
|
||||
ParallelMove spill(R0 -> stack[7])
|
||||
v66 = InterfaceCall getter Match.start(v60) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[9], stack[0] -> R0, stack[1] -> R1)
|
||||
v67 = DirectCall _addReplaceSlice(v7, v140, v66) # RA: R0 <- (R0, R1, stack[9]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[0] -> R1, stack[1] -> R2)
|
||||
v67 = DirectCall _addReplaceSlice(v7, v140, v66) # RA: R0 <- (R1, R2, R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
v151 = UnboxInt(v67) # RA: R0 <- (R0)
|
||||
ParallelMove output(stack[2] -> R1)
|
||||
v68 = BinaryIntOp +(v143, v151) # RA: R0 <- (R1, R0)
|
||||
ParallelMove output(stack[0] -> R0, R0 -> stack[10])
|
||||
ParallelMove output(stack[0] -> R0, R0 -> stack[8])
|
||||
InterfaceCall List.add(v7, v3) # RA: R0 <- (R0, param[2]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(stack[6] -> R2)
|
||||
ParallelMove output(stack[5] -> R2)
|
||||
v152 = UnboxInt(v11) # RA: R0 <- (R2)
|
||||
ParallelMove output(stack[10] -> R1)
|
||||
ParallelMove output(stack[8] -> R1)
|
||||
v75 = BinaryIntOp +(v68, v152) # RA: R1 <- (R1, R0)
|
||||
ParallelMove output(R2 -> R0, R1 -> stack[2])
|
||||
v78 = InterfaceCall getter Match.end(v60) # RA: R0 <- (stack[8]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R1, stack[2] -> R0)
|
||||
ParallelMove spill(R1 -> stack[1])
|
||||
ParallelMove input(stack[7] -> R2)
|
||||
v78 = InterfaceCall getter Match.end(v60) # RA: R0 <- (stack[7]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R2, stack[2] -> R0)
|
||||
ParallelMove spill(R2 -> stack[1])
|
||||
ParallelMove input(stack[6] -> R1)
|
||||
Goto(B52)
|
||||
B57 = TargetBlock() idom:B52
|
||||
ParallelMove control(stack[1] -> R1, stack[2] -> R0)
|
||||
ParallelMove control(stack[1] -> R2, stack[2] -> R0)
|
||||
Goto(B45)
|
||||
B45 = JoinBlock(B57, B28) idom:B0 dominates:(B85, B92, B84)
|
||||
v142 = Phi(v143, v141) # RA: R0 <- (R0, R0)
|
||||
v139 = Phi(v140, v138) # RA: R1 <- (R1, R1)
|
||||
ParallelMove output(R1 -> stack[1], R0 -> stack[2])
|
||||
v153 = UnboxInt(v139) # RA: R2 <- (R1)
|
||||
CompareAndBranch int ==(v153, v149, true: B84, false: B85) # RA: (R2, -)
|
||||
v139 = Phi(v140, v138) # RA: R2 <- (R2, R2)
|
||||
ParallelMove output(R2 -> stack[1], R0 -> stack[2])
|
||||
v153 = UnboxInt(v139) # RA: R1 <- (R2)
|
||||
CompareAndBranch int ==(v153, v149, true: B84, false: B85) # RA: (R1, -)
|
||||
B84 = TargetBlock() idom:B45 dominates:(B90, B89)
|
||||
CompareAndBranch int ==(v142, v149, true: B89, false: B90) # RA: (R0, -)
|
||||
B89 = TargetBlock() idom:B84
|
||||
@@ -1867,27 +1870,27 @@ B89 = TargetBlock() idom:B84
|
||||
ParallelMove input(vloc:R0 -> R0)
|
||||
Return(v1) # RA: (R0)
|
||||
B90 = TargetBlock() idom:B84
|
||||
ParallelMove control(param[0] -> R2)
|
||||
ParallelMove control(param[0] -> R1)
|
||||
Goto(B92)
|
||||
B85 = TargetBlock() idom:B45
|
||||
ParallelMove control(param[0] -> R2)
|
||||
ParallelMove control(param[0] -> R1)
|
||||
Goto(B92)
|
||||
B92 = JoinBlock(B85, B90) idom:B45 dominates:(B110, B123, B109)
|
||||
ParallelMove output(R2 -> R0)
|
||||
ParallelMove output(R1 -> R0)
|
||||
v101 = InterfaceCall getter String.length(v1) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:stack[11], stack[0] -> R0, stack[1] -> R1)
|
||||
v102 = DirectCall _addReplaceSlice(v7, v139, v101) # RA: R0 <- (R0, R1, stack[11]) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0, stack[0] -> R1, stack[1] -> R2)
|
||||
v102 = DirectCall _addReplaceSlice(v7, v139, v101) # RA: R0 <- (R1, R2, R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
v154 = UnboxInt(v102) # RA: R0 <- (R0)
|
||||
ParallelMove output(stack[2] -> R1)
|
||||
v103 = BinaryIntOp +(v142, v154) # RA: R0 <- (R1, R0)
|
||||
ParallelMove output(param[2] -> R0, R0 -> stack[12])
|
||||
ParallelMove output(param[2] -> R0, R0 -> stack[9])
|
||||
v106 = DirectCall _isOneByte(v3) # RA: R0 <- (R0) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove spill(R0 -> stack[13])
|
||||
ParallelMove spill(R0 -> stack[10])
|
||||
Branch(v106, true: B109, false: B110) # RA: (R0)
|
||||
B109 = TargetBlock() idom:B92 dominates:(B116, B115)
|
||||
ParallelMove output(stack[12] -> R1)
|
||||
ParallelMove output(stack[9] -> R1)
|
||||
CompareAndBranch int <(v103, v155, true: B115, false: B116) # RA: (R1, -)
|
||||
B115 = TargetBlock() idom:B109 dominates:(B121, B120)
|
||||
ParallelMove output(param[0] -> R0)
|
||||
@@ -1895,7 +1898,7 @@ B115 = TargetBlock() idom:B109 dominates:(B121, B120)
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
Branch(v119, true: B120, false: B121) # RA: (R0)
|
||||
B120 = TargetBlock() idom:B115
|
||||
ParallelMove output(stack[12] -> R3)
|
||||
ParallelMove output(stack[9] -> R3)
|
||||
v156 = BoxInt(v103) # RA: R3 <- (R3) temps: [R0, R1, R2]
|
||||
ParallelMove output(param[0] -> R1, stack[0] -> R0)
|
||||
v130 = DirectCall _joinReplaceAllOneByteResult(v1, v7, v156) # RA: R0 <- (R1, R0, R3) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
@@ -1903,17 +1906,17 @@ B120 = TargetBlock() idom:B115
|
||||
ParallelMove input(vloc:R0 -> R0)
|
||||
Return(v130) # RA: (R0)
|
||||
B121 = TargetBlock() idom:B115
|
||||
ParallelMove control(param[0] -> R1, stack[0] -> R0, stack[12] -> R3)
|
||||
ParallelMove control(param[0] -> R1, stack[0] -> R0, stack[9] -> R3)
|
||||
Goto(B123)
|
||||
B116 = TargetBlock() idom:B109
|
||||
ParallelMove control(param[0] -> R1, stack[0] -> R0, R1 -> R3)
|
||||
Goto(B123)
|
||||
B110 = TargetBlock() idom:B92
|
||||
ParallelMove control(param[0] -> R1, stack[0] -> R0, stack[12] -> R3)
|
||||
ParallelMove control(param[0] -> R1, stack[0] -> R0, stack[9] -> R3)
|
||||
Goto(B123)
|
||||
B123 = JoinBlock(B110, B116, B121) idom:B92
|
||||
v157 = BoxInt(v103) # RA: R3 <- (R3) temps: [R2, R4, R5]
|
||||
ParallelMove output(stack[13] -> R2)
|
||||
ParallelMove output(stack[10] -> R2)
|
||||
v136 = DirectCall _joinReplaceAllResult(v1, v7, v157, v106) # RA: R0 <- (R1, R0, R3, R2) temps: [R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R19, R20, R23, R25, V0, V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, V29, V30]
|
||||
ParallelMove output(R0 -> vloc:R0)
|
||||
ParallelMove input(vloc:R0 -> R0)
|
||||
|
||||
Reference in New Issue
Block a user