This is an automated email from the git hooks/post-receive script.

wingo pushed a commit to branch wip-tailify
in repository guile.

The following commit(s) were added to refs/heads/wip-tailify by this push:
     new 34c346737 Make 'ptr types more precise, pre-lowering
34c346737 is described below

commit 34c3467379c616b311bbcf7976bdd62c7e26b84c
Author: Andy Wingo <wi...@pobox.com>
AuthorDate: Tue Jul 4 15:21:33 2023 +0200

    Make 'ptr types more precise, pre-lowering
    
    * module/language/cps/utils.scm (compute-var-representations): $code
    makes a 'code.  bv-contents makes a 'raw-bytevector.
    * module/language/cps/slot-allocation.scm:
    * module/language/cps/hoot/tailify.scm:
    * module/system/vm/assembler.scm: Adapt.
---
 module/language/cps/hoot/tailify.scm    | 6 +++---
 module/language/cps/slot-allocation.scm | 8 +++++---
 module/language/cps/utils.scm           | 8 +++++---
 module/system/vm/assembler.scm          | 2 +-
 4 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/module/language/cps/hoot/tailify.scm 
b/module/language/cps/hoot/tailify.scm
index 9d38df6f6..f45e66e2a 100644
--- a/module/language/cps/hoot/tailify.scm
+++ b/module/language/cps/hoot/tailify.scm
@@ -212,7 +212,7 @@ be rewritten to continue to the tail's ktail."
                               ($continue local-ktail src
                                 ($calli args ret))))
                 (build-term ($continue kcall src
-                              ($primcall 'restore '(ptr) ())))))
+                              ($primcall 'restore '(code) ())))))
              ((or ($ $call) ($ $callk) ($ $calli))
               ;; Otherwise the original term was a tail call.
               (with-cps cps
@@ -238,7 +238,7 @@ be rewritten to continue to the tail's ktail."
                     (letk kcont ($kargs ('cont) (cont)
                                   ($continue kexp src
                                     ($primcall 'save
-                                               (append reprs (list 'ptr))
+                                               (append reprs (list 'code))
                                                ,(append vars (list cont))))))
                     (build-term ($continue kcont src
                                   ($code (intmap-ref entries k))))))))
@@ -691,7 +691,7 @@ to tail-call the saved continuation."
                        ($continue k src ($calli args ret))))
          (setk label ($kargs names vars
                        ($continue kcall src
-                         ($primcall 'restore '(ptr) ()))))))
+                         ($primcall 'restore '(code) ()))))))
       (_ cps)))
   (intset-fold rewrite-return-to-pop-and-calli body cps))
 
diff --git a/module/language/cps/slot-allocation.scm 
b/module/language/cps/slot-allocation.scm
index 8c0c8d44b..269c98126 100644
--- a/module/language/cps/slot-allocation.scm
+++ b/module/language/cps/slot-allocation.scm
@@ -54,7 +54,7 @@
   (slots allocation-slots)
 
   ;; A map of VAR to representation.  A representation is 'scm, 'f64,
-  ;; 'u64, or 's64.
+  ;; 'u64, 's64, 'ptr, 'raw-bytevector, or 'code.
   ;;
   (representations allocation-representations)
 
@@ -706,8 +706,10 @@ are comparable with eqv?.  A tmp slot may be used."
            (#f slot-map)
            (slot
             (let ((desc (match (intmap-ref representations var)
-                          ((or 'u64 'f64 's64 'ptr) slot-desc-live-raw)
-                          ('scm slot-desc-live-scm))))
+                          ((or 'u64 'f64 's64 'ptr 'raw-bytevector 'code)
+                           slot-desc-live-raw)
+                          ('scm
+                           slot-desc-live-scm))))
               (logior slot-map (ash desc (* 2 slot)))))))
        live-vars 0))
 
diff --git a/module/language/cps/utils.scm b/module/language/cps/utils.scm
index c7b0dc5ac..2c248cd5f 100644
--- a/module/language/cps/utils.scm
+++ b/module/language/cps/utils.scm
@@ -26,6 +26,7 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
+  #:use-module (system base target)
   #:use-module (language cps)
   #:use-module (language cps intset)
   #:use-module (language cps intmap)
@@ -418,14 +419,15 @@ by a label, respectively."
                                'srsh 'srsh/immediate
                                's8-ref 's16-ref 's32-ref 's64-ref))
               (intmap-add representations var 's64))
-             (($ $primcall (or 'bv-contents
-                               'pointer-ref/immediate
+             (($ $primcall (or 'pointer-ref/immediate
                                'tail-pointer-ref/immediate))
               (intmap-add representations var 'ptr))
+             (($ $primcall 'bv-contents)
+              (intmap-add representations var 'raw-bytevector))
              (($ $primcall 'restore (repr) ())
               (intmap-add representations var repr))
              (($ $code)
-              (intmap-add representations var 'ptr))
+              (intmap-add representations var 'code))
              (_
               (intmap-add representations var 'scm))))
           (vars
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm
index a655e0a55..750d016ce 100644
--- a/module/system/vm/assembler.scm
+++ b/module/system/vm/assembler.scm
@@ -2588,7 +2588,7 @@ procedure with label @var{rw-init}.  @var{rw-init} may be 
false.  If
                         ((f64) 1)
                         ((u64) 2)
                         ((s64) 3)
-                        ((ptr) 4)
+                        ((ptr code) 4)
                         (else (error "what!" representation)))))
              (put-uleb128 names-port (logior (ash slot 3) tag)))
            (lp definitions))))))

Reply via email to