Skip to content

Commit 5d6520c

Browse files
JSMonkSpace Team
authored and
Space Team
committed
[K/JS] Fix coroutines but turn back the fix for coroutines intrinsics intercepted and releaseIntercepted
1 parent 8293c8f commit 5d6520c

File tree

12 files changed

+18
-13
lines changed

12 files changed

+18
-13
lines changed

compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractValueUsageTransformer.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
3434
* TODO: consider making this visitor non-recursive to make it more general.
3535
*/
3636
abstract class AbstractValueUsageTransformer(
37-
protected val irBuiltIns: IrBuiltIns
37+
protected val irBuiltIns: IrBuiltIns,
38+
private val replaceTypesInsideInlinedFunctionBlock: Boolean = false
3839
) : IrElementTransformerVoid() {
3940

4041
protected open fun IrExpression.useAs(type: IrType): IrExpression = this
@@ -120,7 +121,7 @@ abstract class AbstractValueUsageTransformer(
120121
}
121122

122123
override fun visitContainerExpression(expression: IrContainerExpression): IrExpression {
123-
if (expression is IrInlinedFunctionBlock) {
124+
if (!replaceTypesInsideInlinedFunctionBlock && expression is IrInlinedFunctionBlock) {
124125
expression.transformChildrenVoid(this)
125126
return expression
126127
}

compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -526,8 +526,7 @@ private val innerClassConstructorCallsLoweringPhase = makeBodyLoweringPhase(
526526
private val suspendFunctionsLoweringPhase = makeBodyLoweringPhase(
527527
::JsSuspendFunctionsLowering,
528528
name = "SuspendFunctionsLowering",
529-
description = "Transform suspend functions into CoroutineImpl instance and build state machine",
530-
prerequisite = setOf(returnableBlockLoweringPhase)
529+
description = "Transform suspend functions into CoroutineImpl instance and build state machine"
531530
)
532531

533532
private val addContinuationToNonLocalSuspendFunctionsLoweringPhase = makeDeclarationTransformerPhase(
@@ -739,7 +738,7 @@ private val inlineClassUsageLoweringPhase = makeBodyLoweringPhase(
739738
)
740739

741740
private val autoboxingTransformerPhase = makeBodyLoweringPhase(
742-
::AutoboxingTransformer,
741+
{ AutoboxingTransformer(it, replaceTypesInsideInlinedFunctionBlock = true) },
743742
name = "AutoboxingTransformer",
744743
description = "Insert box/unbox intrinsics"
745744
)
@@ -922,14 +921,14 @@ val loweringList = listOf<Lowering>(
922921
enumUsageLoweringPhase,
923922
externalEnumUsageLoweringPhase,
924923
enumEntryRemovalLoweringPhase,
925-
returnableBlockLoweringPhase,
926924
suspendFunctionsLoweringPhase,
927925
propertyReferenceLoweringPhase,
928926
interopCallableReferenceLoweringPhase,
929927
jsSuspendArityStorePhase,
930928
addContinuationToNonLocalSuspendFunctionsLoweringPhase,
931929
addContinuationToLocalSuspendFunctionsLoweringPhase,
932930
addContinuationToFunctionCallsLoweringPhase,
931+
returnableBlockLoweringPhase,
933932
rangeContainsLoweringPhase,
934933
forLoopsLoweringPhase,
935934
primitiveCompanionLoweringPhase,

compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/AutoboxingTransformer.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ import org.jetbrains.kotlin.ir.util.render
3131

3232
// Copied and adapted from Kotlin/Native
3333

34-
abstract class AbstractValueUsageLowering(val context: JsCommonBackendContext) : AbstractValueUsageTransformer(context.irBuiltIns),
34+
abstract class AbstractValueUsageLowering(
35+
val context: JsCommonBackendContext,
36+
replaceTypesInsideInlinedFunctionBlock: Boolean = false
37+
) : AbstractValueUsageTransformer(context.irBuiltIns, replaceTypesInsideInlinedFunctionBlock),
3538
BodyLoweringPass {
3639

3740
val icUtils = context.inlineClassesUtils
@@ -120,7 +123,8 @@ abstract class AbstractValueUsageLowering(val context: JsCommonBackendContext) :
120123
)
121124
}
122125

123-
class AutoboxingTransformer(context: JsCommonBackendContext) : AbstractValueUsageLowering(context) {
126+
class AutoboxingTransformer(context: JsCommonBackendContext, replaceTypesInsideInlinedFunctionBlock: Boolean = false) :
127+
AbstractValueUsageLowering(context, replaceTypesInsideInlinedFunctionBlock) {
124128
private var processingReturnStack = mutableListOf<IrReturn>()
125129

126130
private fun IrExpression.useReturnableExpressionAsType(expectedType: IrType): IrExpression {

compiler/testData/codegen/box/coroutines/intrinsicSemantics/intercepted.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// WITH_STDLIB
22
// WITH_COROUTINES
3+
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
34
import helpers.*
45
import kotlin.coroutines.*
56
import kotlin.coroutines.intrinsics.*

compiler/testData/codegen/box/coroutines/intrinsicSemantics/releaseIntercepted.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// WITH_STDLIB
2+
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
23
import kotlin.coroutines.*
34
import kotlin.coroutines.intrinsics.*
45

compiler/testData/debug/localVariables/suspend/inlineLocalsStateMachineTransform.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,7 @@ suspend fun box() {
3636
// test.kt:12 doResume:
3737
// test.kt:8 h: $completion=$boxCOROUTINE$0
3838
// test.kt:4 doResume:
39+
// test.kt:5 doResume: x=41:number
3940
// test.kt:4 doResume: x=41:number
41+
// test.kt:5 doResume: x=41:number, x=41:number
4042
// test.kt:19 doResume: x=41:number, x=41:number

compiler/testData/debug/localVariables/suspend/mergeLvt.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,5 @@ suspend fun box() {
6868
// test.kt:12 <get-a>:
6969
// test.kt:38 doResume:
7070
// test.kt:38 doResume:
71-
// test.kt:38 doResume:
7271
// test.kt:27 doResume:
7372
// test.kt:28 doResume: a=Unit

compiler/testData/debug/localVariables/suspend/nestedInsideSuspendUnintercepted.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,5 @@ suspend fun box() {
7171
// test.kt:7 id: obj=2:number
7272
// test.kt:38 doResume: c=1:number, b=2:number
7373
// test.kt:38 doResume: c=1:number, b=2:number
74-
// test.kt:39 doResume: c=1:number, b=2:number
7574
// test.kt:30 doResume: c=1:number, b=2:number
7675
// test.kt:31 doResume: c=1:number, b=2:number, a=Unit

compiler/testData/debug/localVariables/suspend/nestedSuspendUnintercepted.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,5 @@ suspend fun box() {
4242
// EXPECTATIONS JS_IR
4343
// test.kt:31 doResume:
4444
// test.kt:31 doResume:
45-
// test.kt:31 doResume:
4645
// test.kt:22 doResume:
4746
// test.kt:23 doResume: a=Unit

compiler/testData/debug/localVariables/suspend/nestedSuspendUninterceptedWithDeepLambdaCall.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,5 @@ suspend fun box() {
103103
// test.kt:7 id: obj=5:number
104104
// test.kt:44 doResume: b=2:number, e=5:number
105105
// test.kt:44 doResume: b=2:number, e=5:number
106-
// test.kt:45 doResume: b=2:number, e=5:number
107106
// test.kt:33 doResume: b=2:number, e=5:number
108107
// test.kt:37 doResume: b=2:number, e=5:number, result=Unit

js/js.translator/testData/box/coercion/unitMaterializationOnCall.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
12
// DONT_TARGET_EXACT_BACKEND: JS
23

34
var demoCallCounter = 0

js/js.translator/testData/lineNumbers/coroutine.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ suspend fun bar(): Unit {
1515
}
1616

1717
// LINES(JS): 39 4 4 4 7 5 5 45 45 5 93 45 5 5 6 4 4 4 9 15 9 9 9 * 9 15 10 10 11 11 11 11 11 * 11 12 12 13 13 13 13 13 13 13 14 14 * 9 15 9 9 9 9
18-
// LINES(JS_IR): 4 4 * 9 9 * 4 * 4 * 19 5 5 * 19 * 19 19 * 19 19 * 6 6 * 19 * 19 * 4 * 9 * 9 * 10 10 * 11 * 11 12 12 * 13 * 13 14 14 15 15
18+
// LINES(JS_IR): 4 4 * 93 3 45 45 7 7 6 9 9 * 9 * 9 * 10 10 * 11 * 11 12 12 * 13 * 13 14 14 15 15

0 commit comments

Comments
 (0)