summaryrefslogtreecommitdiff
path: root/test/pending
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2015-11-09 09:45:11 +0100
committerLukas Rytz <lukas.rytz@gmail.com>2016-01-25 11:34:30 +0100
commit062109b51d0dba640933d749bf07f55d84f450d4 (patch)
treec7b00d187f49b777239f6ac1f3b8632e2e61c8b3 /test/pending
parent9f7446450fec15d7563e5dcd0c12f56350951b7d (diff)
downloadscala-062109b51d0dba640933d749bf07f55d84f450d4.tar.gz
scala-062109b51d0dba640933d749bf07f55d84f450d4.tar.bz2
scala-062109b51d0dba640933d749bf07f55d84f450d4.zip
Rewrite test for inlining higher-order functions
Diffstat (limited to 'test/pending')
-rw-r--r--test/pending/pos/inliner2.flags35
-rw-r--r--test/pending/pos/inliner2.scala57
2 files changed, 0 insertions, 92 deletions
diff --git a/test/pending/pos/inliner2.flags b/test/pending/pos/inliner2.flags
deleted file mode 100644
index 4bf93a9c2a..0000000000
--- a/test/pending/pos/inliner2.flags
+++ /dev/null
@@ -1,35 +0,0 @@
--optimise -Ybackend:GenASM -Xfatal-warnings
-/*
-This is what we get with 2.11.2-M3 and -Yopt:l:project:
-
- public final int bob1();
- Code:
- 0: aload_0
- 1: aload_0
- 2: astore 6
- 4: aload 6
- 6: invokedynamic #62, 0 // InvokeDynamic #0:apply$mcZ$sp:(LA;)Lscala/runtime/java8/JFunction0$mcZ$sp;
- 11: checkcast #29 // class scala/Function0
- 14: invokedynamic #71, 0 // InvokeDynamic #1:apply$mcI$sp:()Lscala/runtime/java8/JFunction0$mcI$sp;
- 19: checkcast #29 // class scala/Function0
- 22: invokedynamic #76, 0 // InvokeDynamic #2:apply$mcI$sp:()Lscala/runtime/java8/JFunction0$mcI$sp;
- 27: checkcast #29 // class scala/Function0
- 30: astore 4
- 32: astore_3
- 33: astore_2
- 34: astore_1
- 35: aload_2
- 36: pop
- 37: aload 6
- 39: invokevirtual #53 // Method A$$$anonfun$1:()Z
- 42: ifeq 54
- 45: aload_3
- 46: invokeinterface #36, 1 // InterfaceMethod scala/Function0.apply:()Ljava/lang/Object;
- 51: goto 61
- 54: aload 4
- 56: invokeinterface #36, 1 // InterfaceMethod scala/Function0.apply:()Ljava/lang/Object;
- 61: astore 5
- 63: aload 5
- 65: invokestatic #82 // Method scala/runtime/BoxesRunTime.unboxToInt:(Ljava/lang/Object;)I
- 68: ireturn
-*/ \ No newline at end of file
diff --git a/test/pending/pos/inliner2.scala b/test/pending/pos/inliner2.scala
deleted file mode 100644
index bc83e04312..0000000000
--- a/test/pending/pos/inliner2.scala
+++ /dev/null
@@ -1,57 +0,0 @@
-// This isn't actually testing much, because no warning is emitted in versions
-// before the fix which comes with this because the method isn't even considered
-// for inlining due to the bug.
-class A {
- private var debug = false
- @inline private def ifelse[T](cond: => Boolean, ifPart: => T, elsePart: => T): T =
- if (cond) ifPart else elsePart
-
- final def bob1() = ifelse(debug, 1, 2)
- final def bob2() = if (debug) 1 else 2
-}
-// Cool:
-//
-// % ls -1 /tmp/2901/
-// A$$anonfun$bob1$1.class
-// A$$anonfun$bob1$2.class
-// A$$anonfun$bob1$3.class
-// A.class
-// % ls -1 /tmp/trunk
-// A.class
-//
-// Observations:
-//
-// (1) The inlined version accesses the field: the explicit one calls the accessor.
-// (2) The inlined version fails to eliminate boxing. With reference types it emits
-// an unneeded checkcast.
-// (3) The private var debug is mangled to A$$debug, but after inlining it is never accessed
-// from outside of the class and doesn't need mangling.
-// (4) We could forego emitting bytecode for ifelse entirely if it has been
-// inlined at all sites.
-//
-// Generated bytecode for the above:
-//
-// public final int bob1();
-// Code:
-// Stack=1, Locals=1, Args_size=1
-// 0: aload_0
-// 1: getfield #11; //Field A$$debug:Z
-// 4: ifeq 14
-// 7: iconst_1
-// 8: invokestatic #41; //Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
-// 11: goto 18
-// 14: iconst_2
-// 15: invokestatic #41; //Method scala/runtime/BoxesRunTime.boxToInteger:(I)Ljava/lang/Integer;
-// 18: invokestatic #45; //Method scala/runtime/BoxesRunTime.unboxToInt:(Ljava/lang/Object;)I
-// 21: ireturn
-//
-// public final int bob2();
-// Code:
-// Stack=1, Locals=1, Args_size=1
-// 0: aload_0
-// 1: invokevirtual #48; //Method A$$debug:()Z
-// 4: ifeq 11
-// 7: iconst_1
-// 8: goto 12
-// 11: iconst_2
-// 12: ireturn