Temporarily disable early exit fix
This change disables the early exit from inline funciton fix because
it is causing crashes in tests in internal testing.
Test: ./gradlew :compose:compiler:c-h:i-t:tDUT
Change-Id: I484a0af0fd37bdef2d6f14f9147af7231d2cec16
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
index 0f96e97..db43f57 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/ControlFlowTransformTests.kt
@@ -287,7 +287,6 @@
fun Test(condition: Boolean, %composer: Composer?, %changed: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(Test)<A()>,<M3>,<A()>:Test.kt")
- val tmp0_marker = %composer.currentMarker
val %dirty = %changed
if (%changed and 0b1110 === 0) {
%dirty = %dirty or if (%composer.changed(condition)) 0b0100 else 0b0010
@@ -303,7 +302,6 @@
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
if (condition) {
- %composer.endToMarker(tmp0_marker)
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -361,7 +359,6 @@
fun Test(a: Boolean, b: Boolean, %composer: Composer?, %changed: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(Test)<A()>,<M3>,<M3>,<A()>:Test.kt")
- val tmp0_marker = %composer.currentMarker
val %dirty = %changed
if (%changed and 0b1110 === 0) {
%dirty = %dirty or if (%composer.changed(a)) 0b0100 else 0b0010
@@ -380,7 +377,6 @@
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
if (a) {
- %composer.endToMarker(tmp0_marker)
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -401,7 +397,6 @@
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
if (b) {
- %composer.endToMarker(tmp0_marker)
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -461,14 +456,12 @@
traceEventStart(<>, %changed, -1, <>)
}
A(%composer, 0)
- val tmp0_marker = %composer.currentMarker
M3({ %composer: Composer?, %changed: Int ->
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C<A()>,<A()>:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
if (condition) {
- %composer.endToMarker(tmp0_marker)
}
A(%composer, 0)
} else {
@@ -508,7 +501,6 @@
T {
%this%T.compose(composableLambdaInstance(<>, true) { %composer: Composer?, %changed: Int ->
sourceInformation(%composer, "C<M1>:Test.kt")
- val tmp0_marker = %composer.currentMarker
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
@@ -518,7 +510,6 @@
sourceInformation(%composer, "C:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
if (condition) {
- %composer.endToMarker(tmp0_marker)
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -593,13 +584,11 @@
sourceInformation(%composer, "C<A()>,<M1>,<A()>:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
- val tmp0_marker = %composer.currentMarker
M1({ %composer: Composer?, %changed: Int ->
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
if (condition) {
- %composer.endToMarker(tmp0_marker)
}
} else {
%composer.skipToGroupEnd()
@@ -658,7 +647,6 @@
traceEventStart(<>, %changed, -1, <>)
}
A(%composer, 0)
- val tmp0_marker = %composer.currentMarker
M3({ %composer: Composer?, %changed: Int ->
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C<A()>,<M1>,<A()>:Test.kt")
@@ -669,7 +657,6 @@
sourceInformation(%composer, "C:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
if (condition) {
- %composer.endToMarker(tmp0_marker)
}
} else {
%composer.skipToGroupEnd()
@@ -722,7 +709,6 @@
fun testInline_M1_W_Return_Func(condition: Boolean, %composer: Composer?, %changed: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(testInline_M1_W_Return_Func)<A()>,<M1>,<A()>:Test.kt")
- val tmp0_marker = %composer.currentMarker
val %dirty = %changed
if (%changed and 0b1110 === 0) {
%dirty = %dirty or if (%composer.changed(condition)) 0b0100 else 0b0010
@@ -742,7 +728,8 @@
while (true) {
A(%composer, 0)
if (condition) {
- %composer.endToMarker(tmp0_marker)
+ %composer.endReplaceableGroup()
+ %composer.endReplaceableGroup()
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -812,14 +799,12 @@
traceEventStart(<>, %changed, -1, <>)
}
A(%composer, 0)
- val tmp0_marker = %composer.currentMarker
M3({ %composer: Composer?, %changed: Int ->
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C<A()>,<A()>:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
if (condition) {
- %composer.endToMarker(tmp0_marker)
}
A(%composer, 0)
} else {
@@ -827,14 +812,12 @@
}
%composer.endReplaceableGroup()
}, %composer, 0)
- val tmp1_marker = %composer.currentMarker
M3({ %composer: Composer?, %changed: Int ->
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C<A()>,<A()>:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
if (condition) {
- %composer.endToMarker(tmp1_marker)
}
A(%composer, 0)
} else {
@@ -882,7 +865,6 @@
fun test_CM1_CCM1_RetFun(condition: Boolean, %composer: Composer?, %changed: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(test_CM1_CCM1_RetFun)<Text("...>,<M1>,<Text("...>:Test.kt")
- val tmp0_marker = %composer.currentMarker
val %dirty = %changed
if (%changed and 0b1110 === 0) {
%dirty = %dirty or if (%composer.changed(condition)) 0b0100 else 0b0010
@@ -906,7 +888,8 @@
sourceInformation(%composer, "C<Text("...>:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
Text("In CCM1", %composer, 0b0110)
- %composer.endToMarker(tmp0_marker)
+ %composer.endReplaceableGroup()
+ %composer.endReplaceableGroup()
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -968,13 +951,11 @@
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
- val tmp0_marker = %composer.currentMarker
FakeBox({ %composer: Composer?, %changed: Int ->
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C<A()>:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
if (condition) {
- %composer.endToMarker(tmp0_marker)
}
A(%composer, 0)
} else {
@@ -1024,7 +1005,6 @@
fun Test(condition: Boolean, %composer: Composer?, %changed: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(Test)<A()>:Test.kt")
- val tmp0_marker = %composer.currentMarker
val %dirty = %changed
if (%changed and 0b1110 === 0) {
%dirty = %dirty or if (%composer.changed(condition)) 0b0100 else 0b0010
@@ -1044,7 +1024,6 @@
}
with(obj) {
if (condition) {
- %composer.endToMarker(tmp0_marker)
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -1098,7 +1077,6 @@
@ReadOnlyComposable
fun Calculate(condition: Boolean, %composer: Composer?, %changed: Int): Boolean {
sourceInformationMarkerStart(%composer, <>, "C(Calculate):Test.kt")
- val tmp1_marker = %composer.currentMarker
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
@@ -1110,12 +1088,10 @@
with(obj) {
if (condition) {
val tmp0_return = false
- %composer.endToMarker(tmp1_marker)
sourceInformationMarkerEnd(%composer)
return tmp0_return
}
val tmp1_return = %composer.inserting
- %composer.endToMarker(tmp1_marker)
sourceInformationMarkerEnd(%composer)
return tmp1_return
}
@@ -1151,13 +1127,11 @@
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
- val tmp0_marker = %composer.currentMarker
IW({ %composer: Composer?, %changed: Int ->
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C<A()>:Test.kt")
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
if (condition) {
- %composer.endToMarker(tmp0_marker)
}
A(%composer, 0)
} else {
@@ -1229,7 +1203,6 @@
fun test_CM1_RetFun(condition: Boolean, %composer: Composer?, %changed: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(test_CM1_RetFun)<Text("...>,<M1>,<Text("...>:Test.kt")
- val tmp0_marker = %composer.currentMarker
val %dirty = %changed
if (%changed and 0b1110 === 0) {
%dirty = %dirty or if (%composer.changed(condition)) 0b0100 else 0b0010
@@ -1245,7 +1218,6 @@
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
Text("M1 - before", %composer, 0b0110)
if (condition) {
- %composer.endToMarker(tmp0_marker)
if (isTraceInProgress()) {
traceEventEnd()
}
@@ -3673,7 +3645,6 @@
fun WithReturn(%composer: Composer?, %changed: Int) {
%composer.startReplaceableGroup(<>)
sourceInformation(%composer, "C(WithReturn)<A()>:Test.kt")
- val tmp0_marker = %composer.currentMarker
if (isTraceInProgress()) {
traceEventStart(<>, %changed, -1, <>)
}
@@ -3681,7 +3652,7 @@
sourceInformation(%composer, "*<A()>")
run {
A(%composer, 0)
- %composer.endToMarker(tmp0_marker)
+ %composer.endReplaceableGroup()
if (isTraceInProgress()) {
traceEventEnd()
}
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt
index d085612..e8ffd3f 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/TraceInformationTest.kt
@@ -118,7 +118,6 @@
fun Test(condition: Boolean, %composer: Composer?, %changed: Int) {
%composer = %composer.startRestartGroup(<>)
sourceInformation(%composer, "C(Test)<A()>,<Wrappe...>,<A()>:Test.kt")
- val tmp0_marker = %composer.currentMarker
val %dirty = %changed
if (%changed and 0b1110 === 0) {
%dirty = %dirty or if (%composer.changed(condition)) 0b0100 else 0b0010
@@ -134,7 +133,6 @@
if (%changed and 0b1011 !== 0b0010 || !%composer.skipping) {
A(%composer, 0)
if (!condition) {
- %composer.endToMarker(tmp0_marker)
if (isTraceInProgress()) {
traceEventEnd()
}
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt
index 9f41e35..79b1f93c 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/lower/ComposableFunctionBodyTransformer.kt
@@ -616,8 +616,9 @@
}
}
- private val rollbackGroupMarkerEnabled get() =
- currentMarkerProperty != null && endToMarkerFunction != null
+ private val rollbackGroupMarkerEnabled get() = false
+ // Temporarily disabled for b/255722247
+ // currentMarkerProperty != null && endToMarkerFunction != null
private val endRestartGroupFunction by guardedLazy {
composerIrClass
diff --git a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionTests.kt b/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionTests.kt
index 285838a..5c32e29 100644
--- a/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionTests.kt
+++ b/compose/runtime/runtime/src/commonTest/kotlin/androidx/compose/runtime/CompositionTests.kt
@@ -54,6 +54,7 @@
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runTest
+import org.junit.Ignore
@Composable
fun Container(content: @Composable () -> Unit) = content()
@@ -3234,6 +3235,7 @@
}
@Test
+ @Ignore("b/255722247")
fun testNonLocalReturn_CM1_RetFunc_FalseTrue() = compositionTest {
var condition by mutableStateOf(false)
@@ -3253,6 +3255,7 @@
}
@Test
+ @Ignore("b/255722247")
fun testNonLocalReturn_CM1_RetFunc_TrueFalse() = compositionTest {
var condition by mutableStateOf(true)
@@ -3272,6 +3275,7 @@
}
@Test
+ @Ignore("b/255722247")
fun test_CM1_CCM1_RetFun_FalseTrue() = compositionTest {
var condition by mutableStateOf(false)
@@ -3291,6 +3295,7 @@
}
@Test
+ @Ignore("b/255722247")
fun test_CM1_CCM1_RetFun_TrueFalse() = compositionTest {
var condition by mutableStateOf(true)