| --- 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) |
| |