From 1e4f8b2946fe9f8a2bde5ac31040b49de642782e Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 22 Nov 2019 14:57:44 +0300 Subject: [PATCH] [JS IR] Do not forbid typeOf inlining if it is not required --- .../kotlin/backend/common/lower/inline/FunctionInlining.kt | 5 +++-- .../org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt index 27965a00d44..a154238b6aa 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/inline/FunctionInlining.kt @@ -32,7 +32,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid import org.jetbrains.kotlin.util.OperatorNameConventions -class FunctionInlining(val context: CommonBackendContext) : IrElementTransformerVoidWithContext() { +class FunctionInlining(val context: CommonBackendContext, val dontInlineTypeOf: Boolean = true) : IrElementTransformerVoidWithContext() { fun inline(irModule: IrModuleFragment) = irModule.accept(this, data = null) @@ -47,7 +47,8 @@ class FunctionInlining(val context: CommonBackendContext) : IrElementTransformer return expression if (Symbols.isLateinitIsInitializedPropertyGetter(callee.symbol)) return expression - if (Symbols.isTypeOfIntrinsic(callee.symbol)) + // TODO: Temporary hack till typeOf is unimplemented in K/JS + if (dontInlineTypeOf && Symbols.isTypeOfIntrinsic(callee.symbol)) return expression val actualCallee = getFunctionDeclaration(callee.symbol) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt index 423bf7bd947..15d7fa7492e 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt @@ -97,7 +97,7 @@ private val arrayConstructorPhase = makeJsModulePhase( private val functionInliningPhase = makeCustomJsModulePhase( { context, module -> - FunctionInlining(context).inline(module) + FunctionInlining(context, false).inline(module) module.patchDeclarationParents() }, name = "FunctionInliningPhase",