~ chicken-core (chicken-5) ac9833e69238e3c8637b63865ccd042e39936201
commit ac9833e69238e3c8637b63865ccd042e39936201 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Wed Mar 9 04:25:40 2011 -0500 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Wed Mar 9 04:25:40 2011 -0500 rewrites for alist-cons and xcons diff --git a/c-platform.scm b/c-platform.scm index 1a3e9273..a65c386a 100644 --- a/c-platform.scm +++ b/c-platform.scm @@ -127,7 +127,7 @@ list-ref abs char-ready? peek-char list->string string->list) ) (define default-extended-bindings - '(bitwise-and + '(bitwise-and alist-cons xcons bitwise-ior bitwise-xor bitwise-not add1 sub1 fx+ fx- fx* fx/ fx+? fx-? fx*? fx/? fxmod o fx= fx> fx< fx>= fx<= fixnum? fxneg fxmax fxmin identity fp+ fp- fp* fp/ fpmin fpmax fpneg @@ -1160,3 +1160,31 @@ (rewrite 'get-keyword 7 2 "C_i_get_keyword" #f #t) (rewrite '##sys#get-keyword 7 2 "C_i_get_keyword" #f #t) + +(rewrite + 'alist-cons 8 + (lambda (db classargs cont callargs) + (and (= 3 (length callargs)) + (make-node + '##core#call '(#t) + (list cont + (make-node + '##core#inline_allocate + '("C_a_i_cons" 3) + (list (make-node + '##core#inline_allocate + '("C_a_i_cons" 3) + (list (first callargs) (second callargs))) + (third callargs)))))))) + +(rewrite + 'xcons 8 + (lambda (db classargs cont callargs) + (and (= 2 (length callargs)) + (make-node + '##core#call '(#t) + (list cont + (make-node + '##core#inline_allocate + '("C_a_i_cons" 3) + (reverse callargs))))))) diff --git a/manual/faq b/manual/faq index 5053951b..e747ecd2 100644 --- a/manual/faq +++ b/manual/faq @@ -416,6 +416,7 @@ and compiler settings: The following extended bindings are handled specially: +{{alist-cons}} {{bitwise-and}} {{bitwise-ior}} {{bitwise-xor}} {{bitwise-not}} {{bit-set?}} {{add1}} {{sub1}} {{fx+}} {{fx-}} {{fx*}} {{fx/}} @@ -472,6 +473,7 @@ The following extended bindings are handled specially: {{error}} {{call/cc}} {{any?}} {{substring=?}} {{substring-ci=?}} {{substring-index}} {{substring-index-ci}} {{printf}} {{sprintf}} {{fprintf}} {{format}} {{o}} +{{xcons}} ==== What's the difference betweem "block" and "local" mode?Trap