static-patch! for pair and vector fields
authorAndy Wingo <wingo@pobox.com>
Thu, 31 Oct 2013 18:21:31 +0000 (19:21 +0100)
committerAndy Wingo <wingo@pobox.com>
Thu, 31 Oct 2013 18:21:31 +0000 (19:21 +0100)
* module/system/vm/assembler.scm (intern-constant): Use static-patch!
  for fields.

module/system/vm/assembler.scm

index bee6257..811841e 100644 (file)
@@ -543,10 +543,10 @@ table, its existing label is used directly."
   (define (field dst n obj)
     (let ((src (recur obj)))
       (if src
-          (list (if (statically-allocatable? obj)
-                    `(make-non-immediate 1 ,src)
-                    `(static-ref 1 ,src))
-                `(static-set! 1 ,dst ,n))
+          (if (statically-allocatable? obj)
+              `((static-patch! ,dst ,n ,src))
+              `((static-ref 1 ,src)
+                (static-set! 1 ,dst ,n)))
           '())))
   (define (intern obj label)
     (cond