~ chicken-core (chicken-5) c5599d13eb1aa919991adf6ccb4b3cfca0db0074
commit c5599d13eb1aa919991adf6ccb4b3cfca0db0074 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed Jan 28 23:29:35 2015 +0100 Commit: Evan Hanson <evhan@foldling.org> CommitDate: Wed Jan 28 23:29:35 2015 +0100 Many changes to make build run trough diff --git a/c-backend.scm b/c-backend.scm index 16a3c315..d012a09d 100644 --- a/c-backend.scm +++ b/c-backend.scm @@ -177,7 +177,7 @@ (gen "a[" j "]=") (expr x i) (gen #\,) ) - subs (iota n 1 1) ) + subs (list-tabulate n add1)) (gen "tmp=(C_word)a,a+=" (add1 n) ",tmp)") ) ) ((##core#box) @@ -256,8 +256,8 @@ (call-id (cond ((and (eq? call-id (lambda-literal-id ll)) (lambda-literal-looping ll) ) - (let* ([temps (lambda-literal-temporaries ll)] - [ts (iota n (+ temps nf) 1)] ) + (let* ((temps (lambda-literal-temporaries ll)) + (ts (list-tabulate n (lambda (i) (+ temps nf i))))) (for-each (lambda (arg tr) (gen #t #\t tr #\=) @@ -266,7 +266,7 @@ args ts) (for-each (lambda (from to) (gen #t #\t to "=t" from #\;)) - ts (iota n 1 1) ) + ts (list-tabulate n add1)) (unless customizable (gen #t "c=" nf #\;)) (gen #t "goto loop;") ) ) (else @@ -332,8 +332,8 @@ [call-id (second params)] [empty-closure (zero? (lambda-literal-closure-size ll))] ) (cond (tailcall - (let* ([temps (lambda-literal-temporaries ll)] - [ts (iota n (+ temps nf) 1)] ) + (let* ((temps (lambda-literal-temporaries ll)) + (ts (list-tabulate n (cut + temps nf <>)))) (for-each (lambda (arg tr) (gen #t #\t tr #\=) @@ -342,7 +342,7 @@ subs ts) (for-each (lambda (from to) (gen #t #\t to "=t" from #\;)) - ts (iota n 1 1) ) + ts (list-tabulate n add1)) (gen #t "goto loop;") ) ) (else (gen call-id #\() @@ -460,11 +460,10 @@ (else (bomb "bad form" (node-class n))) ) ) ) (define (expr-args args i) - (pair-for-each - (lambda (xs) - (if (not (eq? xs args)) (gen #\,)) - (expr (car xs) i) ) - args) ) + (let loop ((xs args)) + (unless (null? xs) + (unless (eq? xs args) (gen #\,)) + (expr (car xs) i) ))) (expr node temps) ) diff --git a/chicken-install.scm b/chicken-install.scm index 22a59e93..c377837c 100644 --- a/chicken-install.scm +++ b/chicken-install.scm @@ -728,7 +728,7 @@ eggs) same?))) (unless (and (= (length eggs) (length eggs2)) - (every (lambda (egg) (find (cut same=? <> egg) eggs2)) eggs)) + (every (lambda (egg) (find (cut same? <> egg) eggs2)) eggs)) (print "mapped " eggs " to " eggs2)) eggs2)) diff --git a/core.scm b/core.scm index 48151fd4..4cd4d9e0 100644 --- a/core.scm +++ b/core.scm @@ -573,7 +573,7 @@ (warning (sprintf "reference to variable `~s' possibly unintended" x) ))) (resolve-variable x e se dest ldest h)) - ((not-pair? x) + ((not (pair? x)) (if (constant? x) `(quote ,x) (##sys#syntax-error/context "illegal atomic form" x))) diff --git a/library.scm b/library.scm index fb85c860..fae96a8f 100644 --- a/library.scm +++ b/library.scm @@ -429,12 +429,6 @@ EOF (define (list-tail lst i) (##core#inline "C_i_list_tail" lst i)) (define (list-ref lst i) (##core#inline "C_i_list_ref" lst i)) -(define (##sys#delq x lst) - (let loop ([lst lst]) - (cond ((null? lst) lst) - ((eq? x (##sys#slot lst 0)) (##sys#slot lst 1)) - (else (cons (##sys#slot lst 0) (loop (##sys#slot lst 1)))) ) ) ) - (define (##sys#error-not-a-proper-list arg #!optional loc) (##sys#error-hook (foreign-value "C_NOT_A_PROPER_LIST_ERROR" int) diff --git a/modules.scm b/modules.scm index a5055d99..0322c6d3 100644 --- a/modules.scm +++ b/modules.scm @@ -32,6 +32,7 @@ (not inline ##sys#alias-global-hook)) (include "common-declarations.scm") +(include "mini-srfi-1.scm") (define-syntax d (syntax-rules () ((_ . _) (void)))) @@ -189,7 +190,7 @@ (##sys#module-rename sym (module-name mod)) mod exp #f) (and-let* ((a (assq sym ulist))) - (set-module-undefined-list! mod (##sys#delq a ulist))) + (set-module-undefined-list! mod (delete a ulist))) (check-for-redef sym (##sys#current-environment) (##sys#macro-environment)) (set-module-exist-list! mod (cons sym (module-exist-list mod))) (when exp @@ -643,14 +644,14 @@ (loop impv (cdr imps) v (cons (cons (cadr a) (cdar imps)) s) - (##sys#delq a ids)))) + (delete a ids)))) (else (loop impv (cdr imps) v (cons (car imps) s) ids)))) ((assq (caar impv) ids) => (lambda (a) (loop (cdr impv) imps (cons (cons (cadr a) (cdar impv)) v) s - (##sys#delq a ids)))) + (delete a ids)))) (else (loop (cdr impv) imps (cons (car impv) v) s ids))))) diff --git a/rules.make b/rules.make index cdc215c3..5a61887d 100644 --- a/rules.make +++ b/rules.make @@ -545,7 +545,7 @@ eval.c: $(SRCDIR)eval.scm $(SRCDIR)common-declarations.scm $(bootstrap-lib) expand.c: $(SRCDIR)expand.scm $(SRCDIR)synrules.scm $(SRCDIR)common-declarations.scm $(bootstrap-lib) -modules.c: $(SRCDIR)modules.scm $(SRCDIR)common-declarations.scm +modules.c: $(SRCDIR)modules.scm $(SRCDIR)common-declarations.scm $(SRCDIR)mini-srfi-1.scm $(bootstrap-lib) extras.c: $(SRCDIR)extras.scm $(SRCDIR)common-declarations.scm $(bootstrap-lib) @@ -620,10 +620,10 @@ csc.c: $(SRCDIR)csc.scm mini-srfi-1.scm chicken-bug.c: $(SRCDIR)chicken-bug.scm $(CHICKEN) $< $(CHICKEN_PROGRAM_OPTIONS) -output-file $@ -setup-api.c: $(SRCDIR)setup-api.scm +setup-api.c: $(SRCDIR)setup-api.scm $(SRCDIR)mini-srfi-1.scm $(CHICKEN) $< $(CHICKEN_DYNAMIC_OPTIONS) -emit-import-library setup-api \ -output-file $@ -setup-download.c: $(SRCDIR)setup-download.scm setup-api.c +setup-download.c: $(SRCDIR)setup-download.scm setup-api.c $(SRCDIR)mini-srfi-1.scm $(CHICKEN) $< $(CHICKEN_DYNAMIC_OPTIONS) -emit-import-library setup-download \ -output-file $@ diff --git a/scheduler.scm b/scheduler.scm index ff5d80d2..d20a08eb 100644 --- a/scheduler.scm +++ b/scheduler.scm @@ -31,7 +31,7 @@ (hide ready-queue-head ready-queue-tail ##sys#timeout-list ##sys#update-thread-state-buffer ##sys#restore-thread-state-buffer remove-from-ready-queue ##sys#unblock-threads-for-i/o ##sys#force-primordial - fdset-set fdset-test create-fdset stderr + fdset-set fdset-test create-fdset stderr delq ##sys#clear-i/o-state-for-thread! ##sys#abandon-mutexes) (not inline ##sys#interrupt-hook) (unsafe) @@ -148,6 +148,13 @@ EOF (syntax-rules () ((_ msg) (##core#inline "C_halt" msg)))) +(define (delq x lst) + (let loop ([lst lst]) + (cond ((null? lst) lst) + ((eq? x (##sys#slot lst 0)) (##sys#slot lst 1)) + (else (cons (##sys#slot lst 0) (loop (##sys#slot lst 1)))) ) ) ) + + (define (##sys#schedule) (define (switch thread) (dbg "switching to " thread) @@ -334,9 +341,9 @@ EOF (let ((blocked (##sys#slot t 11))) (cond ((##sys#structure? blocked 'condition-variable) - (##sys#setslot blocked 2 (##sys#delq t (##sys#slot blocked 2)))) + (##sys#setslot blocked 2 (delq t (##sys#slot blocked 2)))) ((##sys#structure? blocked 'thread) - (##sys#setslot blocked 12 (##sys#delq t (##sys#slot blocked 12))))) ) + (##sys#setslot blocked 12 (delq t (##sys#slot blocked 12))))) ) (##sys#remove-from-timeout-list t) (##sys#clear-i/o-state-for-thread! t) (##sys#setslot t 3 s) @@ -503,7 +510,7 @@ EOF (let* ((a (car lst)) (fd2 (car a)) ) (if (eq? fd fd2) - (let ((ts (##sys#delq t (cdr a)))) ; remove from fd-list entry + (let ((ts (delq t (cdr a)))) ; remove from fd-list entry (cond ((null? ts) (cdr lst)) (else (##sys#setslot a 1 ts) ; fd-list entry is list with t removed diff --git a/setup-api.scm b/setup-api.scm index 566c1350..b9b5a63d 100644 --- a/setup-api.scm +++ b/setup-api.scm @@ -69,6 +69,8 @@ irregex utils posix ports extras data-structures files) +(include "mini-srfi-1.scm") + ;;; Constants, variables and parameters (define-constant setup-file-extension "setup-info") diff --git a/setup-download.scm b/setup-download.scm index 956d163d..163a22bd 100644 --- a/setup-download.scm +++ b/setup-download.scm @@ -40,6 +40,8 @@ (import extras irregex posix utils data-structures tcp files setup-api) + (include "mini-srfi-1.scm") + (define-constant +default-tcp-connect-timeout+ 30000) ; 30 seconds (define-constant +default-tcp-read/write-timeout+ 30000) ; 30 seconds diff --git a/support.scm b/support.scm index 13b15e0a..678575b5 100644 --- a/support.scm +++ b/support.scm @@ -678,8 +678,8 @@ body) ) body) (make-node 'let (list (car vars)) - (list (car vals)) - (loop (cdr vars) (cdr vals)))))))))) + (list (car vals) + (loop (cdr vars) (cdr vals))))))))))) ;; Copy along with the above (define (copy-node-tree-and-rename node vars aliases db cfk) @@ -820,20 +820,20 @@ (else (eq? v x)) ) ) (define (match1 x p) - (cond ((not-pair? p) (resolve p x)) - ((not-pair? x) #f) + (cond ((not (pair? p)) (resolve p x)) + ((not (pair? x)) #f) ((match1 (car x) (car p)) (match1 (cdr x) (cdr p))) (else #f) ) ) (define (matchn n p) - (if (not-pair? p) + (if (not (pair? p)) (resolve p n) (and (eq? (node-class n) (first p)) (match1 (node-parameters n) (second p)) (let loop ((ns (node-subexpressions n)) (ps (cddr p)) ) (cond ((null? ps) (null? ns)) - ((not-pair? ps) (resolve ps ns)) + ((not (pair? ps)) (resolve ps ns)) ((null? ns) #f) (else (and (matchn (car ns) (car ps)) (loop (cdr ns) (cdr ps)) ) ) ) ) ) ) )Trap