[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:
Alexander Korepanov
2022-06-15 19:53:13 +02:00
committed by Space
parent 644447db84
commit 5b4e9e2966
62 changed files with 279 additions and 202 deletions
@@ -10,13 +10,13 @@ STEP 8:
added file: proxy.kt
STEP 9:
dependencies: lib1
updated inline imports: proxy.kt
updated imports: proxy.kt
STEP 10..14:
dependencies: lib1
modified ir: proxy.kt
STEP 15:
dependencies: lib1
updated inline imports: proxy.kt
updated imports: proxy.kt
STEP 16:
dependencies: lib1
modifications:
@@ -24,10 +24,10 @@ STEP 16:
modified ir: proxy.kt
STEP 17:
dependencies: lib1
updated inline imports: proxy.kt
updated imports: proxy.kt
STEP 18..22:
dependencies: lib1
modified ir: proxy.kt
STEP 23:
dependencies: lib1
updated inline imports: proxy.kt
updated imports: proxy.kt
@@ -3,13 +3,13 @@ STEP 0:
added file: m.kt
STEP 1:
dependencies: lib1
updated inline imports: m.kt
updated imports: m.kt
STEP 2..6:
dependencies: lib1
modified ir: m.kt
STEP 7:
dependencies: lib1
updated inline imports: m.kt
updated imports: m.kt
STEP 8:
dependencies: lib1, libProxy
modifications:
@@ -17,22 +17,22 @@ STEP 8:
modified ir: m.kt
STEP 9..13:
dependencies: lib1, libProxy
updated inline imports: m.kt
updated imports: m.kt
STEP 14:
dependencies: lib1, libProxy
modified ir: m.kt
STEP 15:
dependencies: lib1, libProxy
updated inline imports: m.kt
updated imports: m.kt
STEP 16:
dependencies: lib1, libProxy
modified ir: m.kt
STEP 17..21:
dependencies: lib1, libProxy
updated inline imports: m.kt
updated imports: m.kt
STEP 22:
dependencies: lib1, libProxy
modified ir: m.kt
STEP 23:
dependencies: lib1, libProxy
updated inline imports: m.kt
updated imports: m.kt