JS: fix inlining in a new flat JS generator

This commit is contained in:
Alexey Andreev
2016-10-17 16:24:02 +03:00
parent e13d34e08d
commit 20396b0e5f
257 changed files with 384 additions and 4228 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
package foo
// CHECK_CONTAINS_NO_CALLS: multiplyInline_0
// CHECK_NOT_CALLED: runNoinline_0
// CHECK_CONTAINS_NO_CALLS: multiplyInline
// CHECK_NOT_CALLED: runNoinline
internal inline fun multiply(a: Int, b: Int) = a * b
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: test_0
// CHECK_CONTAINS_NO_CALLS: test
// A copy of stdlib run function.
// Copied to not to depend on run implementation.
@@ -1,6 +1,6 @@
package foo
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiply_0 function=multiply_0$f
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiply function=multiply$lambda
internal class A(val a: Int)
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo_0
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo
internal inline fun inline1(a: Int): Int {
return a
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo_0
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo
internal inline fun inline1(a: Int): Int {
return a
@@ -1,7 +1,7 @@
package foo
// CHECK_CONTAINS_NO_CALLS: identity_0
// CHECK_CONTAINS_NO_CALLS: sumNoInline_0
// CHECK_CONTAINS_NO_CALLS: identity
// CHECK_CONTAINS_NO_CALLS: sumNoInline
internal inline fun sum(a: Int, b: Int = 0): Int {
return a + b
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: doNothingNoInline_0
// CHECK_CONTAINS_NO_CALLS: doNothingNoInline
internal inline fun <T> doNothing1(a: T): T {
return a
@@ -1,7 +1,7 @@
package foo
// CHECK_CONTAINS_NO_CALLS: doNothingInt_0
// CHECK_CONTAINS_NO_CALLS: doNothingStr_0
// CHECK_CONTAINS_NO_CALLS: doNothingInt
// CHECK_CONTAINS_NO_CALLS: doNothingStr
internal inline fun <T> doNothing(a: T): T {
return a
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: multiplyNoInline_0
// CHECK_CONTAINS_NO_CALLS: multiplyNoInline
internal inline fun multiply(a: Int, b: Int): Int {
return a * b
+3 -3
View File
@@ -1,8 +1,8 @@
package foo
// CHECK_CONTAINS_NO_CALLS: doNothing1_0
// CHECK_CONTAINS_NO_CALLS: doNothing2_0
// CHECK_CONTAINS_NO_CALLS: doNothing3_0
// CHECK_CONTAINS_NO_CALLS: doNothing1
// CHECK_CONTAINS_NO_CALLS: doNothing2
// CHECK_CONTAINS_NO_CALLS: doNothing3
internal class Inline {
public inline fun <T> identity1 (x: T): T {
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: sumEven_0
// CHECK_CONTAINS_NO_CALLS: sumEven
internal inline fun filteredReduce(a: Array<Int>, predicate: (Int) -> Boolean, reduceFun: (Int, Int) -> Int): Int {
var result = 0
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: maxBySquare_0
// CHECK_CONTAINS_NO_CALLS: maxBySquare
internal data class Result(var value: Int = 0, var invocationCount: Int = 0)
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: add_0
// CHECK_CONTAINS_NO_CALLS: add
internal data class IntPair(public var fst: Int, public var snd: Int) {
inline public fun getFst(): Int { return fst }
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: factAbsNoInline1_0
// CHECK_CONTAINS_NO_CALLS: factAbsNoInline1
internal class State(value: Int) {
public var value: Int = value
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: test_0
// CHECK_CONTAINS_NO_CALLS: test
internal inline fun sum(x: Int, y: Int): Int = js("x + y")
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: test_0
// CHECK_CONTAINS_NO_CALLS: test
internal inline fun sum(x: Int, y: Int): Int = js("var a = x; a + y")
+3 -3
View File
@@ -1,8 +1,8 @@
package foo
// CHECK_CALLED_IN_SCOPE: scope=multiplyBy2_0 function=multiplyBy2_0$f
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2_0 function=multiplyBy2_0$f_0
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2_0 function=run
// CHECK_CALLED_IN_SCOPE: scope=multiplyBy2 function=multiplyBy2$lambda
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=multiplyBy2$lambda_0
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=run
internal inline fun <T> runLambdaInLambda(noinline inner: (T) -> T, outer: ((T) -> T, T) -> T, arg: T): T {
return outer(inner, arg)
@@ -1,7 +1,7 @@
package foo
// CHECK_CONTAINS_NO_CALLS: capturedInLambda_0
// CHECK_CONTAINS_NO_CALLS: declaredInLambda_0
// CHECK_CONTAINS_NO_CALLS: capturedInLambda
// CHECK_CONTAINS_NO_CALLS: declaredInLambda
internal data class State(var count: Int = 0)
@@ -1,7 +1,7 @@
package foo
// CHECK_CONTAINS_NO_CALLS: localWithCapture_0
// CHECK_CONTAINS_NO_CALLS: localWithoutCapture_0
// CHECK_CONTAINS_NO_CALLS: localWithCapture
// CHECK_CONTAINS_NO_CALLS: localWithoutCapture
internal inline fun repeatAction(times: Int, action: () -> Unit) {
for (i in 1..times) {
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: add_0
// CHECK_CONTAINS_NO_CALLS: add
internal data class State(var count: Int = 0)
@@ -1,7 +1,7 @@
package foo
// CHECK_CONTAINS_NO_CALLS: localWithCapture_0
// CHECK_CONTAINS_NO_CALLS: localWithoutCapture_0
// CHECK_CONTAINS_NO_CALLS: localWithCapture
// CHECK_CONTAINS_NO_CALLS: localWithoutCapture
internal inline fun repeatAction(times: Int, action: () -> Unit) {
for (i in 1..times) {
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: add_0
// CHECK_CONTAINS_NO_CALLS: add
internal inline fun run(action: () -> Int): Int {
return action()
@@ -1,11 +1,11 @@
package foo
// CHECK_CONTAINS_NO_CALLS: test1_0
// CHECK_CONTAINS_NO_CALLS: test2_0
// CHECK_CONTAINS_NO_CALLS: test3_0
// CHECK_CONTAINS_NO_CALLS: test1
// CHECK_CONTAINS_NO_CALLS: test2
// CHECK_CONTAINS_NO_CALLS: test3
// CHECK_CONTAINS_NO_CALLS: test4_buocd8$
// CHECK_CONTAINS_NO_CALLS: test5_0
// CHECK_HAS_INLINE_METADATA: apply_hiyix$
// CHECK_CONTAINS_NO_CALLS: test5
// CHECK_HAS_INLINE_METADATA: apply
// CHECK_HAS_INLINE_METADATA: applyL_hiyix$
// CHECK_HAS_INLINE_METADATA: applyM_hiyix$
// CHECK_HAS_NO_INLINE_METADATA: applyN_hiyix$
+2 -2
View File
@@ -1,7 +1,7 @@
package foo
// CHECK_CALLED_IN_SCOPE: scope=multiplyBy2_0 function=multiplyBy2_0$f
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2_0 function=run
// CHECK_CALLED_IN_SCOPE: scope=multiplyBy2 function=multiplyBy2$lambda
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=run
internal inline fun <T> run(noinline func: (T) -> T, arg: T): T {
return func(arg)
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
// CHECK_CONTAINS_NO_CALLS: sum_0
// CHECK_CONTAINS_NO_CALLS: sum
inline fun <T : Any, R> T.doLet(f: (T) -> R): R = f(this)
+3 -3
View File
@@ -1,9 +1,9 @@
package foo
// CHECK_CONTAINS_NO_CALLS: test1_0
// CHECK_CONTAINS_NO_CALLS: test2_0
// CHECK_CONTAINS_NO_CALLS: test3_0 except=slice
// CHECK_CONTAINS_NO_CALLS: test1
// CHECK_CONTAINS_NO_CALLS: test2
// CHECK_CONTAINS_NO_CALLS: test3 except=slice
internal inline fun concat(vararg strings: String): String {
var result = ""