0.pre7.141:
[sbcl.git] / src / compiler / ir2tran.lisp
index 2fd642e..2a37493 100644 (file)
 
 ;;; Allocate an indirect value cell. Maybe do some clever stack
 ;;; allocation someday.
-(defevent make-value-cell "Allocate heap value cell for lexical var.")
+;;;
+;;; FIXME: DO-MAKE-VALUE-CELL is a bad name, since it doesn't make
+;;; clear what's the distinction between it and the MAKE-VALUE-CELL
+;;; VOP, and since the DO- further connotes iteration, which has
+;;; nothing to do with this. Clearer, more systematic names, anyone?
+(defevent make-value-cell-event "Allocate heap value cell for lexical var.")
 (defun do-make-value-cell (node block value res)
-  (event make-value-cell node)
+  (event make-value-cell-event node)
   (vop make-value-cell node block value res))
 \f
 ;;;; leaf reference
   (declare (type unsigned-byte n))
   (collect ((res))
     (dotimes (i n)
-      (res (standard-argument-location i)))
+      (res (standard-arg-location i)))
     (res)))
 
 ;;; Return a list of TNs wired to the standard value passing
 ;;; arguments are returned in the second value as a list rather than
 ;;; being accessed as a normal argument. NODE and BLOCK provide the
 ;;; context for emitting any necessary type-checking code.
