diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-05-24 21:25:12 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-05-24 21:25:12 +0000 |
commit | 36f07c72a4746724281200d560b5778a4358b517 (patch) | |
tree | 97d3e639d5b298d7c658185c4171eb9468a45b93 | |
parent | fa3010ed335f5a8647c5fdcecbfbdb01b26fec02 (diff) | |
download | scala-36f07c72a4746724281200d560b5778a4358b517.tar.gz scala-36f07c72a4746724281200d560b5778a4358b517.tar.bz2 scala-36f07c72a4746724281200d560b5778a4358b517.zip |
Removed obsolete isDetached flag from Actor trait.
-rw-r--r-- | src/actors/scala/actors/Actor.scala | 16 | ||||
-rw-r--r-- | src/actors/scala/actors/Reaction.scala | 1 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala index 47df95057b..1996bd3f7a 100644 --- a/src/actors/scala/actors/Actor.scala +++ b/src/actors/scala/actors/Actor.scala @@ -376,7 +376,16 @@ trait Actor extends AbstractActor { private var received: Option[Any] = None private val waitingForNone = (m: Any) => false + + /* Whenever this Actor executes on some thread, waitingFor is + * guaranteed to be equal to waitingForNone. + * + * In other words, whenever waitingFor is not equal to + * waitingForNone, this Actor is guaranteed not to execute on some + * thread. + */ private var waitingFor: Any => Boolean = waitingForNone + private var isSuspended = false protected val mailbox = new MessageQueue @@ -517,7 +526,6 @@ trait Actor extends AbstractActor { if (null eq qel) { waitingFor = f.isDefinedAt continuation = f - isDetached = true } else { sessions = List(qel.session) scheduleActor(f, qel.msg) @@ -561,7 +569,6 @@ trait Actor extends AbstractActor { }) Actor.timer.schedule(onTimeout.get, msec) continuation = f - isDetached = true } } else { sessions = List(qel.session) @@ -801,8 +808,6 @@ trait Actor extends AbstractActor { private var continuation: PartialFunction[Any, Unit] = null private var onTimeout: Option[TimerTask] = None - // accessed in Reaction - private[actors] var isDetached = false // guarded by lock of this protected def scheduleActor(f: PartialFunction[Any, Unit], msg: Any) = @@ -1014,8 +1019,9 @@ trait Actor extends AbstractActor { // (because shouldExit == true) if (isSuspended) resumeActor() - else if (isDetached) + else if (waitingFor ne waitingForNone) { scheduleActor(null, null) + } } } diff --git a/src/actors/scala/actors/Reaction.scala b/src/actors/scala/actors/Reaction.scala index 1955ac3b05..1017e42080 100644 --- a/src/actors/scala/actors/Reaction.scala +++ b/src/actors/scala/actors/Reaction.scala @@ -49,7 +49,6 @@ class Reaction extends Runnable { def run() { val saved = Actor.tl.get.asInstanceOf[Actor] Actor.tl.set(a) - a.isDetached = false try { if (a.shouldExit) // links a.exit() |