[JS IR] Fix IC invalidation process when symbols are modified
The patch fixes the cases of IC invalidation when symbols are modified: adding and removing inline, data, in, out, suspend qualifiers. For that purpose an extra hash is used. It is written in a direct dependency graph into an IC cache metadata file. For inline functions a transitive hash is used. For non-inline functions, classes, and others a symbol hash is used. The invalidation routine marks the file as dirty (with 'updated imports' state) if hash is modified. ^KT-51083 Fixed ^KT-51088 Fixed ^KT-51090 Fixed ^KT-51099 Fixed
This commit is contained in:
committed by
Space
parent
644447db84
commit
5b4e9e2966
+2
@@ -0,0 +1,2 @@
|
||||
data class Demo(val x: Int) {
|
||||
}
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
// TODO: After KT-51088, m.kt from main module must be dirty
|
||||
class Demo(val x: Int) {
|
||||
}
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
// TODO: After KT-51088, m.kt from main module must be dirty
|
||||
data class Demo(val x: Int) {
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
class Demo(val x: Int) {
|
||||
}
|
||||
-1
@@ -1,3 +1,2 @@
|
||||
// TODO: After KT-51088, m.kt from main module must be dirty
|
||||
inline class Demo(val x: Int) {
|
||||
}
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
STEP 0:
|
||||
modifications:
|
||||
U : l1.0_simple_class.kt -> l1.kt
|
||||
U : l1.0_data_class.kt -> l1.kt
|
||||
added file: l1.kt
|
||||
STEP 1:
|
||||
modifications:
|
||||
U : l1.1_data_class.kt -> l1.kt
|
||||
U : l1.1_simple_class.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
updated exports: l1.kt
|
||||
STEP 2:
|
||||
modifications:
|
||||
U : l1.0_simple_class.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
STEP 3:
|
||||
modifications:
|
||||
U : l1.2_inline_class.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
updated exports: l1.kt
|
||||
STEP 3:
|
||||
modifications:
|
||||
U : l1.1_simple_class.kt -> l1.kt
|
||||
modified ir: l1.kt
|
||||
updated exports: l1.kt
|
||||
|
||||
Reference in New Issue
Block a user