[JS IR] Support IR dump in JS tests
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.js.test.converters
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||
import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap
|
||||
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
@@ -34,6 +35,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
||||
import org.jetbrains.kotlin.test.DebugMode
|
||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
|
||||
import org.jetbrains.kotlin.test.frontend.classic.moduleDescriptorProvider
|
||||
@@ -105,6 +107,21 @@ class JsIrBackendFacade(
|
||||
).dump(module, firstTimeCompilation)
|
||||
}
|
||||
|
||||
val debugMode = DebugMode.fromSystemProperty("kotlin.js.debugMode")
|
||||
val phaseConfig = if (debugMode >= DebugMode.SUPER_DEBUG) {
|
||||
val dumpOutputDir = File(
|
||||
JsEnvironmentConfigurator.getJsArtifactsOutputDir(testServices),
|
||||
JsEnvironmentConfigurator.getJsArtifactSimpleName(testServices, module.name) + "-irdump"
|
||||
)
|
||||
PhaseConfig(
|
||||
jsPhases,
|
||||
dumpToDirectory = dumpOutputDir.path,
|
||||
toDumpStateAfter = jsPhases.toPhaseMap().values.toSet()
|
||||
)
|
||||
} else {
|
||||
PhaseConfig(jsPhases)
|
||||
}
|
||||
|
||||
val loweredIr = compileIr(
|
||||
irModuleFragment,
|
||||
MainModule.Klib(inputArtifact.outputFile.absolutePath),
|
||||
@@ -113,7 +130,7 @@ class JsIrBackendFacade(
|
||||
irModuleFragment.irBuiltins,
|
||||
symbolTable,
|
||||
deserializer,
|
||||
PhaseConfig(jsPhases), // TODO debug mode
|
||||
phaseConfig,
|
||||
exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, TEST_FUNCTION))),
|
||||
dceDriven = false,
|
||||
dceRuntimeDiagnostic = null,
|
||||
@@ -341,4 +358,4 @@ fun String.augmentWithModuleName(moduleName: String): String {
|
||||
return removeSuffix("_v5.js") + "-${moduleName}_v5.js"
|
||||
}
|
||||
|
||||
fun File.augmentWithModuleName(moduleName: String): File = File(absolutePath.augmentWithModuleName(moduleName))
|
||||
fun File.augmentWithModuleName(moduleName: String): File = File(absolutePath.augmentWithModuleName(moduleName))
|
||||
|
||||
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||
import org.jetbrains.kotlin.test.DebugMode
|
||||
import org.jetbrains.kotlin.test.Directives
|
||||
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
|
||||
import org.jetbrains.kotlin.test.TestFiles
|
||||
@@ -147,15 +148,9 @@ abstract class BasicWasmBoxTest(
|
||||
testFunction: String
|
||||
) {
|
||||
val filesToCompile = units.map { (it as TranslationUnit.SourceFile).file }
|
||||
val debugMode: Int = when (System.getProperty("kotlin.wasm.debugMode")) {
|
||||
"2", "super_debug" -> 2
|
||||
"1", "true", "debug" -> 1
|
||||
"0", "false", "", null -> 0
|
||||
else -> 0
|
||||
}
|
||||
|
||||
val phaseConfig = if (debugMode >= 1) {
|
||||
val allPhasesSet = if (debugMode >= 2) wasmPhases.toPhaseMap().values.toSet() else emptySet()
|
||||
val debugMode = DebugMode.fromSystemProperty("kotlin.wasm.debugMode")
|
||||
val phaseConfig = if (debugMode >= DebugMode.DEBUG) {
|
||||
val allPhasesSet = if (debugMode >= DebugMode.SUPER_DEBUG) wasmPhases.toPhaseMap().values.toSet() else emptySet()
|
||||
val dumpOutputDir = File(outputWatFile.parent, outputWatFile.nameWithoutExtension + "-irdump")
|
||||
println("\n ------ Dumping phases to file://$dumpOutputDir")
|
||||
println("\n ------ KT file://${testFile.absolutePath}")
|
||||
@@ -211,7 +206,7 @@ abstract class BasicWasmBoxTest(
|
||||
|
||||
outputJsFile.write(compilerResult.js + "\n" + testRunner)
|
||||
|
||||
if (debugMode >= 2) {
|
||||
if (debugMode >= DebugMode.SUPER_DEBUG) {
|
||||
createDirectoryToRunInBrowser(outputBrowserDir, compilerResult)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user