[WASM] DCE implementation

This commit is contained in:
Igor Yakovlev
2021-12-29 19:28:22 +01:00
committed by TeamCityServer
parent 84caad7ba2
commit 2ec0411a7f
22 changed files with 1005 additions and 593 deletions
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.backend.js.codegen.CompilerOutputSink
import org.jetbrains.kotlin.ir.backend.js.codegen.JsGenerationGranularity
import org.jetbrains.kotlin.ir.backend.js.codegen.JsGenerationOptions
import org.jetbrains.kotlin.ir.backend.js.codegen.generateEsModules
import org.jetbrains.kotlin.ir.backend.js.dce.eliminateDeadDeclarations
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer
import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformerTmp
@@ -33,7 +33,6 @@ import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.test.*
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
import org.jetbrains.kotlin.test.util.KtTestUtil
import java.io.Closeable
import java.io.File
@@ -176,15 +175,14 @@ abstract class BasicWasmBoxTest(
AnalyzerWithCompilerReport(config.configuration)
)
val directives = KotlinTestUtils.parseDirectives(FileUtil.loadFile(testFile))
val compilerResult = compileWasm(
sourceModule,
phaseConfig = phaseConfig,
irFactory = IrFactoryImpl,
exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, testFunction))),
propertyLazyInitialization = directives.contains(JsEnvironmentConfigurationDirectives.PROPERTY_LAZY_INITIALIZATION.name),
propertyLazyInitialization = true,
emitNameSection = true,
dceEnabled = true,
)
outputWatFile.write(compilerResult.wat)