[JS IR BE] Optimize test performance

* temporary disable verification
 * restore default/full runtime source set scheme
This commit is contained in:
Roman Artemev
2019-02-27 18:55:31 +03:00
committed by romanart
parent 5033d99380
commit d085e66aa3
2 changed files with 37 additions and 27 deletions
@@ -40,8 +40,8 @@ fun buildConfiguration(environment: KotlinCoreEnvironment): CompilerConfiguratio
return runtimeConfiguration return runtimeConfiguration
} }
private val resultJs = "js/js.translator/testData/out/klibs/result.js" private val fullRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeFull/"
private val runtimeKlibPath = "js/js.translator/testData/out/klibs/runtime/" private val defaultRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeDefault/"
fun main() { fun main() {
@@ -56,15 +56,21 @@ fun main() {
return psiManager.findFile(file) as KtFile return psiManager.findFile(file) as KtFile
} }
val result = compile(
environment.project,
(JsIrTestRuntime.FULL.sources).map(::createPsiFile),
buildConfiguration(environment),
emptyList(),
CompilationMode.KLIB_WITH_JS,
emptyList(),
runtimeKlibPath
)
result.generatedCode?.let { File(resultJs).writeText(it) } fun buildKlib(sources: List<String>, outputPath: String) {
val result = compile(
environment.project,
sources.map(::createPsiFile),
buildConfiguration(environment),
emptyList(),
CompilationMode.KLIB_WITH_JS,
emptyList(),
outputPath
)
result.generatedCode?.let { File(outputPath, "result.js").writeText(it) }
}
buildKlib(JsIrTestRuntime.FULL.sources, fullRuntimeKlibPath)
buildKlib(JsIrTestRuntime.DEFAULT.sources, defaultRuntimeKlibPath)
} }
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.js.test package org.jetbrains.kotlin.js.test
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.ir.backend.js.CompilationMode import org.jetbrains.kotlin.ir.backend.js.CompilationMode
import org.jetbrains.kotlin.ir.backend.js.CompiledModule import org.jetbrains.kotlin.ir.backend.js.CompiledModule
import org.jetbrains.kotlin.ir.backend.js.compile import org.jetbrains.kotlin.ir.backend.js.compile
@@ -17,13 +16,13 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import java.io.File import java.io.File
private var runtimeResults = mutableMapOf<JsIrTestRuntime, CompiledModule>() private val fullRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeFull/"
private val defaultRuntimeKlibPath = "js/js.translator/testData/out/klibs/runtimeDefault/"
private val runtimeKlibPath = "js/js.translator/testData/out/klibs/runtime/"
private val JS_IR_RUNTIME_MODULE_NAME = "JS_IR_RUNTIME" private val JS_IR_RUNTIME_MODULE_NAME = "JS_IR_RUNTIME"
private val runtimeKlib = CompiledModule(JS_IR_RUNTIME_MODULE_NAME, null, null, runtimeKlibPath, emptyList(), true) private val fullRuntimeKlib = CompiledModule(JS_IR_RUNTIME_MODULE_NAME, null, null, fullRuntimeKlibPath, emptyList(), true)
private val defaultRuntimeKlib = CompiledModule(JS_IR_RUNTIME_MODULE_NAME, null, null, defaultRuntimeKlibPath, emptyList(), true)
abstract class BasicIrBoxTest( abstract class BasicIrBoxTest(
pathToTestDir: String, pathToTestDir: String,
@@ -53,6 +52,9 @@ abstract class BasicIrBoxTest(
super.doTest(filePath, expectedResult, mainCallParameters, coroutinesPackage) super.doTest(filePath, expectedResult, mainCallParameters, coroutinesPackage)
} }
private val runtimes = mapOf(JsIrTestRuntime.DEFAULT to defaultRuntimeKlib,
JsIrTestRuntime.FULL to fullRuntimeKlib)
override fun translateFiles( override fun translateFiles(
units: List<TranslationUnit>, units: List<TranslationUnit>,
outputFile: File, outputFile: File,
@@ -73,17 +75,19 @@ abstract class BasicIrBoxTest(
.filterNot { it.virtualFilePath.contains(BasicBoxTest.COMMON_FILES_DIR_PATH) } .filterNot { it.virtualFilePath.contains(BasicBoxTest.COMMON_FILES_DIR_PATH) }
// config.configuration.put(CommonConfigurationKeys.EXCLUDED_ELEMENTS_FROM_DUMPING, setOf("<JS_IR_RUNTIME>")) // config.configuration.put(CommonConfigurationKeys.EXCLUDED_ELEMENTS_FROM_DUMPING, setOf("<JS_IR_RUNTIME>"))
config.configuration.put( // config.configuration.put(
CommonConfigurationKeys.PHASES_TO_VALIDATE_AFTER, // CommonConfigurationKeys.PHASES_TO_VALIDATE_AFTER,
setOf( // setOf(
"RemoveInlineFunctionsWithReifiedTypeParametersLowering", // "RemoveInlineFunctionsWithReifiedTypeParametersLowering",
"InnerClassConstructorCallsLowering", // "InnerClassConstructorCallsLowering",
"InlineClassLowering", "ConstLowering" // "InlineClassLowering", "ConstLowering"
) // )
) // )
val runtimeKlib = runtimes[runtime]
val dependencyNames = config.configuration[JSConfigurationKeys.LIBRARIES]!!.map { File(it).name } val dependencyNames = config.configuration[JSConfigurationKeys.LIBRARIES]!!.map { File(it).name }
val dependencies = listOf(runtimeKlib) + dependencyNames.mapNotNull { val dependencies = listOfNotNull(runtimeKlib) + dependencyNames.mapNotNull {
compilationCache[it] compilationCache[it]
} }
@@ -103,7 +107,7 @@ abstract class BasicIrBoxTest(
listOf(FqName((testPackage?.let { "$it." } ?: "") + testFunction)), listOf(FqName((testPackage?.let { "$it." } ?: "") + testFunction)),
if (isMainModule) CompilationMode.JS_AGAINST_KLIB else CompilationMode.KLIB, if (isMainModule) CompilationMode.JS_AGAINST_KLIB else CompilationMode.KLIB,
dependencies, dependencies,
klibPath = actualOutputFile actualOutputFile
) )
compilationCache[outputFile.name.replace(".js", ".meta.js")] = result compilationCache[outputFile.name.replace(".js", ".meta.js")] = result