From: Matt Birkholz Date: Fri, 6 Mar 2015 22:18:40 +0000 (-0700) Subject: smp: without-interrupts: prgcop.scm X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=086ba415ddbec529130f3de239007a267c227175;p=mit-scheme.git smp: without-interrupts: prgcop.scm --- diff --git a/README.txt b/README.txt index 4bf597ac4..3e7a5750c 100644 --- a/README.txt +++ b/README.txt @@ -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)))) diff --git a/src/runtime/prgcop.scm b/src/runtime/prgcop.scm index b065b7b92..42f129f32 100644 --- a/src/runtime/prgcop.scm +++ b/src/runtime/prgcop.scm @@ -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)) (define ((%copy-pair type) obj) (%%copy-pair type obj))