Fluidize (runtime save/restore) internal *within-restore-window?*.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Sat, 8 Feb 2014 17:25:07 +0000 (10:25 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Tue, 12 Aug 2014 00:30:29 +0000 (17:30 -0700)
src/runtime/gcdemn.scm
src/runtime/make.scm
src/runtime/savres.scm
src/runtime/usrint.scm

index 36506e55ae8e9f94497578d593a96f9f1560e7a5..12e0e95d572c82d0cec20909e0743028457269b7 100644 (file)
@@ -61,7 +61,7 @@ USA.
 (define (add-gc-daemon!/no-restore daemon)
   (add-gc-daemon!
    (lambda ()
-     (if (not *within-restore-window?*)
+     (if (not (fluid *within-restore-window?*))
         (daemon)))))
 
 ;;; SECONDARY-GC-DAEMONS are executed rarely.  Their purpose is to
index e6e35e8f13ef69099af5323f1e45dc27efe4f509..89da4b8dc95e9c6e7d4c8ec00b33fe6b303b3bd0 100644 (file)
@@ -544,6 +544,7 @@ USA.
    (RUNTIME HTML-FORM-CODEC)
    (OPTIONAL (RUNTIME WIN32-REGISTRY))
    (OPTIONAL (RUNTIME FFI))
+   (RUNTIME SAVE/RESTORE)
    (RUNTIME SWANK)
    (RUNTIME STACK-SAMPLER)))
 \f
index f82dd3bbb1299935fd07739f9bcd25280d2efe6b..3e5688cc8c15454dae6f8864677c70e7d9fa3e8b 100644 (file)
@@ -41,7 +41,10 @@ USA.
 
 (define world-id "Image")
 (define time-world-saved #f)
-(define *within-restore-window?* #f)
+(define *within-restore-window?*)
+
+(define (initialize-package!)
+  (set! *within-restore-window?* (make-fluid #f)))
 \f
 (define (disk-save filename #!optional id)
   (let ((filename (->namestring (merge-pathnames filename)))
@@ -76,8 +79,9 @@ USA.
           (read-microcode-tables!)
           (lambda ()
             (set! time-world-saved time)
-            (fluid-let ((*within-restore-window?* #t))
-              (event-distributor/invoke! event:after-restore))
+            (let-fluid *within-restore-window?* #t
+              (lambda ()
+                (event-distributor/invoke! event:after-restore)))
             (start-thread-timer)
             (cond ((string? id)
                    (set! world-id id)
index e81b5ad0c7b9d784009b4af68eafdd20c2aeb658..920e0567800c473ca54b050b1f6fa97c333b083b 100644 (file)
@@ -382,12 +382,12 @@ USA.
 
 (define (port/gc-start port)
   (let ((operation (port/operation port 'GC-START)))
-    (if (and operation (not *within-restore-window?*))
+    (if (and operation (not (fluid *within-restore-window?*)))
        (operation port))))
 
 (define (port/gc-finish port)
   (let ((operation (port/operation port 'GC-FINISH)))
-    (if (and operation (not *within-restore-window?*))
+    (if (and operation (not (fluid *within-restore-window?*)))
        (operation port))))
 
 (define (port/read-start port)