Basic invokedynamic string concatenation support
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
// JVM_TARGET: 9
|
||||
class A
|
||||
|
||||
inline fun test(s: (String) -> Unit) {
|
||||
s("456")
|
||||
}
|
||||
|
||||
fun box(a: String, b: String?) {
|
||||
val s = a + "1" + "2" + 3 + 4L + b + 5.0 + 6F + '7' + A()
|
||||
|
||||
a.plus(b)
|
||||
b?.plus(a)
|
||||
val ref1 = a::plus
|
||||
val ref2 = b::plus
|
||||
|
||||
test("123"::plus)
|
||||
}
|
||||
|
||||
// 6 INVOKEDYNAMIC makeConcatWithConstants
|
||||
// 0 append
|
||||
// 0 stringPlus
|
||||
@@ -0,0 +1,19 @@
|
||||
// JVM_TARGET: 9
|
||||
|
||||
fun box() {
|
||||
val z = "0"
|
||||
val result = z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z //200
|
||||
}
|
||||
|
||||
// 1 INVOKEDYNAMIC makeConcatWithConstants
|
||||
// 0 append
|
||||
// 0 stringPlus
|
||||
@@ -0,0 +1,18 @@
|
||||
// JVM_TARGET: 9
|
||||
fun box() {
|
||||
val z = "0"
|
||||
val result = z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z +
|
||||
z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + z + //200
|
||||
z //201
|
||||
}
|
||||
// 2 INVOKEDYNAMIC makeConcatWithConstants
|
||||
// 0 append
|
||||
// 0 stringPlus
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// JVM_TARGET: 9
|
||||
class A
|
||||
|
||||
inline fun test(s: (String) -> Unit) {
|
||||
s("456")
|
||||
}
|
||||
|
||||
fun box(a: String, b: String?) {
|
||||
val s = a + "1" + "2" + 3 + 4L + b + 5.0 + 6F + '7' + A()
|
||||
}
|
||||
|
||||
// 1INVOKEDYNAMIC makeConcatWithConstants
|
||||
// 0 append
|
||||
// 0 stringPlus
|
||||
@@ -0,0 +1,9 @@
|
||||
// JVM_TARGET: 9
|
||||
fun box(a: String, b: String?) {
|
||||
val sb = StringBuilder();
|
||||
sb.append("123")
|
||||
}
|
||||
|
||||
// 0 INVOKEDYNAMIC makeConcatWithConstants
|
||||
// 1 append
|
||||
// 0 stringPlus
|
||||
Reference in New Issue
Block a user