summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-05-24 21:25:12 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-05-24 21:25:12 +0000
commit36f07c72a4746724281200d560b5778a4358b517 (patch)
tree97d3e639d5b298d7c658185c4171eb9468a45b93 /src
parentfa3010ed335f5a8647c5fdcecbfbdb01b26fec02 (diff)
downloadscala-36f07c72a4746724281200d560b5778a4358b517.tar.gz
scala-36f07c72a4746724281200d560b5778a4358b517.tar.bz2
scala-36f07c72a4746724281200d560b5778a4358b517.zip
Removed obsolete isDetached flag from Actor trait.
Diffstat (limited to 'src')
-rw-r--r--src/actors/scala/actors/Actor.scala16
-rw-r--r--src/actors/scala/actors/Reaction.scala1
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()