summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2015-07-02 20:17:57 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2015-07-03 10:42:52 +0200
commit055a373802a34ee09fc0ed20b2b25c3fa20507d4 (patch)
treea4ae2c969fcea60726796f552e5bbdffe36d191c /src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala
parent6ae2dd8dc4556e8085710122097c849fdeac6d95 (diff)
downloadscala-055a373802a34ee09fc0ed20b2b25c3fa20507d4.tar.gz
scala-055a373802a34ee09fc0ed20b2b25c3fa20507d4.tar.bz2
scala-055a373802a34ee09fc0ed20b2b25c3fa20507d4.zip
SI-9376 don't crash when inlining a closure body that throws.
If the closure body method has return type Nothing$, add an `ATHROW` instruction after the callsite. This is required for computing stack map frames, as explained in a comment in BCodeBodyBuilder.adapt. Similar for closure bodies with return type Null$.
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala
index c3f71969f6..063fb81d46 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala
@@ -843,7 +843,6 @@ abstract class BCodeBodyBuilder extends BCodeSkelBuilder {
*
* New (http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.10.1)
* - Requires consistent stack map frames. GenBCode always generates stack frames.
- * or higher.
* - In practice: the ASM library computes stack map frames for us (ClassWriter). Emitting
* correct frames after an ATHROW is probably complex, so ASM uses the following strategy:
* - Every time when generating an ATHROW, a new basic block is started.