[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
@@ -1,2 +1,23 @@
fun box() = foo()
fun isEqual(l: Any?, r: Any?) = if (l == r) true else null
fun box(stepId: Int): String {
when (stepId) {
0, 8, 15, 16 -> isEqual(foo(), 42) ?: return "Fail"
1 -> isEqual(foo(), false) ?: return "Fail"
2 -> isEqual(foo(), 3.14) ?: return "Fail"
3, 5, 6, 12 -> isEqual(foo(), "string") ?: return "Fail"
4 -> isEqual(foo(), null) ?: return "Fail"
7 -> {
foo() // Unit
return "OK"
}
9 -> isEqual(foo(), 42 + 77) ?: return "Fail"
10 -> isEqual(foo(), 42 + 98 + 1) ?: return "Fail"
11 -> isEqual(foo(), 42 + 91) ?: return "Fail"
13 -> isEqual(foo(), 99) ?: return "Fail"
14 -> isEqual(foo(), 1L) ?: return "Fail"
else -> return "Unknown"
}
return "OK"
}
@@ -1,51 +1,3 @@
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:
dependencies: stdlib, lib1
dirty: m.kt
STEP 8:
dependencies: stdlib, lib1
dirty: m.kt
STEP 9:
dependencies: stdlib, lib1
dirty: m.kt
STEP 10:
dependencies: stdlib, lib1
dirty: m.kt
STEP 11:
dependencies: stdlib, lib1
dirty: m.kt
STEP 12:
dependencies: stdlib, lib1
dirty: m.kt
STEP 13:
dependencies: stdlib, lib1
dirty: m.kt
STEP 14:
dependencies: stdlib, lib1
dirty: m.kt
STEP 15:
dependencies: stdlib, lib1
dirty: m.kt
STEP 16:
STEP 0..16:
dependencies: stdlib, lib1
dirty: m.kt
@@ -2,35 +2,13 @@ MODULES: lib1, main
STEP 0:
libs: lib1, main
STEP 1:
dirty js: stdlib, lib1, main
STEP 1..6:
libs: lib1, main
STEP 2:
dirty js: lib1, main
STEP 7..8:
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:
libs: lib1, main
STEP 9:
libs: lib1, main
STEP 10:
libs: lib1, main
STEP 11:
libs: lib1, main
STEP 12:
libs: lib1, main
STEP 13:
libs: lib1, main
STEP 14:
libs: lib1, main
STEP 15:
libs: lib1, main
STEP 16:
dirty js: stdlib, lib1, main
STEP 9..16:
libs: lib1, main
dirty js: lib1, main