mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-02 21:10:27 +02:00
Merge remote-tracking branch 'origin/stable-2.0'
Moved scm_i_struct_hash from struct.c to hash.c and made it static. The port's alist is now a field of 'scm_t_port'. Conflicts: libguile/arrays.c libguile/hash.c libguile/ports.c libguile/print.h libguile/read.c
This commit is contained in:
commit
fa980bcc0f
53 changed files with 1677 additions and 531 deletions
|
@ -516,6 +516,27 @@
|
|||
(define-primitive-expander f64vector-set! (vec i x)
|
||||
(bytevector-ieee-double-native-set! vec (* i 8) x))
|
||||
|
||||
;; Appropriate for use with either 'eqv?' or 'equal?'.
|
||||
(define maybe-simplify-to-eq
|
||||
(case-lambda
|
||||
((src a b)
|
||||
;; Simplify cases where either A or B is constant.
|
||||
(define (maybe-simplify a b)
|
||||
(and (const? a)
|
||||
(let ((v (const-exp a)))
|
||||
(and (or (memq v '(#f #t () #nil))
|
||||
(symbol? v)
|
||||
(and (integer? v)
|
||||
(exact? v)
|
||||
(<= v most-positive-fixnum)
|
||||
(>= v most-negative-fixnum)))
|
||||
(make-primcall src 'eq? (list a b))))))
|
||||
(or (maybe-simplify a b) (maybe-simplify b a)))
|
||||
(else #f)))
|
||||
|
||||
(hashq-set! *primitive-expand-table* 'eqv? maybe-simplify-to-eq)
|
||||
(hashq-set! *primitive-expand-table* 'equal? maybe-simplify-to-eq)
|
||||
|
||||
(hashq-set! *primitive-expand-table*
|
||||
'@dynamic-wind
|
||||
(case-lambda
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue