aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/internal/AsyncMacro.scala
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2013-10-13 23:44:18 +0200
committerPhilipp Haller <hallerp@gmail.com>2013-10-22 14:40:01 +0200
commitd6c5aeb6f6effcac4a054f0290711aa64ae3c191 (patch)
treec661375d5d9299466936c9f3df6949b4346e1a85 /src/main/scala/scala/async/internal/AsyncMacro.scala
parent9ecbb7a54ed0e9927a0efba23fa4e61d06be761e (diff)
downloadscala-async-d6c5aeb6f6effcac4a054f0290711aa64ae3c191.tar.gz
scala-async-d6c5aeb6f6effcac4a054f0290711aa64ae3c191.tar.bz2
scala-async-d6c5aeb6f6effcac4a054f0290711aa64ae3c191.zip
Liveness analysis to avoid memory retention issues
- Iterative, backwards data-flow analysis - Make sure fields captured by nested defs are never zeroed out. This is done elegantly by declaring such fields a being live at the exit of the final state; thus, they will never be zeroed out.
Diffstat (limited to 'src/main/scala/scala/async/internal/AsyncMacro.scala')
-rw-r--r--src/main/scala/scala/async/internal/AsyncMacro.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/main/scala/scala/async/internal/AsyncMacro.scala b/src/main/scala/scala/async/internal/AsyncMacro.scala
index 8d93567..1c97ca7 100644
--- a/src/main/scala/scala/async/internal/AsyncMacro.scala
+++ b/src/main/scala/scala/async/internal/AsyncMacro.scala
@@ -20,7 +20,7 @@ object AsyncMacro {
private[async] trait AsyncMacro
extends TypingTransformers
with AnfTransform with TransformUtils with Lifter
- with ExprBuilder with AsyncTransform with AsyncAnalysis {
+ with ExprBuilder with AsyncTransform with AsyncAnalysis with LiveVariables {
val global: Global
val callSiteTyper: global.analyzer.Typer