[JS IR] IC improvements

- Reuse a built fragment
  - Use cache for saving built JS code
This commit is contained in:
Alexander Korepanov
2022-03-30 18:19:28 +03:00
committed by Space
parent f8ae097e50
commit 9952d43252
137 changed files with 1280 additions and 899 deletions
@@ -3,25 +3,7 @@ STEP 0:
modifications:
U : proxy.kt.0.txt -> proxy.kt
dirty: proxy.kt
STEP 1:
dependencies: stdlib
flags: FP
STEP 2:
dependencies: stdlib
flags: FP
STEP 3:
dependencies: stdlib
flags: FP
STEP 4:
dependencies: stdlib
flags: FP
STEP 5:
dependencies: stdlib
flags: FP
STEP 6:
dependencies: stdlib
flags: FP
STEP 7:
STEP 1..7:
dependencies: stdlib
flags: FP
STEP 8:
@@ -29,25 +11,7 @@ STEP 8:
modifications:
U : proxy.kt.1.txt -> proxy.kt
dirty: proxy.kt
STEP 9:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 10:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 11:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 12:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 13:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 14:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 15:
STEP 9..15:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 16:
@@ -55,24 +19,6 @@ STEP 16:
modifications:
U : proxy.kt.2.txt -> proxy.kt
dirty: proxy.kt
STEP 17:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 18:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 19:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 20:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 21:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 22:
dependencies: stdlib, lib1
dirty: proxy.kt
STEP 23:
STEP 17..23:
dependencies: stdlib, lib1
dirty: proxy.kt
@@ -1,2 +1,14 @@
fun box() = foo("demo")
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
fun box(stepId: Int): String {
when (stepId) {
in 0..5 -> isEqual(foo("test"), 123) ?: return "Fail"
in 8..13 -> isEqual(foo("test"), 123) ?: return "Fail"
in 16..21 -> isEqual(foo("test"), 123) ?: return "Fail"
6, 14, 22 -> isEqual(foo("test"), 99) ?: return "Fail"
7, 15, 23 -> isEqual(foo("test"), "test") ?: return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,2 +1,14 @@
fun box() = foo_proxy("demo")
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
fun box(stepId: Int): String {
when (stepId) {
in 0..5 -> isEqual(foo_proxy("test"), 123) ?: return "Fail"
in 8..13 -> isEqual(foo_proxy("test"), 123) ?: return "Fail"
in 16..21 -> isEqual(foo_proxy("test"), 123) ?: return "Fail"
6, 14, 22 -> isEqual(foo_proxy("test"), 99) ?: return "Fail"
7, 15, 23 -> isEqual(foo_proxy("test"), "test") ?: return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,25 +1,4 @@
STEP 0:
dependencies: stdlib, lib1
dirty: m.kt
STEP 1:
dependencies: stdlib, lib1
dirty: m.kt
STEP 2:
dependencies: stdlib, lib1
dirty: m.kt
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:
STEP 0..7:
dependencies: stdlib, lib1
dirty: m.kt
STEP 8:
@@ -27,48 +6,6 @@ STEP 8:
modifications:
U : m.proxy.kt.txt -> m.kt
dirty: m.kt
STEP 9:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 10:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 11:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 12:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 13:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 14:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 15:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 16:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 17:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 18:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 19:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 20:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 21:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 22:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
STEP 23:
STEP 9..23:
dependencies: stdlib, lib1, libProxy
dirty: m.kt
@@ -2,49 +2,22 @@ MODULES: lib1, main, libProxy
STEP 0:
libs: lib1, main
STEP 1:
dirty js: stdlib, lib1, main
STEP 1..5:
libs: lib1, main
STEP 2:
dirty js: lib1, main
STEP 6..7:
libs: lib1, main
STEP 3:
libs: lib1, main
STEP 4:
libs: lib1, main
STEP 5:
libs: lib1, main
STEP 6:
libs: lib1, main
STEP 7:
libs: lib1, main
STEP 8:
dirty js: stdlib, lib1, main
STEP 8..13:
libs: lib1, libProxy, main
STEP 9:
dirty js: lib1, libProxy, main
STEP 14..16:
libs: lib1, libProxy, main
STEP 10:
dirty js: stdlib, lib1, libProxy, main
STEP 17..21:
libs: lib1, libProxy, main
STEP 11:
libs: lib1, libProxy, main
STEP 12:
libs: lib1, libProxy, main
STEP 13:
libs: lib1, libProxy, main
STEP 14:
libs: lib1, libProxy, main
STEP 15:
libs: lib1, libProxy, main
STEP 16:
libs: lib1, libProxy, main
STEP 17:
libs: lib1, libProxy, main
STEP 18:
libs: lib1, libProxy, main
STEP 19:
libs: lib1, libProxy, main
STEP 20:
libs: lib1, libProxy, main
STEP 21:
libs: lib1, libProxy, main
STEP 22:
libs: lib1, libProxy, main
STEP 23:
dirty js: lib1, libProxy, main
STEP 22..23:
libs: lib1, libProxy, main
dirty js: stdlib, lib1, libProxy, main