[JS IR] IC improvements
- Reuse a built fragment - Use cache for saving built JS code
This commit is contained in:
committed by
Space
parent
f8ae097e50
commit
9952d43252
+48
-1
@@ -1,6 +1,53 @@
|
||||
|
||||
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
|
||||
|
||||
inline fun test1(x: () -> Any) = x()
|
||||
fun test2(x: () -> Any) = x()
|
||||
inline fun test3(x: () -> Any) = x()
|
||||
|
||||
fun box() = test1(::foo1).toString() + test2(::foo2).toString() + test3 { foo3() }.toString()
|
||||
fun box(stepId: Int): String {
|
||||
when (stepId) {
|
||||
0 -> {
|
||||
isEqual(test1(::foo1), "foo1") ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), "foo2") ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
|
||||
}
|
||||
1 -> {
|
||||
isEqual(test1(::foo1), "foo1 update") ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), "foo2") ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
|
||||
}
|
||||
2 -> {
|
||||
isEqual(test1(::foo1), "foo1 update") ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), "foo2 update") ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
|
||||
}
|
||||
3 -> {
|
||||
isEqual(test1(::foo1), 77) ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), "foo2 update") ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
|
||||
}
|
||||
4 -> {
|
||||
isEqual(test1(::foo1), 77) ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3") ?: return "Fail foo3"
|
||||
}
|
||||
5, 6 -> {
|
||||
isEqual(test1(::foo1), 77) ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3 update") ?: return "Fail foo3"
|
||||
}
|
||||
7, 8 -> {
|
||||
isEqual(test1(::foo1), 99) ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3 update") ?: return "Fail foo3"
|
||||
}
|
||||
9 -> {
|
||||
isEqual(test1(::foo1), 88) ?: return "Fail foo1"
|
||||
isEqual(test2(::foo2), 88) ?: return "Fail foo2"
|
||||
isEqual(test3 { foo3() }, "foo3 update") ?: return "Fail foo3"
|
||||
}
|
||||
else -> return "Unknown"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
|
||||
+2
-22
@@ -1,28 +1,8 @@
|
||||
STEP 0:
|
||||
STEP 0..1:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib, lib1
|
||||
STEP 2:
|
||||
dependencies: stdlib, lib1
|
||||
STEP 3:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
STEP 4:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
STEP 5:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
STEP 6:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
STEP 7:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
STEP 8:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
STEP 9:
|
||||
STEP 3..9:
|
||||
dependencies: stdlib, lib1
|
||||
dirty: m.kt
|
||||
|
||||
Reference in New Issue
Block a user