smp: without-interrupts: prgcop.scm
authorMatt Birkholz <puck@birchwood-abbey.net>
Fri, 6 Mar 2015 22:18:40 +0000 (15:18 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Fri, 6 Mar 2015 22:18:40 +0000 (15:18 -0700)
README.txt
src/runtime/prgcop.scm

index 4bf597ac4d4bbd68dc636e1907257a9f789719f2..3e7a5750c630ff40f8d5167ad3b9c56c9e452b35 100644 (file)
@@ -1378,11 +1378,18 @@ The hits with accompanying analysis:
        Punted until it is known that OS2 can SMP.
 
   parser-buffer.scm:383:             (without-interrupts
+       Caller: discard-parser-buffer-head!
 
        OK.  Avoiding aborts that would break the parser buffer(?).
        Replaced with without-interruption.
 
   prgcop.scm:163:  (with-absolutely-no-interrupts thunk))
+       Caller: atomically
+                 %copy-compiled-code-address
+
+       OK.  All interrupts are masked to avoid a GC flip while an
+       object address is in use.  However, to call it "atomically" is
+       a bit of a misnomer.
 
   process.scm:85:  (without-interrupts
   process.scm:107:  (without-interrupts (lambda () (%close-subprocess-i/o process))))
index b065b7b92fc8aa1f52e3590b68fcf611868d8b31..42f129f32e668f8c6eb0e43731092645c13b0ad4 100644 (file)
@@ -135,7 +135,7 @@ USA.
 (define (%copy-compiled-code-address obj)
   (let ((new-block (copy-compiled-code-block
                    (compiled-code-address->block obj))))
-    (atomically
+    (with-absolutely-no-interrupts
      (lambda ()
        (object-new-type
        (object-type obj)
@@ -158,9 +158,6 @@ USA.
        ((not (fix:< i len)))
       (vector-set! new i (copy-object (vector-ref new i))))
     typed))
-
-(define-integrable (atomically thunk)
-  (with-absolutely-no-interrupts thunk))
 \f
 (define ((%copy-pair type) obj)
   (%%copy-pair type obj))