guile-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]