about summary refs log tree commit diff stats
path: root/mu.arc.t
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-11-21 18:31:48 -0800
committerKartik K. Agaram <vc@akkartik.com>2014-11-21 18:45:46 -0800
commit58ad6023b52f2c37feb1e20a4d3263216d5ae597 (patch)
treed9e407d73da124c261e91efc2dd4614b99e90ca0 /mu.arc.t
parent95b57986d06935cd9a865357891e26fc46674889 (diff)
downloadmu-58ad6023b52f2c37feb1e20a4d3263216d5ae597.tar.gz
282 - scheduler skips ahead when all routines are asleep
Diffstat (limited to 'mu.arc.t')
-rw-r--r--mu.arc.t22
1 files changed, 18 insertions, 4 deletions
diff --git a/mu.arc.t b/mu.arc.t
index 58ac2d3a..74ecd224 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -1737,8 +1737,6 @@
   (set sleeping-routines*.routine))
 ; not yet time for it to wake up
 (= curr-cycle* 23)
-; pretend we just finished a routine
-(= routine* (annotate 'routine (table)))
 ;? (set dump-trace*)
 ;? (= dump-trace* (obj whitelist '("run" "schedule")))
 (update-scheduler-state)
@@ -1761,13 +1759,29 @@
   (set sleeping-routines*.routine))
 ; time for it to wake up
 (= curr-cycle* 24)
-; pretend we just finished a routine
-(= routine* (annotate 'routine (table)))
 (update-scheduler-state)
 (if (~is 2 len.running-routines*)
   (prn "F - scheduler wakes up sleeping routines at the right time"))
 
 (reset)
+(new-trace "scheduler-skip")
+(add-fns
+  '((f1
+      ((1 integer) <- copy (3 literal)))))
+; running-routines* is empty
+(assert (empty running-routines*))
+; sleeping routine
+(let routine make-routine!f1
+  (= rep.routine!sleep '(23 literal))
+  (set sleeping-routines*.routine))
+; long time left for it to wake up
+(= curr-cycle* 0)
+(update-scheduler-state)
+(assert (is curr-cycle* 24))
+(if (~is 1 len.running-routines*)
+  (prn "F - scheduler skips ahead to earliest sleeping routines when nothing to run"))
+
+(reset)
 (new-trace "sleep")
 (add-fns
   '((f1