diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2016-09-27 13:55:27 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-27 13:55:27 +1000 |
commit | ceaf419491c0eb3ec715ec4ac22519c34ea0c1d6 (patch) | |
tree | af93d60f8a6889bb67b401350c000204c8b4126a /src/compiler/scala/tools/nsc/backend/jvm | |
parent | 0245f373ce51eabd94463f9d7293c72fcf870593 (diff) | |
parent | e994c1c0becddc0d91fd4428f0d673bfac8941a3 (diff) | |
download | scala-ceaf419491c0eb3ec715ec4ac22519c34ea0c1d6.tar.gz scala-ceaf419491c0eb3ec715ec4ac22519c34ea0c1d6.tar.bz2 scala-ceaf419491c0eb3ec715ec4ac22519c34ea0c1d6.zip |
Merge pull request #5417 from retronym/ticket/SD-233
SD-233 synchronized blocks are JIT-friendly again
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/BCodeSyncAndTry.scala | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeSyncAndTry.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeSyncAndTry.scala index 3e53419573..466793010f 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeSyncAndTry.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeSyncAndTry.scala @@ -73,9 +73,11 @@ abstract class BCodeSyncAndTry extends BCodeBodyBuilder { /* ------ (4) exception-handler version of monitor-exit code. * Reached upon abrupt termination of (2). * Protected by whatever protects the whole synchronized expression. + * null => "any" exception in bytecode, like we emit for finally. + * Important not to use j/l/Throwable which dooms the method to a life of interpretation! (SD-233) * ------ */ - protect(startProtected, endProtected, currProgramPoint(), jlThrowableRef) + protect(startProtected, endProtected, currProgramPoint(), null) locals.load(monitor) emit(asm.Opcodes.MONITOREXIT) emit(asm.Opcodes.ATHROW) |