cs-boostrap: repairs to work in Racket CS

This commit is contained in:
Matthew Flatt 2019-04-25 20:45:42 -06:00
parent 01eec4ef9a
commit 8d77b8403c
2 changed files with 19 additions and 3 deletions

View File

@ -757,8 +757,24 @@
(hash-ref-cell ht key def-v))))
;; HACK!
(define (set-car! p v) (unsafe-set-mcar! p v))
(define (set-cdr! p v) (unsafe-set-mcdr! p v))
(define-syntax (define-mutable-pair-hacks stx)
(syntax-case stx ()
[(_ set-car! set-cdr!)
(cond
[(eq? 'chez-scheme (system-type 'vm))
#'(begin
(require racket/linklet)
(define chez-eval (instantiate-linklet
(compile-linklet '(linklet () () eval))
null
(make-instance 'scheme)))
(define set-car! (chez-eval 'set-car!))
(define set-cdr! (chez-eval 'set-cdr!)))]
[else
#'(begin
(define (set-car! p v) (unsafe-set-mcar! p v))
(define (set-cdr! p v) (unsafe-set-mcdr! p v)))])]))
(define-mutable-pair-hacks set-car! set-cdr!)
(define (fixnum-width) (or fixnum-bits 63))

View File

@ -612,7 +612,7 @@
(fxrshift v amt)))
(define (fxbit-field fx1 fx2 fx3)
(fxand (fxrshift fx1 fx2) (fx- (fxlshift 1 (- fx3 fx2)) 1)))
(fxrshift (fxand fx1 (fxnot (fxlshift -1 fx3))) fx2))
(define (bitwise-bit-count fx)
(cond