[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] GNU Guile branch, wip-rtl-halloween, updated. v2.1.0-332
From: |
Andy Wingo |
Subject: |
[Guile-commits] GNU Guile branch, wip-rtl-halloween, updated. v2.1.0-332-gda60ba8 |
Date: |
Tue, 05 Nov 2013 18:22:33 +0000 |
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 <address@hidden>
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 <address@hidden>
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 <address@hidden>
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Guile-commits] GNU Guile branch, wip-rtl-halloween, updated. v2.1.0-332-gda60ba8,
Andy Wingo <=