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

commit a5f9d0da6a91d24264b6d94cc7ed681c2960298a
Author: Andy Wingo <wi...@pobox.com>
AuthorDate: Mon Jun 23 20:45:00 2025 +0200

    Vm creates values with scm_allocate_tagged
    
    * libguile/vm-engine.c (halt): Make values with scm_allocate_tagged.
---
 libguile/vm-engine.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index 572f4daac..cefa6b4bf 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -324,9 +324,12 @@ VM_NAME (scm_thread *thread)
           uint32_t n;
           SYNC_IP ();
           VM_ASSERT (nvals <= (UINTPTR_MAX >> 8), abort ());
-          ret = scm_words ((nvals << 8) | scm_tc7_values, nvals + 1);
+          struct scm_values *vals =
+            scm_allocate_tagged (thread, sizeof (*vals) + nvals * sizeof 
(SCM));
+          vals->tag_and_count = (nvals << 8) | scm_tc7_values;
           for (n = 0; n < nvals; n++)
-            SCM_SET_CELL_OBJECT (ret, n+1, FP_REF (first_value + n));
+            vals->values[n] = FP_REF (first_value + n);
+          ret = scm_from_values (vals);
         }
 
       fp = VP->fp;

Reply via email to