This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU Guile".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=da60ba8062406cc017ecdd14f0a0bfc65245c449 The branch, wip-rtl-halloween has been updated via da60ba8062406cc017ecdd14f0a0bfc65245c449 (commit) via 0d0465135d3cc5d7882fefa6bc4e68f132f594ed (commit) via 3abe29e677f2fc40452492c3a20136efc4541c94 (commit) from 8f4fbba55208ebca298e9b8e9da2045df3e8a88d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit da60ba8062406cc017ecdd14f0a0bfc65245c449 Author: Andy Wingo <[email protected]> Date: Tue Nov 5 19:22:26 2013 +0100 fix make-long-immediate, make-long-long-immediate for dst >= 256 * libguile/vm-engine.c (make-long-immediate, make-long-long-immediate): Fix declaration of "dst" variable. commit 0d0465135d3cc5d7882fefa6bc4e68f132f594ed Author: Andy Wingo <[email protected]> Date: Tue Nov 5 18:16:13 2013 +0100 Re-add the list hack to compile-cps * module/language/tree-il/compile-cps.scm (convert): Re-add the list hack. Ideally these go into some tree-il pass. commit 3abe29e677f2fc40452492c3a20136efc4541c94 Author: Andy Wingo <[email protected]> Date: Tue Nov 5 18:06:08 2013 +0100 squish to primitive reification * test-suite/tests/tree-il.test: Update for primitive-ref reification fix. ----------------------------------------------------------------------- Summary of changes: libguile/vm-engine.c | 4 ++-- module/language/tree-il/compile-cps.scm | 25 +++++++++++++++++++++++++ test-suite/tests/tree-il.test | 13 +++++++++---- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index d0f63fb..a403524 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -2020,7 +2020,7 @@ RTL_VM_NAME (SCM vm, SCM program, SCM *argv, size_t nargs_) */ VM_DEFINE_OP (50, make_long_immediate, "make-long-immediate", OP2 (U8_U24, I32)) { - scm_t_uint8 dst; + scm_t_uint32 dst; scm_t_bits val; SCM_UNPACK_RTL_24 (op, dst); @@ -2035,7 +2035,7 @@ RTL_VM_NAME (SCM vm, SCM program, SCM *argv, size_t nargs_) */ VM_DEFINE_OP (51, make_long_long_immediate, "make-long-long-immediate", OP3 (U8_U24, A32, B32) | OP_DST) { - scm_t_uint8 dst; + scm_t_uint32 dst; scm_t_bits val; SCM_UNPACK_RTL_24 (op, dst); diff --git a/module/language/tree-il/compile-cps.scm b/module/language/tree-il/compile-cps.scm index 67f1ec1..493e1e7 100644 --- a/module/language/tree-il/compile-cps.scm +++ b/module/language/tree-il/compile-cps.scm @@ -376,6 +376,31 @@ (make-lexical-ref src 'v v) (reverse args) (reverse (iota len)))))) k subst)) + ((and (eq? name 'list) + (and-map (match-lambda + ((or ($ <const>) + ($ <void>) + ($ <lambda>) + ($ <lexical-ref>)) #t) + (_ #f)) + args)) + ;; The same situation occurs with "list". + (let lp ((args args) (k k)) + (match args + (() + (build-cps-term + ($continue k ($const '())))) + ((arg . args) + (let-gensyms (ktail tail) + (build-cps-term + ($letk ((ktail src + ($kargs ('tail) (tail) + ,(convert-arg arg + (lambda (head) + (build-cps-term + ($continue k + ($primcall 'cons (head tail))))))))) + ,(lp args ktail)))))))) (else (convert-args args (lambda (args) diff --git a/test-suite/tests/tree-il.test b/test-suite/tests/tree-il.test index edcbdc9..762fb59 100644 --- a/test-suite/tests/tree-il.test +++ b/test-suite/tests/tree-il.test @@ -208,7 +208,8 @@ (with-test-prefix "primitive-ref" (assert-tree-il->glil (primitive +) - (program () (std-prelude 0 0 #f) (label _) (toplevel ref +) (call return 1))) + (program () (std-prelude 0 0 #f) + (label _) (module private ref (guile) +) (call return 1))) (assert-tree-il->glil (begin (primitive +) (const #f)) @@ -216,7 +217,8 @@ (assert-tree-il->glil (primcall null? (primitive +)) - (program () (std-prelude 0 0 #f) (label _) (toplevel ref +) (call null? 1) + (program () (std-prelude 0 0 #f) (label _) + (module private ref (guile) +) (call null? 1) (call return 1)))) (with-test-prefix "lexical refs" @@ -658,7 +660,8 @@ (assert-tree-il->glil (begin (primcall apply (toplevel foo) (toplevel bar)) (void)) (program () (std-prelude 0 0 #f) (label _) - (call new-frame 0) (toplevel ref apply) (toplevel ref foo) (toplevel ref bar) (mv-call 2 ,l1) + (call new-frame 0) (module private ref (guile) apply) + (toplevel ref foo) (toplevel ref bar) (mv-call 2 ,l1) (call drop 1) (branch br ,l2) (label ,l3) (mv-bind 0 #f) (label ,l4) (void) (call return 1)) @@ -677,7 +680,9 @@ (assert-tree-il->glil (begin (primcall call-with-current-continuation (toplevel foo)) (void)) (program () (std-prelude 0 0 #f) (label _) - (call new-frame 0) (toplevel ref call-with-current-continuation) (toplevel ref foo) (mv-call 1 ,l1) + (call new-frame 0) + (module private ref (guile) call-with-current-continuation) + (toplevel ref foo) (mv-call 1 ,l1) (call drop 1) (branch br ,l2) (label ,l3) (mv-bind 0 #f) (label ,l4) (void) (call return 1)) hooks/post-receive -- GNU Guile
