summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/jvm
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2016-09-27 13:55:27 +1000
committerGitHub <noreply@github.com>2016-09-27 13:55:27 +1000
commitceaf419491c0eb3ec715ec4ac22519c34ea0c1d6 (patch)
treeaf93d60f8a6889bb67b401350c000204c8b4126a /src/compiler/scala/tools/nsc/backend/jvm
parent0245f373ce51eabd94463f9d7293c72fcf870593 (diff)
parente994c1c0becddc0d91fd4428f0d673bfac8941a3 (diff)
downloadscala-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.scala4
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)