about summary refs log tree commit diff stats
path: root/mu.arc.t
diff options
context:
space:
mode:
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