-(defun reference-arguments (node block args template)
+(defun reference-args (node block args template)
   (declare (type node node) (type ir2-block block) (list args)
           (type template template))
   (collect ((info-args))
         (cont (node-cont call))
         (rtypes (template-result-types template)))
     (multiple-value-bind (args info-args)
-       (reference-arguments call block (combination-args call) template)
+       (reference-args call block (combination-args call) template)
       (aver (not (template-more-results-type template)))
       (if (eq rtypes :conditional)
          (ir2-convert-conditional call block template args info-args
         (results (make-template-result-tns call cont template rtypes))
         (r-refs (reference-tn-list results t)))
     (multiple-value-bind (args info-args)
-       (reference-arguments call block (cddr (combination-args call))
-                            template)
+       (reference-args call block (cddr (combination-args call)) template)
       (aver (not (template-more-results-type template)))
       (aver (not (eq rtypes :conditional)))
       (aver (null info-args))
 ;;;   -- Known to be a function, no check needed: return the
 ;;;      continuation loc.
 ;;;   -- Not known what it is.
-(defun function-continuation-tn (node block cont)
+(defun fun-continuation-tn (node block cont)
   (declare (type continuation cont))
   (let ((2cont (continuation-info cont)))
     (if (eq (ir2-continuation-kind 2cont) :delayed)
        (last nil)
        (first nil))
     (dotimes (num (length args))
-      (let ((loc (standard-argument-location num)))
+      (let ((loc (standard-arg-location num)))
        (emit-move node block (continuation-tn node block (elt args num)) loc)
        (let ((ref (reference-tn loc nil)))
          (if last
         (return-pc (ir2-physenv-return-pc env)))
 
     (multiple-value-bind (fun-tn named)
-       (function-continuation-tn node block (basic-combination-fun node))
+       (fun-continuation-tn node block (basic-combination-fun node))
       (if named
          (vop* tail-call-named node block
                (fun-tn old-fp return-pc pass-refs)
       (let ((last nil)
            (first nil))
        (dotimes (num nargs)
-         (locs (standard-argument-location num))
+         (locs (standard-arg-location num))
          (let ((ref (reference-tn (continuation-tn node block (elt args num))
                                   nil)))
            (if last
           (loc-refs (reference-tn-list locs t))
           (nvals (length locs)))
       (multiple-value-bind (fun-tn named)
-         (function-continuation-tn node block (basic-combination-fun node))
+         (fun-continuation-tn node block (basic-combination-fun node))
        (if named
            (vop* call-named node block (fp fun-tn args) (loc-refs)
                  arg-locs nargs nvals)
           (locs (ir2-continuation-locs (continuation-info cont)))
           (loc-refs (reference-tn-list locs t)))
       (multiple-value-bind (fun-tn named)
-         (function-continuation-tn node block (basic-combination-fun node))
+         (fun-continuation-tn node block (basic-combination-fun node))
        (if named
            (vop* multiple-call-named node block (fp fun-tn args) (loc-refs)
                  arg-locs nargs)
       (let ((vars (lambda-vars fun))
            (n 0))
        (when (leaf-refs (first vars))
-         (emit-move node block (make-argument-count-location)
+         (emit-move node block (make-arg-count-location)
                     (leaf-info (first vars))))
        (dolist (arg (rest vars))
          (when (leaf-refs arg)
-           (let ((pass (standard-argument-location n))
+           (let ((pass (standard-arg-location n))
                  (home (leaf-info arg)))
              (if (lambda-var-indirect arg)
                  (do-make-value-cell node block pass home)
         (cont (node-cont node))
         (2cont (continuation-info cont)))
     (multiple-value-bind (fun named)
-       (function-continuation-tn node block (basic-combination-fun node))
+       (fun-continuation-tn node block (basic-combination-fun node))
       (aver (and (not named)
                 (eq (ir2-continuation-kind start-cont) :unknown)))
       (cond
         (2cont (continuation-info cont))
         (2info (nlx-info-info info))
         (top-loc (ir2-nlx-info-save-sp 2info))
-        (start-loc (make-nlx-entry-argument-start-location))
-        (count-loc (make-argument-count-location))
+        (start-loc (make-nlx-entry-arg-start-location))
+        (count-loc (make-arg-count-location))
         (target (ir2-nlx-info-target 2info)))
 
     (ecase (cleanup-kind (nlx-info-cleanup info))
                   (length locs))
             (move-continuation-result node block locs cont))))
       (:unwind-protect
-       (let ((block-loc (standard-argument-location 0)))
+       (let ((block-loc (standard-arg-location 0)))
         (vop uwp-entry node block target block-loc start-loc count-loc)
         (move-continuation-result
          node block
 \f
 ;;;; n-argument functions
 
-(macrolet ((def-frob (name)
+(macrolet ((def (name)
             `(defoptimizer (,name ir2-convert) ((&rest args) node block)
                (let* ((refs (move-tail-full-call-args node block))
                       (cont (node-cont node))
                  (vop* ,name node block (refs) ((first res) nil)
                        (length args))
                  (move-continuation-result node block res cont)))))
-  (def-frob list)
-  (def-frob list*))
-\f
-;;;; structure accessors
-;;;;
-;;;; These guys have to bizarrely determine the slot offset by looking
-;;;; at the called function.
-
-(defoptimizer (%slot-accessor ir2-convert) ((str) node block)
-  (let* ((cont (node-cont node))
-        (res (continuation-result-tns cont
-                                      (list *backend-t-primitive-type*))))
-    (vop instance-ref node block
-        (continuation-tn node block str)
-        (dsd-index
-         (slot-accessor-slot
-          (ref-leaf
-           (continuation-use
-            (combination-fun node)))))
-        (first res))
-    (move-continuation-result node block res cont)))
-
-(defoptimizer (%slot-setter ir2-convert) ((value str) node block)
-  (let ((val (continuation-tn node block value)))
-    (vop instance-set node block
-        (continuation-tn node block str)
-        val
-        (dsd-index
-         (slot-accessor-slot
-          (ref-leaf
-           (continuation-use
-            (combination-fun node))))))
-
-    (move-continuation-result node block (list val) (node-cont node))))
+  (def list)
+  (def list*))
 \f
 ;;; Convert the code in a component into VOPs.
 (defun ir2-convert (component)
                   (unless (or (node-tail-p last)
                               (info :function :info name)
                               (policy last (zerop safety)))
-                    (vop nil-function-returned-error last 2block
+                    (vop nil-fun-returned-error last 2block
                          (if name
                              (emit-constant name)
                              (multiple-value-bind (tn named)
-                                 (function-continuation-tn last 2block fun)
+                                 (fun-continuation-tn last 2block fun)
                                (aver (not named))
                                tn)))))))
              ((not (eq (ir2-block-next 2block) (block-info target)))
             (:full
              (ir2-convert-full-call node 2block))
             (t
-             (let ((fun (function-info-ir2-convert kind)))
+             (let ((fun (fun-info-ir2-convert kind)))
                (cond (fun
                       (funcall fun node 2block))
                      ((eq (basic-combination-info node) :full)