Pseudocode: Do not regenerate receiver values
This commit is contained in:
@@ -79,8 +79,7 @@ L5:
|
||||
r(1) -> <v20>
|
||||
mark(t.x += 1)
|
||||
call(t.x += 1, plus|<v19>, <v20>) -> <v21>
|
||||
r(t) -> <v22>
|
||||
w(t.x|<v22>, <v21>)
|
||||
w(t.x|<v18>, <v21>)
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>]
|
||||
error:
|
||||
|
||||
@@ -36,9 +36,9 @@ false
|
||||
true <v13>: Boolean NEW: r(true) -> <v13>
|
||||
false && true <v14>: Boolean NEW: magic[AND](false && true|<v12>, <v13>) -> <v14>
|
||||
Test() <v15>: Test NEW: call(Test(), <init>) -> <v15>
|
||||
t <v16>: Test NEW: r(t) -> <v16>
|
||||
t <v16>: Test NEW: r(t) -> <v16>
|
||||
1 <v17>: Int NEW: r(1) -> <v17>
|
||||
t <v22>: Test NEW: r(t) -> <v22>
|
||||
t <v18>: Test NEW: r(t) -> <v18>
|
||||
x <v19>: Int NEW: r(x|<v18>) -> <v19>
|
||||
t.x <v19>: Int COPY
|
||||
1 <v20>: Int NEW: r(1) -> <v20>
|
||||
|
||||
@@ -31,28 +31,28 @@ sink:
|
||||
== foo ==
|
||||
fun foo() {
|
||||
null!!.doSomething()
|
||||
bar().doSomething
|
||||
bar().doSomething()
|
||||
}
|
||||
---------------------
|
||||
L0:
|
||||
1 <START>
|
||||
2 mark({ null!!.doSomething() bar().doSomething })
|
||||
2 mark({ null!!.doSomething() bar().doSomething() })
|
||||
mark(null!!.doSomething())
|
||||
r(null) -> <v0>
|
||||
magic[NOT_NULL_ASSERTION](null!!|<v0>) -> <v1>
|
||||
jmp(error) NEXT:[<ERROR>]
|
||||
- mark(doSomething()) PREV:[]
|
||||
- call(doSomething(), doSomething|<v1>) -> <v2> PREV:[]
|
||||
- mark(bar().doSomething) PREV:[]
|
||||
- mark(bar()) PREV:[]
|
||||
- call(bar(), bar) PREV:[]
|
||||
- jmp(error) NEXT:[<ERROR>] PREV:[]
|
||||
- mark(doSomething) PREV:[]
|
||||
- call(doSomething, doSomething|!<v3>) -> <v4> PREV:[]
|
||||
jmp(error) NEXT:[<ERROR>]
|
||||
- mark(doSomething()) PREV:[]
|
||||
- call(doSomething(), doSomething|<v1>) -> <v2> PREV:[]
|
||||
- mark(bar().doSomething()) PREV:[]
|
||||
- mark(bar()) PREV:[]
|
||||
- call(bar(), bar) PREV:[]
|
||||
- jmp(error) NEXT:[<ERROR>] PREV:[]
|
||||
- mark(doSomething()) PREV:[]
|
||||
- call(doSomething(), doSomething|!<v3>) -> <v4> PREV:[]
|
||||
L1:
|
||||
1 <END> NEXT:[<SINK>] PREV:[]
|
||||
1 <END> NEXT:[<SINK>] PREV:[]
|
||||
error:
|
||||
<ERROR> PREV:[jmp(error)]
|
||||
<ERROR> PREV:[jmp(error)]
|
||||
sink:
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
<SINK> PREV:[<ERROR>, <END>]
|
||||
=====================
|
||||
|
||||
@@ -4,5 +4,5 @@ fun bar(): Nothing = throw Exception()
|
||||
|
||||
fun foo() {
|
||||
null!!.doSomething()
|
||||
bar().doSomething
|
||||
bar().doSomething()
|
||||
}
|
||||
@@ -10,15 +10,15 @@ Exception() <v0>: {<: Throwable} NEW: call(Exception(), <init>) -> <v0>
|
||||
== foo ==
|
||||
fun foo() {
|
||||
null!!.doSomething()
|
||||
bar().doSomething
|
||||
bar().doSomething()
|
||||
}
|
||||
---------------------
|
||||
null <v0>: * NEW: r(null) -> <v0>
|
||||
null!! <v1>: * NEW: magic[NOT_NULL_ASSERTION](null!!|<v0>) -> <v1>
|
||||
doSomething() <v2>: * NEW: call(doSomething(), doSomething|<v1>) -> <v2>
|
||||
null!!.doSomething() <v2>: * COPY
|
||||
bar() !<v3>: *
|
||||
doSomething <v4>: * NEW: call(doSomething, doSomething|!<v3>) -> <v4>
|
||||
bar().doSomething <v4>: * COPY
|
||||
{ null!!.doSomething() bar().doSomething } <v4>: * COPY
|
||||
null <v0>: * NEW: r(null) -> <v0>
|
||||
null!! <v1>: * NEW: magic[NOT_NULL_ASSERTION](null!!|<v0>) -> <v1>
|
||||
doSomething() <v2>: * NEW: call(doSomething(), doSomething|<v1>) -> <v2>
|
||||
null!!.doSomething() <v2>: * COPY
|
||||
bar() !<v3>: *
|
||||
doSomething() <v4>: * NEW: call(doSomething(), doSomething|!<v3>) -> <v4>
|
||||
bar().doSomething() <v4>: * COPY
|
||||
{ null!!.doSomething() bar().doSomething() } <v4>: * COPY
|
||||
=====================
|
||||
|
||||
Reference in New Issue
Block a user