trait LiveVariables extends AnyRef
- Self Type
- AsyncMacro
- Alphabetic
- By Inheritance
- LiveVariables
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def fieldsToNullOut(asyncStates: List[AsyncMacro.AsyncState], liftables: List[reflect.macros.Universe.Tree]): LinkedHashMap[Int, List[reflect.macros.Universe.Tree]]
Returns for a given state a list of fields (as trees) that should be nulled out upon resuming that state (at the beginning of
resume
).Returns for a given state a list of fields (as trees) that should be nulled out upon resuming that state (at the beginning of
resume
).- asyncStates
the states of an
async
block- liftables
the lifted fields
- returns
a map mapping a state to the fields that should be nulled out upon resuming that state
- def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def liveVars(asyncStates: List[AsyncMacro.AsyncState], liftables: List[reflect.macros.Universe.Tree]): LinkedHashMap[reflect.macros.Universe.Tree, StateSet]
Live variables data-flow analysis.
Live variables data-flow analysis.
The goal is to find, for each lifted field, the last state where the field is used. In all direct successor states which are not (indirect) predecessors of that last state (possible through loops), the corresponding field should be nulled out (at the beginning of
resume
).- asyncStates
the states of an
async
block- liftables
the lifted fields
- returns
a map which indicates for a given field (the key) the states in which it should be nulled out
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()