Merge ES6 pipeline

This commit is contained in:
Anton Bannykh
2020-06-03 12:48:19 +03:00
parent a1c9ee1013
commit 2e68526b44
6 changed files with 8 additions and 97 deletions
@@ -637,86 +637,6 @@ private val cleanupLoweringPhase = makeBodyLoweringPhase(
)
val loweringList = listOf<Lowering>(
scriptRemoveReceiverLowering,
validateIrBeforeLowering,
testGenerationPhase,
expectDeclarationsRemovingPhase,
stripTypeAliasDeclarationsPhase,
arrayConstructorPhase,
lateinitNullableFieldsPhase,
lateinitDeclarationLoweringPhase,
lateinitUsageLoweringPhase,
sharedVariablesLoweringPhase,
localClassesInInlineLambdasPhase,
localClassesInInlineFunctionsPhase,
localClassesExtractionFromInlineFunctionsPhase,
functionInliningPhase,
copyInlineFunctionBodyLoweringPhase,
createScriptFunctionsPhase,
callableReferenceLowering,
singleAbstractMethodPhase,
tailrecLoweringPhase,
enumClassConstructorLoweringPhase,
enumClassConstructorBodyLoweringPhase,
localDelegatedPropertiesLoweringPhase,
localDeclarationsLoweringPhase,
localClassExtractionPhase,
innerClassesLoweringPhase,
innerClassesMemberBodyLoweringPhase,
innerClassConstructorCallsLoweringPhase,
propertiesLoweringPhase,
primaryConstructorLoweringPhase,
delegateToPrimaryConstructorLoweringPhase,
annotationConstructorLowering,
initializersLoweringPhase,
initializersCleanupLoweringPhase,
kotlinNothingValueExceptionPhase,
// Common prefix ends
enumEntryInstancesLoweringPhase,
enumEntryInstancesBodyLoweringPhase,
enumClassCreateInitializerLoweringPhase,
enumEntryCreateGetInstancesFunsLoweringPhase,
enumSyntheticFunsLoweringPhase,
enumUsageLoweringPhase,
enumEntryRemovalLoweringPhase,
suspendFunctionsLoweringPhase,
propertyReferenceLoweringPhase,
interopCallableReferenceLoweringPhase,
returnableBlockLoweringPhase,
forLoopsLoweringPhase,
primitiveCompanionLoweringPhase,
propertyAccessorInlinerLoweringPhase,
foldConstantLoweringPhase,
privateMembersLoweringPhase,
privateMemberUsagesLoweringPhase,
defaultArgumentStubGeneratorPhase,
defaultArgumentPatchOverridesPhase,
defaultParameterInjectorPhase,
defaultParameterCleanerPhase,
jsDefaultCallbackGeneratorPhase,
removeInlineFunctionsWithReifiedTypeParametersLoweringPhase,
throwableSuccessorsLoweringPhase,
varargLoweringPhase,
multipleCatchesLoweringPhase,
bridgesConstructionPhase,
typeOperatorLoweringPhase,
secondaryConstructorLoweringPhase,
secondaryFactoryInjectorLoweringPhase,
classReferenceLoweringPhase,
inlineClassDeclarationLoweringPhase,
inlineClassUsageLoweringPhase,
autoboxingTransformerPhase,
blockDecomposerLoweringPhase,
constLoweringPhase,
objectDeclarationLoweringPhase,
objectUsageLoweringPhase,
captureStackTraceInThrowablesPhase,
callsLoweringPhase,
cleanupLoweringPhase,
validateIrAfterLowering
)
val es6LoweringList = listOf<Lowering>(
scriptRemoveReceiverLowering,
validateIrBeforeLowering,
testGenerationPhase,
@@ -782,6 +702,7 @@ val es6LoweringList = listOf<Lowering>(
multipleCatchesLoweringPhase,
bridgesConstructionPhase,
typeOperatorLoweringPhase,
secondaryConstructorLoweringPhase,
secondaryFactoryInjectorLoweringPhase,
classReferenceLoweringPhase,
inlineClassDeclarationLoweringPhase,
@@ -808,11 +729,3 @@ val jsPhases = namedIrModulePhase(
acc.then(lowering.modulePhase)
}
)
val jsEs6Phases = namedIrModulePhase(
name = "ES6IrModuleLowering",
description = "ES6 IR module lowering",
lower = es6LoweringList.drop(1).fold(es6LoweringList[0].modulePhase) { acc: CompilerPhase<JsIrBackendContext, IrModuleFragment, IrModuleFragment>, lowering ->
acc.then(lowering.modulePhase)
}
)
@@ -98,8 +98,7 @@ fun compile(
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
return transformer.generateModule(moduleFragment, fullJs = true, dceJs = false)
} else {
val phases = if (es6mode) jsEs6Phases else jsPhases
phases.invokeToplevel(phaseConfig, context, moduleFragment)
jsPhases.invokeToplevel(phaseConfig, context, moduleFragment)
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
return transformer.generateModule(moduleFragment, generateFullJs, generateDceJs)
}
@@ -55,7 +55,7 @@ class ES6AddInternalParametersToConstructorPhase(val context: JsIrBackendContext
object ES6_RESULT_TYPE_PARAMETER : IrDeclarationOriginImpl("ES6_RESULT_TYPE_PARAMETER")
override fun lower(irBody: IrBody, container: IrDeclaration) {
assert(context.es6mode)
if (!context.es6mode) return
container.transform(CallSiteTransformer(), null)
@@ -29,7 +29,7 @@ object ES6_THIS_VARIABLE_ORIGIN : IrDeclarationOriginImpl("ES6_THIS_VARIABLE_ORI
class ES6ConstructorLowering(val context: JsIrBackendContext) : BodyLoweringPass {
override fun lower(irBody: IrBody, container: IrDeclaration) {
assert(context.es6mode)
if (!context.es6mode) return
if (container !is IrConstructor) return
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
class SecondaryConstructorLowering(val context: JsIrBackendContext) : DeclarationTransformer {
override fun transformFlat(declaration: IrDeclaration): List<IrDeclaration>? {
assert(!context.es6mode)
if (context.es6mode) return null
if (declaration is IrConstructor && !declaration.isPrimary) {
val irClass = declaration.parentAsClass
@@ -107,20 +107,19 @@ abstract class BasicIrBoxTest(
if (isMainModule) {
val debugMode = getBoolean("kotlin.js.debugMode")
val phases = if (runEs6Mode) jsEs6Phases else jsPhases
val phaseConfig = if (debugMode) {
val allPhasesSet = phases.toPhaseMap().values.toSet()
val allPhasesSet = jsPhases.toPhaseMap().values.toSet()
val dumpOutputDir = File(outputFile.parent, outputFile.nameWithoutExtension + "-irdump")
println("\n ------ Dumping phases to file://$dumpOutputDir")
PhaseConfig(
phases,
jsPhases,
dumpToDirectory = dumpOutputDir.path,
toDumpStateAfter = allPhasesSet,
toValidateStateAfter = allPhasesSet,
dumpOnlyFqName = null
)
} else {
PhaseConfig(phases)
PhaseConfig(jsPhases)
}
if (!skipRegularMode) {