[JS IR] Enable IR dump for IC invalidation tests

Support 'fd.kotlin.js.debugMode' property in IC invalidation tests.
This commit is contained in:
Alexander Korepanov
2023-01-23 13:12:49 +01:00
committed by Space Team
parent c58314fddf
commit 1ec88ff560
6 changed files with 47 additions and 18 deletions
@@ -10,6 +10,8 @@ import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.openapi.vfs.local.CoreLocalFileSystem
import com.intellij.psi.PsiManager
import com.intellij.psi.SingleRootFileViewProvider
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
import org.jetbrains.kotlin.cli.js.klib.generateIrForKlibSerialization
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
@@ -36,6 +38,7 @@ import org.jetbrains.kotlin.js.testOld.V8IrJsTestChecker
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.serialization.js.ModuleKind
import org.jetbrains.kotlin.test.DebugMode
import org.jetbrains.kotlin.test.builders.LanguageVersionSettingsBuilder
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
import org.jetbrains.kotlin.test.TargetBackend
@@ -285,6 +288,18 @@ abstract class AbstractInvalidationTest(
}
}
private fun getPhaseConfig(stepId: Int): PhaseConfig {
if (DebugMode.fromSystemProperty("kotlin.js.debugMode") < DebugMode.SUPER_DEBUG) {
return PhaseConfig(jsPhases)
}
return PhaseConfig(
jsPhases,
dumpToDirectory = buildDir.resolve("irdump").resolve("step-$stepId").path,
toDumpStateAfter = jsPhases.toPhaseMap().values.toSet()
)
}
fun execute() {
for (projStep in projectInfo.steps) {
val testInfo = projStep.order.map { setupTestStep(projStep, it, true) }
@@ -308,6 +323,7 @@ abstract class AbstractInvalidationTest(
mainModule,
cfg,
JsGenerationGranularity.PER_MODULE,
getPhaseConfig(projStep.id),
setOf(FqName(BOX_FUNCTION_NAME)),
targetBackend == TargetBackend.JS_IR_ES6
)
@@ -191,7 +191,7 @@ abstract class AbstractJsKLibABITestCase : KtUsefulTestCase() {
irFactory = { IrFactoryImplForJsIC(WholeWorldStageController()) },
mainArguments = null,
compilerInterfaceFactory = { mainModule, cfg ->
JsIrCompilerWithIC(mainModule, cfg, JsGenerationGranularity.PER_MODULE, setOf(BOX_FUN_FQN))
JsIrCompilerWithIC(mainModule, cfg, JsGenerationGranularity.PER_MODULE, PhaseConfig(jsPhases), setOf(BOX_FUN_FQN))
}
)
val icCaches = cacheUpdater.actualizeCaches()