Avoid creating SimpleType instances for default type

This commit is contained in:
Denis Zharkov
2017-05-24 13:54:31 +03:00
parent 8576054788
commit 59f2ba98a6
8 changed files with 95 additions and 81 deletions
+15 -15
View File
@@ -6,14 +6,14 @@ fun test() {
} while (s == "")
}
---------------------
"" <v0>: String NEW: r("") -> <v0>
"" <v0>: String NEW: r("") -> <v0>
s = "" !<v1>: *
{ val s: String s = "" } !<v1>: * COPY
s <v2>: OR{*, *} NEW: r(s) -> <v2>
"" <v3>: * NEW: r("") -> <v3>
s == "" <v4>: Boolean NEW: call(s == "", equals|<v2>, <v3>) -> <v4>
{ val s: String s = "" } !<v1>: * COPY
s <v2>: * NEW: r(s) -> <v2>
"" <v3>: * NEW: r("") -> <v3>
s == "" <v4>: Boolean NEW: call(s == "", equals|<v2>, <v3>) -> <v4>
do { val s: String s = "" } while (s == "") !<v5>: *
{ do { val s: String s = "" } while (s == "") } !<v5>: * COPY
{ do { val s: String s = "" } while (s == "") } !<v5>: * COPY
=====================
== test2 ==
fun test2() {
@@ -24,15 +24,15 @@ fun test2() {
}
}
---------------------
<v1>: * NEW: magic[VALUE_CONSUMER](true|<v0>) -> <v1>
true <v0>: Boolean NEW: r(true) -> <v0>
"" <v2>: String NEW: r("") -> <v2>
s <v3>: OR{*, *} NEW: r(s) -> <v3>
"" <v4>: * NEW: r("") -> <v4>
s != "" <v5>: Boolean NEW: call(s != "", equals|<v3>, <v4>) -> <v5>
<v1>: * NEW: magic[VALUE_CONSUMER](true|<v0>) -> <v1>
true <v0>: Boolean NEW: r(true) -> <v0>
"" <v2>: String NEW: r("") -> <v2>
s <v3>: * NEW: r(s) -> <v3>
"" <v4>: * NEW: r("") -> <v4>
s != "" <v5>: Boolean NEW: call(s != "", equals|<v3>, <v4>) -> <v5>
break !<v6>: *
if (s != "") break <v7>: * NEW: merge(if (s != "") break|!<v6>) -> <v7>
{ val s: String s = "" if (s != "") break } <v7>: * COPY
if (s != "") break <v7>: * NEW: merge(if (s != "") break|!<v6>) -> <v7>
{ val s: String s = "" if (s != "") break } <v7>: * COPY
while (true) { val s: String s = "" if (s != "") break } !<v8>: *
{ while (true) { val s: String s = "" if (s != "") break } } !<v8>: * COPY
{ while (true) { val s: String s = "" if (s != "") break } } !<v8>: * COPY
=====================
+9 -9
View File
@@ -10,15 +10,15 @@ fun test5() {
a.hashCode()
}
---------------------
3 <v0>: Int NEW: r(3) -> <v0>
3 <v0>: Int NEW: r(3) -> <v0>
a = 3 !<v1>: *
{ a = 3 } !<v1>: * COPY
5 <v2>: Int NEW: r(5) -> <v2>
{ a = 3 } !<v1>: * COPY
5 <v2>: Int NEW: r(5) -> <v2>
a = 5 !<v3>: *
{ a = 5 } !<v3>: * COPY
try { a = 3 } finally { a = 5 } <v4>: * NEW: merge(try { a = 3 } finally { a = 5 }|!<v1>) -> <v4>
a <v5>: OR{{<: Any}, {<: Any}} NEW: r(a) -> <v5>
hashCode() <v6>: * NEW: call(hashCode(), hashCode|<v5>) -> <v6>
a.hashCode() <v6>: * COPY
{ var a: Int try { a = 3 } finally { a = 5 } a.hashCode() } <v6>: * COPY
{ a = 5 } !<v3>: * COPY
try { a = 3 } finally { a = 5 } <v4>: * NEW: merge(try { a = 3 } finally { a = 5 }|!<v1>) -> <v4>
a <v5>: {<: Any} NEW: r(a) -> <v5>
hashCode() <v6>: * NEW: call(hashCode(), hashCode|<v5>) -> <v6>
a.hashCode() <v6>: * COPY
{ var a: Int try { a = 3 } finally { a = 5 } a.hashCode() } <v6>: * COPY
=====================