double->single float conversion isn't a no-op on x87 anymore
[sbcl.git] / src / compiler / vop.lisp
index 99d7111..5e3504a 100644 (file)
   ;; the assembler label that points to the beginning of the code for
   ;; this block, or NIL when we haven't assigned a label yet
   (%label nil)
+  ;; the assembler label that points to the trampoline for this block,
+  ;; or NIL if unassigned yet. Only meaningful for local call targets.
+  (%trampoline-label nil)
+  ;; T if the preceding block assumes it can drop thru to %label
+  (dropped-thru-to nil)
   ;; list of LOCATION-INFO structures describing all the interesting
   ;; (to the debugger) locations in this block
   (locations nil :type list))
   ;; the number of trailing arguments to VOP or %PRIMITIVE that we
   ;; bundle into a list and pass into the emit function. This provides
   ;; a way to pass uninterpreted stuff directly to the code generator.
-  (info-arg-count 0 :type index)
-  ;; a function that emits the VOPs for this template. Arguments:
-  ;;  1] Node for source context.
-  ;;  2] IR2-BLOCK that we place the VOP in.
-  ;;  3] This structure.
-  ;;  4] Head of argument TN-REF list.
-  ;;  5] Head of result TN-REF list.
-  ;;  6] If INFO-ARG-COUNT is non-zero, then a list of the magic
-  ;;     arguments.
-  ;;
-  ;; Two values are returned: the first and last VOP emitted. This vop
-  ;; sequence must be linked into the VOP Next/Prev chain for the
-  ;; block. At least one VOP is always emitted.
-  (emit-function (missing-arg) :type function))
+  (info-arg-count 0 :type index))
 (defprinter (template)
   name
   arg-types
   ;; counts as one, and all the more args/results together count as 1.
   (num-args 0 :type index)
   (num-results 0 :type index)
-  ;; a vector of the temporaries the vop needs. See EMIT-GENERIC-VOP
+  ;; a vector of the temporaries the vop needs. See EMIT-VOP
   ;; in vmdef for information on how the temps are encoded.
   (temps nil :type (or null (specializable-vector (unsigned-byte 16))))
   ;; the order all the refs for this vop should be put in. Each
   ;;   :SAVE-ONCE
   ;;    A TN used for saving a :NORMAL TN across function calls. The
   ;;    lifetime information slots are unitialized: get the original
-  ;;    TN our of the SAVE-TN slot and use it for conflicts. SAVE-ONCE
+  ;;    TN out of the SAVE-TN slot and use it for conflicts. SAVE-ONCE
   ;;    is like :SAVE, except that it is only save once at the single
   ;;    writer of the original TN.
   ;;
 
 ;;; The GLOBAL-CONFLICTS structure represents the conflicts for global
 ;;; TNs. Each global TN has a list of these structures, one for each
-;;; block that it is live in. In addition to repsenting the result of
+;;; block that it is live in. In addition to representing the result of
 ;;; lifetime analysis, the global conflicts structure is used during
 ;;; lifetime analysis to represent the set of TNs live at the start of
 ;;; the IR2 block.