summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-09-11 04:28:42 -0700
committerJason Zaugg <jzaugg@gmail.com>2013-09-11 04:28:42 -0700
commita49b4b6375aec85cb9f827eaea42b19d0719e577 (patch)
tree04114b4ff5b5fdc6d9952d8354e32eaf6fbae9c9
parent3707b09aa405150b5064fb2490dbd2632923ed16 (diff)
parent2c9e051b0c152d6dbc19d3bdad6ed60c096df213 (diff)
downloadscala-a49b4b6375aec85cb9f827eaea42b19d0719e577.tar.gz
scala-a49b4b6375aec85cb9f827eaea42b19d0719e577.tar.bz2
scala-a49b4b6375aec85cb9f827eaea42b19d0719e577.zip
Merge pull request #2932 from retronym/topic/cps-skip-locker-friendly
Revert a tiny recent refactoring in SelectiveCPSTransform
-rw-r--r--src/continuations/plugin/scala/tools/selectivecps/SelectiveCPSTransform.scala10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/continuations/plugin/scala/tools/selectivecps/SelectiveCPSTransform.scala b/src/continuations/plugin/scala/tools/selectivecps/SelectiveCPSTransform.scala
index a2c2ebc3e3..0210ad3459 100644
--- a/src/continuations/plugin/scala/tools/selectivecps/SelectiveCPSTransform.scala
+++ b/src/continuations/plugin/scala/tools/selectivecps/SelectiveCPSTransform.scala
@@ -330,6 +330,10 @@ abstract class SelectiveCPSTransform extends PluginComponent with
}
}
+ // TODO use gen.mkBlock after 2.11.0-M6. Why wait? It allows us to still build in development
+ // mode with `ant -DskipLocker=1`
+ def mkBlock(stms: List[Tree], expr: Tree) = if (stms.nonEmpty) Block(stms, expr) else expr
+
try {
if (specialCaseTrivial) {
debuglog("will optimize possible tail call: " + bodyExpr)
@@ -348,9 +352,9 @@ abstract class SelectiveCPSTransform extends PluginComponent with
val argSym = currentOwner.newValue(vd.symbol.name.toTermName).setInfo(tpe)
val argDef = localTyper.typed(ValDef(argSym, Select(ctxRef, ctxRef.tpe.member(cpsNames.getTrivialValue))))
val switchExpr = localTyper.typedPos(vd.symbol.pos) {
- val body2 = gen.mkBlock(bodyStms :+ bodyExpr).duplicate // dup before typing!
+ val body2 = mkBlock(bodyStms, bodyExpr).duplicate // dup before typing!
If(Select(ctxRef, ctxSym.tpe.member(cpsNames.isTrivial)),
- applyTrivial(argSym, gen.mkBlock((argDef :: bodyStms) :+ bodyExpr)),
+ applyTrivial(argSym, mkBlock(argDef::bodyStms, bodyExpr)),
applyCombinatorFun(ctxRef, body2))
}
(List(ctxDef), switchExpr)
@@ -358,7 +362,7 @@ abstract class SelectiveCPSTransform extends PluginComponent with
// ctx.flatMap { <lhs> => ... }
// or
// ctx.map { <lhs> => ... }
- (Nil, applyCombinatorFun(rhs1, gen.mkBlock(bodyStms :+ bodyExpr)))
+ (Nil, applyCombinatorFun(rhs1, mkBlock(bodyStms, bodyExpr)))
}
} catch {
case ex:TypeError =>