Support Ir Validation in phaser

This commit is contained in:
Roman Artemev
2018-12-04 18:35:09 +03:00
committed by romanart
parent de1cbc396e
commit 30cc5f6d3c
3 changed files with 18 additions and 23 deletions
@@ -57,6 +57,15 @@ object CommonConfigurationKeys {
@JvmField @JvmField
val PHASES_TO_DUMP_STATE = CompilerConfigurationKey.create<Set<String>>("backend phases where we dump compiler state both before and after the phase") val PHASES_TO_DUMP_STATE = CompilerConfigurationKey.create<Set<String>>("backend phases where we dump compiler state both before and after the phase")
@JvmField
val PHASES_TO_VALIDATE_BEFORE = CompilerConfigurationKey.create<Set<String>>("backend phases where we validate Ir before the phase")
@JvmField
val PHASES_TO_VALIDATE_AFTER = CompilerConfigurationKey.create<Set<String>>("backend phases where we validate Ir after the phase")
@JvmField
val PHASES_TO_VALIDATE = CompilerConfigurationKey.create<Set<String>>("backend phases where we validate Ir both before and after the phase")
@JvmField @JvmField
val VERBOSE_PHASES = CompilerConfigurationKey.create<Set<String>>("verbose backend phases") val VERBOSE_PHASES = CompilerConfigurationKey.create<Set<String>>("verbose backend phases")
@@ -303,25 +303,6 @@ private val CallsLoweringPhase = makeJsPhase(
description = "Handle intrinsics" description = "Handle intrinsics"
) )
object IrValidationPhase : CompilerPhase<CommonBackendContext, IrModuleFragment> {
private val validatorConfig = IrValidatorConfig(
abortOnError = true,
ensureAllNodesAreDifferent = true,
checkTypes = false,
checkDescriptors = false
)
override val name = "IrValidator"
override val description = "Make sure that various Ir Invariants are met"
override val prerequisite = emptySet()
override fun invoke(context: CommonBackendContext, input: IrModuleFragment): IrModuleFragment {
IrValidator(context, validatorConfig).let { input.acceptVoid(it) }
input.checkDeclarationParents()
return input
}
}
object IrModuleEndPhase : CompilerPhase<BackendContext, IrModuleFragment> { object IrModuleEndPhase : CompilerPhase<BackendContext, IrModuleFragment> {
override val name = "IrModuleFragment" override val name = "IrModuleFragment"
override val description = "State at end of IrModuleFragment lowering" override val description = "State at end of IrModuleFragment lowering"
@@ -345,7 +326,6 @@ val jsPhases = listOf(
ModuleCopyingPhase, ModuleCopyingPhase,
FunctionInliningPhase, FunctionInliningPhase,
RemoveInlineFunctionsWithReifiedTypeParametersLoweringPhase, RemoveInlineFunctionsWithReifiedTypeParametersLoweringPhase,
IrValidationPhase,
ThrowableSuccessorsLoweringPhase, ThrowableSuccessorsLoweringPhase,
TailrecLoweringPhase, TailrecLoweringPhase,
UnitMaterializationLoweringPhase, UnitMaterializationLoweringPhase,
@@ -357,7 +337,6 @@ val jsPhases = listOf(
LocalDeclarationsLoweringPhase, LocalDeclarationsLoweringPhase,
InnerClassesLoweringPhase, InnerClassesLoweringPhase,
InnerClassConstructorCallsLoweringPhase, InnerClassConstructorCallsLoweringPhase,
IrValidationPhase,
SuspendFunctionsLoweringPhase, SuspendFunctionsLoweringPhase,
CallableReferenceLoweringPhase, CallableReferenceLoweringPhase,
DefaultArgumentStubGeneratorPhase, DefaultArgumentStubGeneratorPhase,
@@ -371,13 +350,11 @@ val jsPhases = listOf(
TypeOperatorLoweringPhase, TypeOperatorLoweringPhase,
SecondaryCtorLoweringPhase, SecondaryCtorLoweringPhase,
InlineClassLoweringPhase, InlineClassLoweringPhase,
IrValidationPhase,
AutoboxingTransformerPhase, AutoboxingTransformerPhase,
BlockDecomposerLoweringPhase, BlockDecomposerLoweringPhase,
ClassReferenceLoweringPhase, ClassReferenceLoweringPhase,
PrimitiveCompanionLoweringPhase, PrimitiveCompanionLoweringPhase,
ConstLoweringPhase, ConstLoweringPhase,
IrValidationPhase,
CallsLoweringPhase, CallsLoweringPhase,
IrModuleEndPhase, IrModuleEndPhase,
IrToJsPhase IrToJsPhase
@@ -136,6 +136,14 @@ 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(
CommonConfigurationKeys.PHASES_TO_VALIDATE_AFTER,
setOf(
"RemoveInlineFunctionsWithReifiedTypeParametersLowering",
"InnerClassConstructorCallsLowering",
"InlineClassLowering", "ConstLowering"
)
)
val runtimeConfiguration = config.configuration.copy() val runtimeConfiguration = config.configuration.copy()
@@ -165,6 +173,7 @@ abstract class BasicIrBoxTest(
// config.configuration.put(CommonConfigurationKeys.PHASES_TO_DUMP_STATE, setOf("UnitMaterializationLowering")) // config.configuration.put(CommonConfigurationKeys.PHASES_TO_DUMP_STATE, setOf("UnitMaterializationLowering"))
// config.configuration.put(CommonConfigurationKeys.PHASES_TO_DUMP_STATE_BEFORE, setOf("ReturnableBlockLowering")) // config.configuration.put(CommonConfigurationKeys.PHASES_TO_DUMP_STATE_BEFORE, setOf("ReturnableBlockLowering"))
// config.configuration.put(CommonConfigurationKeys.PHASES_TO_DUMP_STATE_AFTER, setOf("MultipleCatchesLowering")) // config.configuration.put(CommonConfigurationKeys.PHASES_TO_DUMP_STATE_AFTER, setOf("MultipleCatchesLowering"))
// config.configuration.put(CommonConfigurationKeys.PHASES_TO_VALIDATE, setOf("ALL"))
val result = compile( val result = compile(
config.project, config.project,