Differentiate between object slot initialisation and mutation
authorPaul Khuong <pvk@pvk.ca>
Sun, 3 Jul 2011 01:05:31 +0000 (21:05 -0400)
committerPaul Khuong <pvk@pvk.ca>
Sun, 3 Jul 2011 01:05:31 +0000 (21:05 -0400)
 INIT-SLOT and SET-SLOT VOPs do the same thing on every platform for
 now.

package-data-list.lisp-expr
src/compiler/alpha/cell.lisp
src/compiler/generic/vm-ir2tran.lisp
src/compiler/hppa/cell.lisp
src/compiler/mips/cell.lisp
src/compiler/ppc/cell.lisp
src/compiler/sparc/cell.lisp
src/compiler/x86-64/cell.lisp
src/compiler/x86/cell.lisp

index 348bd69..87b6362 100644 (file)
@@ -357,7 +357,7 @@ of SBCL which maintained the CMU-CL-style split into two packages.)"
                "MAKE-FUNCALLABLE-INSTANCE-TRAMP"
                "RETURN-SINGLE"
                "NOTE-NEXT-INSTRUCTION"
-               "SET-SLOT"
+               "SET-SLOT" "INIT-SLOT"
                "LOCATION-NUMBER"
                "*COMPONENT-BEING-COMPILED*"
                "BLOCK-NUMBER"
index 26dae0e..3cd8558 100644 (file)
@@ -35,6 +35,8 @@
         (storew value object offset lowtag))
     #!-gengc
     (storew value object offset lowtag)))
+
+(define-vop (init-slot set-slot))
 \f
 ;;;; symbol hacking VOPs
 
index a089050..4254f3d 100644 (file)
@@ -69,7 +69,7 @@
              (macrolet ((make-case ()
                           `(ecase raw-type
                              ((t)
-                              (vop set-slot node block object arg-tn
+                              (vop init-slot node block object arg-tn
                                    name (+ sb!vm:instance-slots-offset slot) lowtag))
                              ,@(mapcar (lambda (rsd)
                                          `(,(sb!kernel::raw-slot-data-raw-type rsd)
                                        nil))))
                (make-case))))
           (:dd
-           (vop set-slot node block object
+           (vop init-slot node block object
                 (emit-constant (sb!kernel::dd-layout-or-lose slot))
                 name sb!vm:instance-slots-offset lowtag))
           (otherwise
-           (vop set-slot node block object
+           (vop init-slot node block object
                 (ecase kind
                   (:arg
                    (aver args)
index d6ba897..c5e21b2 100644 (file)
@@ -30,6 +30,8 @@
   (:results)
   (:generator 1
     (storew value object offset lowtag)))
+
+(define-vop (init-slot set-slot))
 \f
 ;;;; Symbol hacking VOPs:
 
index 24edd3d..04689c3 100644 (file)
@@ -31,6 +31,7 @@
   (:generator 1
     (storew value object offset lowtag)))
 
+(define-vop (init-slot set-slot))
 \f
 ;;;; Symbol hacking VOPs:
 
index c461fe4..2da18ed 100644 (file)
@@ -31,6 +31,8 @@
   (:generator 1
     (storew value object offset lowtag)))
 
+(define-vop (init-slot set-slot))
+
 #!+compare-and-swap-vops
 (define-vop (compare-and-swap-slot)
   (:args (object :scs (descriptor-reg))
index e773231..c9613aa 100644 (file)
@@ -29,6 +29,8 @@
   (:results)
   (:generator 1
     (storew value object offset lowtag)))
+
+(define-vop (init-slot set-slot))
 \f
 ;;;; Symbol hacking VOPs:
 
index 2c22d08..0857ff6 100644 (file)
@@ -47,6 +47,8 @@
         ;; Else, value not immediate.
         (storew value object offset lowtag))))
 
+(define-vop (init-slot set-slot))
+
 (define-vop (compare-and-swap-slot)
   (:args (object :scs (descriptor-reg) :to :eval)
          (old :scs (descriptor-reg any-reg) :target rax)
index bb82a39..5be6b34 100644 (file)
@@ -30,6 +30,8 @@
   (:generator 1
      (storew (encode-value-if-immediate value) object offset lowtag)))
 
+(define-vop (init-slot set-slot))
+
 (define-vop (compare-and-swap-slot)
   (:args (object :scs (descriptor-reg) :to :eval)
          (old :scs (descriptor-reg any-reg) :target eax)