Fix some of the bytecodeText tests

The changes are necessary because of release coroutines support:
- Get rid of suspendCoroutineOrReturn calls. It's anyway irrelevant
to what is being tested here

- In varValueConflictsWithTable.kt, variables slots have been shifted
because the variable for continuation's exception was removed

- In varValueConflictsWithTableSameSort.kt, a variable has been introduced
to preserve the same slot numbers for old variables.
Otherwise, they become shifted and to the second slot,
and there are a lot of irrelevant "ALOAD 2" instructions

This change is another example of why bytecode text tests are evil
This commit is contained in:
Denis Zharkov
2018-07-05 11:19:18 +03:00
parent 820506d9c6
commit 8c65e55c02
6 changed files with 26 additions and 16 deletions
+1 -2
View File
@@ -24,5 +24,4 @@ fun box(): String {
// 2 GETSTATIC kotlin/Unit.INSTANCE
// 1 GETSTATIC helpers/EmptyContinuation.Companion
// 4 GETSTATIC kotlin\/coroutines\/experimental\/EmptyCoroutineContext.INSTANCE
// 7 GETSTATIC
// 3 GETSTATIC
@@ -1,10 +1,10 @@
// LANGUAGE_VERSION: 1.3
// WITH_RUNTIME
// COMMON_COROUTINES_TEST
// WITH_COROUTINES
import helpers.*
// TREAT_AS_ONE_FILE
import COROUTINES_PACKAGE.*
import COROUTINES_PACKAGE.intrinsics.*
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
}
@@ -42,8 +42,8 @@ fun box(): String {
return result
}
// 1 LOCALVARIABLE i I L.* 3
// 1 LOCALVARIABLE s Ljava/lang/String; L.* 3
// 1 LOCALVARIABLE i I L.* 2
// 1 LOCALVARIABLE s Ljava/lang/String; L.* 2
// 0 PUTFIELD VarValueConflictsWithTableKt\$box\$1.I\$0 : I
/* 2 loads in cycle */
// 2 ILOAD 3
// 2 ILOAD 2
@@ -1,13 +1,11 @@
// LANGUAGE_VERSION: 1.3
// WITH_RUNTIME
// COMMON_COROUTINES_TEST
// WITH_COROUTINES
import helpers.*
// TREAT_AS_ONE_FILE
import COROUTINES_PACKAGE.*
import COROUTINES_PACKAGE.intrinsics.*
suspend fun suspendHere(): String = suspendCoroutineOrReturn { x ->
x.resume("OK")
}
import kotlin.coroutines.*
import kotlin.coroutines.intrinsics.*
suspend fun suspendHere(): String = ""
fun builder(c: suspend () -> Unit) {
c.startCoroutine(EmptyContinuation)
@@ -17,6 +15,7 @@ fun box(): String {
var result = "fail 1"
builder {
var shiftSlot: String = ""
// Initialize var with Int value
try {
var i: String = "abc"