e09282c8f2
Issue: https://github.com/dart-lang/sdk/issues/61635 Change-Id: Id8029dddd75b5f771ddf8197190d18aea9efd192 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/503080 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>
694 lines
19 KiB
Plaintext
694 lines
19 KiB
Plaintext
--- A.foo47
|
|
B0 = EntryBlock() dominates:(B14)
|
|
v8 = Constant(<int>)
|
|
v9 = Constant(0)
|
|
v17 = Constant(10)
|
|
v29 = Constant(1)
|
|
v37 = Constant(null)
|
|
v1 = Parameter(this)
|
|
TypeParameters(v1)
|
|
v4 = AllocateContext()
|
|
StoreInstanceField(#context-field:this, v4, v1)
|
|
v10 = DirectCall _GrowableList.(v8, v9)
|
|
v12 = AllocateContext()
|
|
StoreInstanceField(#context-field:i, v12, v9)
|
|
Goto(B14)
|
|
B14 = JoinBlock(B0, B19) idom:B0 dominates:(B20, B19) loop-header (depth:1 body:(B14, B19) back-edges:(B19))
|
|
v16 = LoadInstanceField(#context-field:i, v12)
|
|
v18 = Comparison int <(v16, v17)
|
|
Branch(v18, true: B19, false: B20)
|
|
B19 = TargetBlock() idom:B14 in-loop:B14
|
|
v23 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v23, v4)
|
|
StoreInstanceField(#closure-field[1], v23, v12)
|
|
v39 = DirectCall closure FunctionExpression(int () {
|
|
print(A.T%);
|
|
print(i);
|
|
i = i.{num.+}(2);
|
|
return i;
|
|
}) at A.foo47(v23)
|
|
InterfaceCall List.add(v10, v39)
|
|
v28 = LoadInstanceField(#context-field:i, v12)
|
|
v30 = BinaryIntOp +(v28, v29)
|
|
StoreInstanceField(#context-field:i, v12, v30)
|
|
Goto(B14)
|
|
B20 = TargetBlock() idom:B14
|
|
StoreInstanceField(A.aField, v1, v10)
|
|
v35 = LoadInstanceField(#context-field:this, v4)
|
|
DirectCall Object.(v35)
|
|
Return(v37)
|
|
|
|
--- closure FunctionExpression(int () {
|
|
print(A.T%);
|
|
print(i);
|
|
i = i.{num.+}(2);
|
|
return i;
|
|
}) at A.foo47
|
|
B0 = EntryBlock()
|
|
v10 = Constant(null)
|
|
v16 = Constant(2)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:this, v3)
|
|
v5 = TypeParameters(v4)
|
|
LoadInstanceField(#closure-field[0], v1)
|
|
v9 = LoadInstanceField(#closure-field[1], v1)
|
|
v11 = TypeLiteral(A.T%, v5, v10)
|
|
DirectCall print(v11)
|
|
v13 = LoadInstanceField(#context-field:i, v9)
|
|
DirectCall print(v13)
|
|
v15 = LoadInstanceField(#context-field:i, v9)
|
|
v17 = BinaryIntOp +(v15, v16)
|
|
StoreInstanceField(#context-field:i, v9, v17)
|
|
v19 = LoadInstanceField(#context-field:i, v9)
|
|
Return(v19)
|
|
|
|
--- getter A.aField
|
|
B0 = EntryBlock()
|
|
v1 = Parameter(this)
|
|
TypeParameters(v1)
|
|
v5 = LoadInstanceField(A.aField, v1)
|
|
Return(v5)
|
|
|
|
--- setter A.aField
|
|
B0 = EntryBlock()
|
|
v8 = Constant(null)
|
|
v1 = Parameter(this)
|
|
v2 = Parameter(#value)
|
|
TypeParameters(v1)
|
|
StoreInstanceField(A.aField, v1, v2)
|
|
Return(v8)
|
|
|
|
--- opaqueVal
|
|
B0 = EntryBlock()
|
|
v1 = Constant("42")
|
|
v2 = DirectCall int.parse(v1)
|
|
Return(v2)
|
|
|
|
--- callClosure
|
|
B0 = EntryBlock() dominates:(B6, B8, B5)
|
|
v3 = Constant(1)
|
|
v13 = Constant(null)
|
|
v1 = Parameter(func)
|
|
v2 = DirectCall opaqueVal()
|
|
v4 = Comparison int ==(v2, v3)
|
|
Branch(v4, true: B5, false: B6)
|
|
B5 = TargetBlock() idom:B0
|
|
ClosureCall(v1)
|
|
Goto(B8)
|
|
B6 = TargetBlock() idom:B0
|
|
Goto(B8)
|
|
B8 = JoinBlock(B6, B5) idom:B0
|
|
Return(v13)
|
|
|
|
--- foo42
|
|
B0 = EntryBlock() dominates:(B16)
|
|
Constant(true)
|
|
v23 = Constant(50)
|
|
v25 = Constant(60)
|
|
v27 = Constant(70)
|
|
v47 = Constant(1)
|
|
v59 = Constant(0)
|
|
v64 = Constant(10)
|
|
v83 = Constant(90)
|
|
v98 = Constant(null)
|
|
v1 = AllocateContext()
|
|
v2 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:a, v1, v2)
|
|
v4 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:b, v1, v4)
|
|
v6 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:c, v1, v6)
|
|
v8 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:d, v1, v8)
|
|
v10 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v10, v1)
|
|
DirectCall callClosure(v10)
|
|
v13 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v13, v1)
|
|
DirectCall callClosure(v13)
|
|
Goto(B16)
|
|
B16 = JoinBlock(B0, B50) idom:B0 dominates:(B50, B49) loop-header (depth:1 body:(B16, B50) back-edges:(B50))
|
|
v22 = AllocateContext()
|
|
StoreInstanceField(#context-field:e, v22, v23)
|
|
StoreInstanceField(#context-field:f, v22, v25)
|
|
StoreInstanceField(#context-field:g, v22, v27)
|
|
v29 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v29, v1)
|
|
DirectCall callClosure(v29)
|
|
v32 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v32, v22)
|
|
DirectCall callClosure(v32)
|
|
v35 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v35, v22)
|
|
DirectCall callClosure(v35)
|
|
v38 = LoadInstanceField(#context-field:d, v1)
|
|
DirectCall print(v38)
|
|
v40 = LoadInstanceField(#context-field:e, v22)
|
|
DirectCall print(v40)
|
|
v42 = LoadInstanceField(#context-field:f, v22)
|
|
DirectCall print(v42)
|
|
v44 = LoadInstanceField(#context-field:g, v22)
|
|
DirectCall print(v44)
|
|
v46 = DirectCall opaqueVal()
|
|
v48 = Comparison int ==(v46, v47)
|
|
Branch(v48, true: B49, false: B50)
|
|
B49 = TargetBlock() idom:B16 dominates:(B61)
|
|
v58 = AllocateContext()
|
|
StoreInstanceField(#context-field:i, v58, v59)
|
|
Goto(B61)
|
|
B61 = JoinBlock(B49, B81) idom:B49 dominates:(B67, B66) loop-header (depth:1 body:(B61, B66, B76, B81, B80) back-edges:(B81))
|
|
v63 = LoadInstanceField(#context-field:i, v58)
|
|
v65 = Comparison int <(v63, v64)
|
|
Branch(v65, true: B66, false: B67)
|
|
B66 = TargetBlock() idom:B61 dominates:(B76) in-loop:B61
|
|
v69 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:h, v58, v69)
|
|
v71 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v71, v58)
|
|
DirectCall callClosure(v71)
|
|
v74 = AllocateContext()
|
|
StoreInstanceField(#context-field:j, v74, v59)
|
|
Goto(B76)
|
|
B76 = JoinBlock(B66, B80) idom:B66 dominates:(B81, B80) loop-header (depth:2 body:(B76, B80) back-edges:(B80))
|
|
v78 = LoadInstanceField(#context-field:j, v74)
|
|
v79 = Comparison int <(v78, v64)
|
|
Branch(v79, true: B80, false: B81)
|
|
B80 = TargetBlock() idom:B76 in-loop:B76
|
|
StoreInstanceField(#context-field:k, v74, v83)
|
|
v85 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v85, v74)
|
|
DirectCall callClosure(v85)
|
|
v88 = LoadInstanceField(#context-field:k, v74)
|
|
DirectCall print(v88)
|
|
v90 = LoadInstanceField(#context-field:j, v74)
|
|
v91 = BinaryIntOp +(v90, v47)
|
|
StoreInstanceField(#context-field:j, v74, v91)
|
|
Goto(B76)
|
|
B81 = TargetBlock() idom:B76 in-loop:B61
|
|
v94 = LoadInstanceField(#context-field:i, v58)
|
|
v95 = BinaryIntOp +(v94, v47)
|
|
StoreInstanceField(#context-field:i, v58, v95)
|
|
Goto(B61)
|
|
B67 = TargetBlock() idom:B61
|
|
Return(v98)
|
|
B50 = TargetBlock() idom:B16 in-loop:B16
|
|
Goto(B16)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
print(a);
|
|
print(b);
|
|
print(d);
|
|
}) at foo42
|
|
B0 = EntryBlock()
|
|
v10 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
DirectCall print(v4)
|
|
v6 = LoadInstanceField(#context-field:b, v3)
|
|
DirectCall print(v6)
|
|
v8 = LoadInstanceField(#context-field:d, v3)
|
|
DirectCall print(v8)
|
|
Return(v10)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
print(b);
|
|
print(c);
|
|
}) at foo42
|
|
B0 = EntryBlock()
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:b, v3)
|
|
DirectCall print(v4)
|
|
v6 = LoadInstanceField(#context-field:c, v3)
|
|
DirectCall print(v6)
|
|
Return(v8)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
d = d.{num.+}(41);
|
|
}) at foo42
|
|
B0 = EntryBlock()
|
|
v5 = Constant(41)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:d, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:d, v3, v6)
|
|
Return(v8)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
e = e.{num.+}(51);
|
|
f = f.{num.+}(61);
|
|
}) at foo42
|
|
B0 = EntryBlock()
|
|
v5 = Constant(51)
|
|
v9 = Constant(61)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:e, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:e, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:f, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:f, v3, v10)
|
|
Return(v12)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
f = f.{num.+}(62);
|
|
g = g.{num.+}(72);
|
|
}) at foo42
|
|
B0 = EntryBlock()
|
|
v5 = Constant(62)
|
|
v9 = Constant(72)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:f, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:f, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:g, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:g, v3, v10)
|
|
Return(v12)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
print(h);
|
|
print(i);
|
|
}) at foo42
|
|
B0 = EntryBlock()
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:h, v3)
|
|
DirectCall print(v4)
|
|
v6 = LoadInstanceField(#context-field:i, v3)
|
|
DirectCall print(v6)
|
|
Return(v8)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
j = j.{num.+}(2);
|
|
k = k.{num.+}(91);
|
|
}) at foo42
|
|
B0 = EntryBlock()
|
|
v5 = Constant(2)
|
|
v9 = Constant(91)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:j, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:j, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:k, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:k, v3, v10)
|
|
Return(v12)
|
|
|
|
--- foo43
|
|
B0 = EntryBlock()
|
|
v2 = Constant(10)
|
|
v4 = Constant(20)
|
|
v6 = Constant(30)
|
|
v8 = Constant(40)
|
|
v22 = Constant(null)
|
|
v1 = AllocateContext()
|
|
StoreInstanceField(#context-field:a, v1, v2)
|
|
StoreInstanceField(#context-field:b, v1, v4)
|
|
StoreInstanceField(#context-field:c, v1, v6)
|
|
StoreInstanceField(#context-field:d, v1, v8)
|
|
v10 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v10, v1)
|
|
DirectCall callClosure(v10)
|
|
v13 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v13, v1)
|
|
DirectCall callClosure(v13)
|
|
v16 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v16, v1)
|
|
DirectCall callClosure(v16)
|
|
v19 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v19, v1)
|
|
DirectCall callClosure(v19)
|
|
Return(v22)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(11);
|
|
b = b.{num.+}(21);
|
|
}) at foo43
|
|
B0 = EntryBlock()
|
|
v5 = Constant(11)
|
|
v9 = Constant(21)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:b, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:b, v3, v10)
|
|
Return(v12)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(12);
|
|
c = c.{num.+}(32);
|
|
}) at foo43
|
|
B0 = EntryBlock()
|
|
v5 = Constant(12)
|
|
v9 = Constant(32)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:c, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:c, v3, v10)
|
|
Return(v12)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
b = b.{num.+}(23);
|
|
c = c.{num.+}(33);
|
|
}) at foo43
|
|
B0 = EntryBlock()
|
|
v5 = Constant(23)
|
|
v9 = Constant(33)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:b, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:b, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:c, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:c, v3, v10)
|
|
Return(v12)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
d = d.{num.+}(44);
|
|
}) at foo43
|
|
B0 = EntryBlock()
|
|
v5 = Constant(44)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:d, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:d, v3, v6)
|
|
Return(v8)
|
|
|
|
--- foo45
|
|
B0 = EntryBlock() dominates:(B11, B13, B10)
|
|
v2 = Constant(10)
|
|
v8 = Constant(1)
|
|
v15 = Constant(20)
|
|
v28 = Constant(30)
|
|
v34 = Constant(null)
|
|
v1 = AllocateContext()
|
|
StoreInstanceField(#context-field:a, v1, v2)
|
|
v4 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v4, v1)
|
|
DirectCall callClosure(v4)
|
|
v7 = DirectCall opaqueVal()
|
|
v9 = Comparison int ==(v7, v8)
|
|
Branch(v9, true: B10, false: B11)
|
|
B10 = TargetBlock() idom:B0
|
|
StoreInstanceField(#context-field:b, v1, v15)
|
|
v17 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v17, v1)
|
|
DirectCall callClosure(v17)
|
|
Goto(B13)
|
|
B11 = TargetBlock() idom:B0
|
|
Goto(B13)
|
|
B13 = JoinBlock(B11, B10) idom:B0 dominates:(B24, B26, B23)
|
|
v21 = DirectCall opaqueVal()
|
|
v22 = Comparison int ==(v21, v8)
|
|
Branch(v22, true: B23, false: B24)
|
|
B23 = TargetBlock() idom:B13
|
|
StoreInstanceField(#context-field:c, v1, v28)
|
|
v30 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v30, v1)
|
|
DirectCall callClosure(v30)
|
|
Goto(B26)
|
|
B24 = TargetBlock() idom:B13
|
|
Goto(B26)
|
|
B26 = JoinBlock(B24, B23) idom:B13
|
|
Return(v34)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(11);
|
|
}) at foo45
|
|
B0 = EntryBlock()
|
|
v5 = Constant(11)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
Return(v8)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(12);
|
|
b = b.{num.+}(22);
|
|
}) at foo45
|
|
B0 = EntryBlock()
|
|
v5 = Constant(12)
|
|
v9 = Constant(22)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:b, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:b, v3, v10)
|
|
Return(v12)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(13);
|
|
c = c.{num.+}(33);
|
|
}) at foo45
|
|
B0 = EntryBlock()
|
|
v5 = Constant(13)
|
|
v9 = Constant(33)
|
|
v12 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
v8 = LoadInstanceField(#context-field:c, v3)
|
|
v10 = BinaryIntOp +(v8, v9)
|
|
StoreInstanceField(#context-field:c, v3, v10)
|
|
Return(v12)
|
|
|
|
--- foo46
|
|
B0 = EntryBlock()
|
|
v12 = Constant(null)
|
|
v1 = AllocateContext()
|
|
v2 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:a, v1, v2)
|
|
v4 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:b, v1, v4)
|
|
v6 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v6, v1)
|
|
DirectCall callClosure(v6)
|
|
v9 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v9, v1)
|
|
DirectCall callClosure(v9)
|
|
Return(v12)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
callClosure(void () {
|
|
print(a);
|
|
});
|
|
}) at foo46
|
|
B0 = EntryBlock()
|
|
v7 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v4, v3)
|
|
DirectCall callClosure(v4)
|
|
Return(v7)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
print(a);
|
|
}) at foo46
|
|
B0 = EntryBlock()
|
|
v6 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
DirectCall print(v4)
|
|
Return(v6)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
callClosure(void () {
|
|
b = b.{num.+}(11);
|
|
});
|
|
}) at foo46
|
|
B0 = EntryBlock()
|
|
v7 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v4, v3)
|
|
DirectCall callClosure(v4)
|
|
Return(v7)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
b = b.{num.+}(11);
|
|
}) at foo46
|
|
B0 = EntryBlock()
|
|
v5 = Constant(11)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:b, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:b, v3, v6)
|
|
Return(v8)
|
|
|
|
--- foo48
|
|
B0 = EntryBlock() dominates:(B5, B7, B4)
|
|
v2 = Constant(1)
|
|
v10 = Constant(10)
|
|
v24 = Constant(20)
|
|
v30 = Constant(null)
|
|
v1 = DirectCall opaqueVal()
|
|
v3 = Comparison int ==(v1, v2)
|
|
Branch(v3, true: B4, false: B5)
|
|
B4 = TargetBlock() idom:B0
|
|
v9 = AllocateContext()
|
|
StoreInstanceField(#context-field:a, v9, v10)
|
|
v12 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v12, v9)
|
|
DirectCall callClosure(v12)
|
|
Goto(B7)
|
|
B5 = TargetBlock() idom:B0
|
|
Goto(B7)
|
|
B7 = JoinBlock(B5, B4) idom:B0 dominates:(B19, B21, B18)
|
|
v16 = DirectCall opaqueVal()
|
|
v17 = Comparison int ==(v16, v2)
|
|
Branch(v17, true: B18, false: B19)
|
|
B18 = TargetBlock() idom:B7
|
|
v23 = AllocateContext()
|
|
StoreInstanceField(#context-field:b, v23, v24)
|
|
v26 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v26, v23)
|
|
DirectCall callClosure(v26)
|
|
Goto(B21)
|
|
B19 = TargetBlock() idom:B7
|
|
Goto(B21)
|
|
B21 = JoinBlock(B19, B18) idom:B7
|
|
Return(v30)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(11);
|
|
}) at foo48
|
|
B0 = EntryBlock()
|
|
v5 = Constant(11)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
Return(v8)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
b = b.{num.+}(22);
|
|
}) at foo48
|
|
B0 = EntryBlock()
|
|
v5 = Constant(22)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:b, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:b, v3, v6)
|
|
Return(v8)
|
|
|
|
--- foo49
|
|
B0 = EntryBlock() dominates:(B9)
|
|
v7 = Constant(0)
|
|
v12 = Constant(4)
|
|
v21 = Constant(1)
|
|
v25 = Constant(null)
|
|
v1 = AllocateContext()
|
|
v2 = DirectCall opaqueVal()
|
|
StoreInstanceField(#context-field:a, v1, v2)
|
|
v4 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v4, v1)
|
|
DirectCall callClosure(v4)
|
|
Goto(B9)
|
|
B9 = JoinBlock(B0, B14) idom:B0 dominates:(B15, B14) loop-header (depth:1 body:(B9, B14) back-edges:(B14))
|
|
v27 = Phi(v7, v22)
|
|
v13 = Comparison int <(v27, v12)
|
|
Branch(v13, true: B14, false: B15)
|
|
B14 = TargetBlock() idom:B9 in-loop:B9
|
|
v17 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v17, v1)
|
|
DirectCall callClosure(v17)
|
|
v22 = BinaryIntOp +(v27, v21)
|
|
Goto(B9)
|
|
B15 = TargetBlock() idom:B9
|
|
Return(v25)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(10);
|
|
}) at foo49
|
|
B0 = EntryBlock()
|
|
v5 = Constant(10)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
Return(v8)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(20);
|
|
callClosure(void () {
|
|
a = a.{num.+}(30);
|
|
});
|
|
}) at foo49
|
|
B0 = EntryBlock()
|
|
v5 = Constant(20)
|
|
v11 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
v8 = AllocateClosure()
|
|
StoreInstanceField(#closure-field[0], v8, v3)
|
|
DirectCall callClosure(v8)
|
|
Return(v11)
|
|
|
|
--- closure FunctionExpression(void () {
|
|
a = a.{num.+}(30);
|
|
}) at foo49
|
|
B0 = EntryBlock()
|
|
v5 = Constant(30)
|
|
v8 = Constant(null)
|
|
v1 = Parameter(#closure)
|
|
v3 = LoadInstanceField(#closure-field[0], v1)
|
|
v4 = LoadInstanceField(#context-field:a, v3)
|
|
v6 = BinaryIntOp +(v4, v5)
|
|
StoreInstanceField(#context-field:a, v3, v6)
|
|
Return(v8)
|
|
|
|
--- main
|
|
B0 = EntryBlock()
|
|
v1 = Constant(null)
|
|
Return(v1)
|
|
|