~ chicken-core (chicken-5) d8d2334fb2b23f83108eaf6c2c74e269c4f91096
commit d8d2334fb2b23f83108eaf6c2c74e269c4f91096 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Thu Apr 16 18:50:14 2015 +1200 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Thu Apr 16 18:50:14 2015 +1200 Suffix mini-srfi-1 lset procedures to indicate that they use eq? diff --git a/c-backend.scm b/c-backend.scm index e81ab4df..7f269ebc 100644 --- a/c-backend.scm +++ b/c-backend.scm @@ -553,12 +553,12 @@ [direct (lambda-literal-direct ll)] [allocated (lambda-literal-allocated ll)] ) (when (>= n small-parameter-limit) - (set! large-signatures (lset-adjoin large-signatures (add1 n))) ) + (set! large-signatures (lset-adjoin/eq? large-signatures (add1 n)))) (gen #t) (for-each (lambda (s) (when (>= s small-parameter-limit) - (set! large-signatures (lset-adjoin large-signatures (add1 s))) ) ) + (set! large-signatures (lset-adjoin/eq? large-signatures (add1 s))))) (lambda-literal-callee-signatures ll) ) (cond [(not (eq? 'toplevel id)) (gen "C_noret_decl(" id ")" #t) @@ -654,8 +654,8 @@ (gen ");}") ] [(or rest (> (lambda-literal-allocated ll) 0) (lambda-literal-external ll)) (if (and rest (not (eq? rest-mode 'none))) - (set! nsr (lset-adjoin nsr argc)) - (set! ns (lset-adjoin ns argc)) ) ] ) ) ) ) + (set! nsr (lset-adjoin/eq? nsr argc)) + (set! ns (lset-adjoin/eq? ns argc)))])))) lambda-table) (for-each (lambda (n) diff --git a/core.scm b/core.scm index afe0f49e..8d813491 100644 --- a/core.scm +++ b/core.scm @@ -656,7 +656,7 @@ (apply ##sys#require ids) (##sys#hash-table-update! file-requirements 'dynamic/syntax - (cut lset-union <> ids) + (cut lset-union/eq? <> ids) (lambda () ids) ) '(##core#undefined) ) ) @@ -1415,7 +1415,7 @@ (when (pair? us) (##sys#hash-table-update! file-requirements 'static - (cut lset-union us <>) + (cut lset-union/eq? us <>) (lambda () us)) (let ((units (map (lambda (u) (string->c-identifier (stringify u))) us))) (set! used-units (append used-units units)) ) ) ) ) @@ -1440,8 +1440,8 @@ (set! extended-bindings default-extended-bindings) ] [else (let ([syms (stripa (cdr spec))]) - (set! standard-bindings (lset-intersection syms default-standard-bindings)) - (set! extended-bindings (lset-intersection syms default-extended-bindings)) ) ] ) ) + (set! standard-bindings (lset-intersection/eq? syms default-standard-bindings)) + (set! extended-bindings (lset-intersection/eq? syms default-extended-bindings)))])) ((number-type) (check-decl spec 1 1) (set! number-type (strip (cadr spec)))) @@ -1491,14 +1491,14 @@ (if (null? (cddr spec)) (set! standard-bindings '()) (set! standard-bindings - (lset-difference default-standard-bindings - (stripa (cddr spec))))) ] + (lset-difference/eq? default-standard-bindings + (stripa (cddr spec)))))] [(extended-bindings) (if (null? (cddr spec)) (set! extended-bindings '()) (set! extended-bindings - (lset-difference default-extended-bindings - (stripa (cddr spec))) )) ] + (lset-difference/eq? default-extended-bindings + (stripa (cddr spec)))))] [(inline) (if (null? (cddr spec)) (set! inline-locally #f) @@ -1511,8 +1511,8 @@ (set! extended-bindings '()) ] [else (let ([syms (stripa (cddr spec))]) - (set! standard-bindings (lset-difference default-standard-bindings syms)) - (set! extended-bindings (lset-difference default-extended-bindings syms)) ) ] ) ] + (set! standard-bindings (lset-difference/eq? default-standard-bindings syms)) + (set! extended-bindings (lset-difference/eq? default-extended-bindings syms)))])] ((inline-global) (set! enable-inline-files #t) (when (pair? (cddr spec)) @@ -2296,12 +2296,12 @@ (define (test sym item) (db-get db sym item)) (define (register-customizable! var id) - (set! customizable (lset-adjoin customizable var)) + (set! customizable (lset-adjoin/eq? customizable var)) (db-put! db id 'customizable #t) ) (define (register-direct-call! id) (set! direct-calls (add1 direct-calls)) - (set! direct-call-ids (lset-adjoin direct-call-ids id)) ) + (set! direct-call-ids (lset-adjoin/eq? direct-call-ids id))) ;; Gather free-variable information: ;; (and: - register direct calls @@ -2387,7 +2387,7 @@ (let ((c (delete-duplicates (gather (first subs) id vars) eq?))) (db-put! db id 'closure-size (length c)) (db-put! db id 'captured-variables c) - (lset-difference c locals vars))))))) + (lset-difference/eq? c locals vars))))))) (else (concatenate (map (lambda (n) (gather n here locals)) subs)) ) ) )) @@ -2784,7 +2784,7 @@ ((##core#call) (let ((len (length (cdr subs)))) - (set! signatures (lset-adjoin signatures len)) + (set! signatures (lset-adjoin/eq? signatures len)) (when (and (>= (length params) 3) (eq? here (third params))) (set! looping (add1 looping)) ) (make-node class params (mapwalk subs e e-count here boxes)) ) ) diff --git a/csc.scm b/csc.scm index 0b059420..f82d20f4 100644 --- a/csc.scm +++ b/csc.scm @@ -779,7 +779,7 @@ EOF (set! link-options (append link-options (list arg))) ] [(> (string-length arg) 2) (let ([opts (cdr (string->list arg))]) - (if (null? (lset-difference opts short-options)) + (if (null? (lset-difference/eq? opts short-options)) (set! rest (append (map (lambda (o) (string-append "-" (string o))) opts) rest) ) (stop "invalid option `~A'" arg) ) ) ] diff --git a/mini-srfi-1.scm b/mini-srfi-1.scm index 30330e04..9ddef125 100644 --- a/mini-srfi-1.scm +++ b/mini-srfi-1.scm @@ -28,14 +28,14 @@ (declare (unused take span drop partition split-at append-map every any cons* concatenate delete first second third fourth alist-cons delete-duplicates fifth - filter filter-map unzip1 last list-index lset-adjoin lset-difference - lset-union lset-intersection list-tabulate lset<= lset= length+ find find-tail - iota make-list posq posv) + filter filter-map unzip1 last list-index lset-adjoin/eq? lset-difference/eq? + lset-union/eq? lset-intersection/eq? list-tabulate lset<=/eq? lset=/eq? length+ + find find-tail iota make-list posq posv) (hide take span drop partition split-at append-map every any cons* concatenate delete first second third fourth alist-cons delete-duplicates fifth - filter filter-map unzip1 last list-index lset-adjoin lset-difference - lset-union lset-intersection list-tabulate lset<= lset= length+ find find-tail - iota make-list posq posv)) + filter filter-map unzip1 last list-index lset-adjoin/eq? lset-difference/eq? + lset-union/eq? lset-intersection/eq? list-tabulate lset<=/eq? lset=/eq? length+ + find find-tail iota make-list posq posv)) (define (partition pred lst) @@ -149,20 +149,20 @@ ((pred (car lst)) i) (else (loop (fx+ i 1) (cdr lst)))))) -(define (lset-adjoin lst . vals) +(define (lset-adjoin/eq? lst . vals) (let loop ((vals vals) (lst lst)) (cond ((null? vals) lst) ((memq (car vals) lst) (loop (cdr vals) lst)) (else (loop (cdr vals) (cons (car vals) lst)))))) -(define (lset-difference ls . lss) +(define (lset-difference/eq? ls . lss) (foldl (lambda (ls lst) (filter (lambda (x) (not (memq x lst))) ls)) ls lss)) -(define (lset-union ls . lss) +(define (lset-union/eq? ls . lss) (foldl (lambda (ls lst) (foldl @@ -173,7 +173,7 @@ ls lst)) '() lss)) -(define (lset-intersection ls1 . lss) +(define (lset-intersection/eq? ls1 . lss) (filter (lambda (x) (every (lambda (lis) (memq x lis)) lss)) ls1)) @@ -184,10 +184,10 @@ '() (cons (proc i) (loop (fx+ i 1)))))) -(define (lset<= s1 s2) +(define (lset<=/eq? s1 s2) (every (lambda (s) (memq s s2)) s1)) -(define (lset= s1 s2)+ +(define (lset=/eq? s1 s2) (and (eq? (length s1) (length s2)) (every (lambda (s) (memq s s2)) s1))) diff --git a/optimizer.scm b/optimizer.scm index 7df97da7..6f36b051 100644 --- a/optimizer.scm +++ b/optimizer.scm @@ -214,7 +214,7 @@ (cond ((not ok) (unless odirty (set! dirty #f)) (set! broken-constant-nodes - (lset-adjoin broken-constant-nodes n1)) + (lset-adjoin/eq? broken-constant-nodes n1)) n1) (else (touch) @@ -885,7 +885,7 @@ (alist-cons id (filter-map - (lambda (g2) (and (not (eq? g2 g)) (lset<= (cdr g2) deps) (car g2))) + (lambda (g2) (and (not (eq? g2 g)) (lset<=/eq? (cdr g2) deps) (car g2))) groups) cgraph) ) ) ) groups) @@ -1463,7 +1463,7 @@ (set! hoistable '()) (set! allocated 0) (and (rec n #f #f env) - (lset= closures (delete kvar inner-ks)) ) ) ) + (lset=/eq? closures (delete kvar inner-ks))))) (define (transform n fnvar ks hoistable destn allocated) (if (pair? hoistable) diff --git a/scrutinizer.scm b/scrutinizer.scm index d4c808b4..a68dc210 100644 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -1266,8 +1266,8 @@ (merge-result-types rtypes1 rtypes2)))) (car ts) (cdr ts)))) - ((lset= '(true false) ts) 'boolean) - ((lset= '(fixnum float) ts) 'number) + ((lset=/eq? '(true false) ts) 'boolean) + ((lset=/eq? '(fixnum float) ts) 'number) (else (let* ((ts (append-map (lambda (t) @@ -1327,7 +1327,7 @@ (else t))) ((assq t typeenv) => (lambda (e) - (set! used (lset-adjoin used t)) + (set! used (lset-adjoin/eq? used t)) (cdr e))) (else t))))) (let ((t2 (simplify t))) diff --git a/support.scm b/support.scm index db1e5fc3..d6fcf95d 100644 --- a/support.scm +++ b/support.scm @@ -137,7 +137,7 @@ (define (test-mode mode set) (if (symbol? mode) (memq mode set) - (pair? (lset-intersection mode set)))) + (pair? (lset-intersection/eq? mode set)))) (cond ((test-mode mode debugging-chicken) (let ((txt (with-output-to-string thunk))) (display txt) @@ -1294,12 +1294,12 @@ ((##core#variable) (let ((var (first params))) (unless (memq var e) - (set! vars (lset-adjoin vars var)) + (set! vars (lset-adjoin/eq? vars var)) (unless (variable-visible? var block-compilation) - (set! hvars (lset-adjoin hvars var)))))) + (set! hvars (lset-adjoin/eq? hvars var)))))) ((set!) (let ((var (first params))) - (unless (memq var e) (set! vars (lset-adjoin vars var))) + (unless (memq var e) (set! vars (lset-adjoin/eq? vars var))) (walk (car subs) e) ) ) ((let) (walk (first subs) e)Trap