diff --git a/src/ikarus.boot b/src/ikarus.boot index e3dc161..5bb840e 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/makefile.ss b/src/makefile.ss index c7dbb11..cbfe9f9 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -127,6 +127,7 @@ [mutable-pairs (r6rs mutable-pairs) #t] [unicode (r6rs unicode) #t] [ios (r6rs i/o simple) #t] + [ev (r6rs eval) #t] [cm (chez modules) #t] [$all (ikarus system $all) #f] [$pairs (ikarus system $pairs) #f] @@ -162,6 +163,7 @@ [unicode (r6rs unicode) #t] [rfl (r6rs arithmetic flonums) #t] [ios (r6rs i/o simple) #t] + [ev (r6rs eval) #t] [cm (chez modules) #t] [$all (ikarus system $all) #f] [$pairs (ikarus system $pairs) #f] @@ -567,8 +569,8 @@ [load i] [assembler-output i] [new-cafe i] - [eval i] - [environment i] + [eval i ev] + [environment i ev] [environment? i] [time-it i] [command-line-arguments i] diff --git a/src/pass-specify-rep-primops.ss b/src/pass-specify-rep-primops.ss index 5b070c1..22ecbce 100644 --- a/src/pass-specify-rep-primops.ss +++ b/src/pass-specify-rep-primops.ss @@ -133,7 +133,9 @@ [(E x) (nop)]) (define-primop pointer-value unsafe - [(V x) (prm 'logand (T x) (K (* -1 fixnum-scale)))] + [(V x) (prm 'logand + (prm 'srl (T x) (K 1)) + (K (* -1 fixnum-scale)))] [(P x) (K #t)] [(E x) (nop)])