X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fvop.lisp;h=49307e2a5a4e0cd55d7eb5e766aeca4d1439f734;hb=bc7cd341567dd3b2978c2accb6063356280fb80e;hp=9f7ace36579da8936a34ecc1df2f74779dd3b3fa;hpb=6c7a026d79b5f971ac129846efe2d394239a0fee;p=sbcl.git diff --git a/src/compiler/vop.lisp b/src/compiler/vop.lisp index 9f7ace3..49307e2 100644 --- a/src/compiler/vop.lisp +++ b/src/compiler/vop.lisp @@ -167,6 +167,11 @@ ;; 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)) @@ -324,8 +329,8 @@ ;; a function type specifier representing the arguments and results ;; of this function (type 'function :type (or list (member function))) - ;; xref information for the XEP - (xref nil :type (or null simple-vector))) + ;; docstring and/or xref information for the XEP + (info nil :type (or null simple-vector string (cons string simple-vector)))) ;;; An IR2-PHYSENV is used to annotate non-LET LAMBDAs with their ;;; passing locations. It is stored in the PHYSENV-INFO. @@ -559,8 +564,12 @@ ;; conditional that yields its result as a control transfer. The ;; emit function takes two info arguments: the target label and a ;; boolean flag indicating whether to negate the sense of the test. + ;; + ;; If RESULT-TYPES is a cons whose car is :CONDITIONAL, then this is + ;; a flag-setting VOP. The rest is a list of condition descriptors to + ;; be interpreted by the BRANCH-IF VOP (see $ARCH/pred.lisp). (arg-types nil :type list) - (result-types nil :type (or list (member :conditional))) + (result-types nil :type (or list (member :conditional) (cons (eql :conditional)))) ;; the primitive type restriction applied to each extra argument or ;; result following the fixed operands. If NIL, no extra ;; args/results are allowed. Otherwise, either * or a (:OR ...) list @@ -885,7 +894,7 @@ ;; :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. ;; @@ -980,7 +989,7 @@ ;;; 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.