diff --git a/src/ikarus.boot b/src/ikarus.boot index 0cf3bc4..88d6473 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.syntax.ss b/src/ikarus.syntax.ss index d87c451..c5072b4 100644 --- a/src/ikarus.syntax.ss +++ b/src/ikarus.syntax.ss @@ -2272,7 +2272,7 @@ macro*)))) (define (library-expander x) (let-values ([(name imp* inv* vis* invoke-code macro* export-subst export-env) - (core-library-expander x)]) + (core-library-expander x)]) (let ([id (gensym)] [name name] [ver '()] ;;; FIXME @@ -2295,7 +2295,8 @@ (define build-export (lambda (x) ;;; exports use the same gensym - `(#%$set-symbol-value! ',x ,x))) + `(begin + (#%$set-symbol-value! ',x ,x)))) (define (make-export-subst int* ext* rib) (map (lambda (int ext) diff --git a/src/makefile.ss b/src/makefile.ss index 2dd58f5..792573c 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -696,6 +696,7 @@ [$symbol-string $symbols] [$symbol-plist $symbols] [$set-symbol-value! $symbols] + [$set-symbol-proc! $symbols] [$set-symbol-string! $symbols] [$set-symbol-unique-string! $symbols] [$set-symbol-plist! $symbols] diff --git a/src/pass-specify-rep-primops.ss b/src/pass-specify-rep-primops.ss index 736dc35..5b070c1 100644 --- a/src/pass-specify-rep-primops.ss +++ b/src/pass-specify-rep-primops.ss @@ -452,10 +452,6 @@ (prm 'mset x (K (- disp-symbol-record-value symbol-ptag)) (K unbound)) (prm 'mset x (K (- disp-symbol-record-proc symbol-ptag)) (K unbound)) (prm 'mset x (K (- disp-symbol-record-plist symbol-ptag)) (K nil)) - ;(prm 'mset x (K (- disp-symbol-system-value symbol-tag)) (K unbound)) - ;(prm 'mset x (K (- disp-symbol-function symbol-ptag)) (K 0)) - ;(prm 'mset x (K (- disp-symbol-error-function symbol-ptag)) (K 0)) - ;(prm 'mset x (K (- disp-symbol-unused symbol-tag)) (K 0)) x)] [(P str) (K #t)] [(E str) (nop)]) @@ -491,6 +487,11 @@ (prm 'mset x (K (- disp-symbol-record-value symbol-ptag)) (T v)) (dirty-vector-set x))]) +(define-primop $set-symbol-proc! unsafe + [(E x v) + (with-tmp ([x (T x)]) + (prm 'mset x (K (- disp-symbol-record-proc symbol-ptag)) (T v)) + (dirty-vector-set x))]) (define-primop top-level-value safe [(V x)