diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2015-07-02 20:17:57 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2015-07-03 10:42:52 +0200 |
commit | 055a373802a34ee09fc0ed20b2b25c3fa20507d4 (patch) | |
tree | a4ae2c969fcea60726796f552e5bbdffe36d191c /src/compiler/scala/tools/nsc/backend/jvm/BCodeBodyBuilder.scala | |
parent | 6ae2dd8dc4556e8085710122097c849fdeac6d95 (diff) | |
download | scala-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.scala | 1 |
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. |