diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt index 62c7e3e1091..d6aa150d9b2 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIntrinsics.kt @@ -215,6 +215,8 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC val unreachable = getInternalFunction("unreachable") + val jsArguments = getInternalFunction("jsArguments") + val returnIfSuspended = getInternalFunction("returnIfSuspended") val getContinuation = getInternalFunction("getContinuation") @@ -348,4 +350,4 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC private fun getInternalClassWithoutPackage(fqName: String) = context.symbolTable.referenceClass(context.getClass(FqName(fqName))) -} \ No newline at end of file +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt index e64f0432122..ab1fb6dbd4d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsIntrinsicTransformers.kt @@ -236,6 +236,8 @@ class JsIntrinsicTransformers(backendContext: JsIrBackendContext) { add(intrinsics.jsInvokeSuspendSuperType, suspendInvokeTransform) add(intrinsics.jsInvokeSuspendSuperTypeWithReceiver, suspendInvokeTransform) add(intrinsics.jsInvokeSuspendSuperTypeWithReceiverAndParam, suspendInvokeTransform) + + add(intrinsics.jsArguments) { _, _ -> Namer.ARGUMENTS } } } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/Namer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/Namer.kt index 96d9317b739..7819a76393b 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/Namer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/Namer.kt @@ -20,6 +20,8 @@ object Namer { val IMPLICIT_RECEIVER_NAME = "this" + val ARGUMENTS = JsNameRef("arguments") + val PROTOTYPE_NAME = "prototype" val CONSTRUCTOR_NAME = "constructor" @@ -42,4 +44,4 @@ object Namer { const val KCALLABLE_ARITY = "\$arity" const val SHARED_BOX_V = "_v" -} \ No newline at end of file +} diff --git a/libraries/stdlib/js-ir/runtime/jsIntrinsics.kt b/libraries/stdlib/js-ir/runtime/jsIntrinsics.kt index 62937340ad5..34f08cf7297 100644 --- a/libraries/stdlib/js-ir/runtime/jsIntrinsics.kt +++ b/libraries/stdlib/js-ir/runtime/jsIntrinsics.kt @@ -195,6 +195,9 @@ internal fun slice(a: A): A @JsIntrinsic internal fun unreachable(): Nothing +@JsIntrinsic +internal fun jsArguments(): Any? + @JsIntrinsic @Suppress("REIFIED_TYPE_PARAMETER_NO_INLINE") // TODO: mark `inline` and skip in inliner internal fun jsClassIntrinsic(): JsClass @@ -204,4 +207,4 @@ internal fun jsClassIntrinsic(): JsClass internal fun jsInIntrinsic(lhs: Any?, rhs: Any): Boolean @JsIntrinsic -internal fun jsDelete(e: Any?) \ No newline at end of file +internal fun jsDelete(e: Any?)