MAP-IN is an internal symbol in the C package. No argument information available. It is currently declared inline; expansion is available. Function Documention: Map Function over the elements in a null-terminated List linked by the accessor function Next, returning a list of the results. On Wednesday, 6/5/91 05:52:01 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1util.lisp Created: Wednesday, 6/5/91 12:20:36 am EST Comment: $Header: ir1util.lisp,v 1.38 91/05/31 14:18:15 ram Exp $ DEFEVENT is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Defevent Name Description Define a new kind of event. Name is a symbol which names the event and Description is a string which describes the event. Level (default 0) is the level of significance associated with this event; it is used to determine whether to print a Note when the event happens. VOP is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: VOP Name Node Block Arg* Info* Result* Emit the VOP (or other template) Name at the end of the IR2-Block Block, using Node for the source context. The interpretation of the remaining arguments depends on the number of operands of various kinds that are declared in the template definition. VOP cannot be used for templates that have more-args or more-results, since the number of arguments and results is indeterminate for these templates. Use VOP* instead. Args and Results are the TNs that are to be referenced by the template as arguments and results. If the template has codegen-info arguments, then the appropriate number of Info forms following the Arguments are used for codegen info. DO-NODES is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Do-Nodes (Node-Var Cont-Var Block {Key Value}*) {Declaration}* {Form}* Iterate over the nodes in Block, binding Node-Var to the each node and Cont-Var to the node's Cont. The only keyword option is Restart-P, which causes iteration to be restarted when a node is deleted out from under us (if not supplied, this is an error.) VOP-ATTRIBUTEP is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Automagically generated boolean attribute test function. See Def-Boolean-Attribute. Documentation on the SETF form: Automagically generated boolean attribute setter. See Def-Boolean-Attribute. DO-NODES-BACKWARDS is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Do-Nodes-Backwards (Node-Var Cont-Var Block) {Declaration}* {Form}* Like Do-Nodes, only iterates in reverse order. DO-LIVE-TNS is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: DO-LIVE-TNS (TN-Var Live Block [Result]) Form* Iterate over all the TNs live at some point, with the live set represented by a local conflicts bit-vector and the IR2-Block containing the location. EVENT-LEVEL is an internal symbol in the C package. No argument information available. Its declared argument types are: (SYMBOL) Its result type is: UNSIGNED-BYTE Function Documention: Return the non-negative integer which represents the level of significance of the event Name. This is used to determine whether to print a message when the event happens. This may be set with SETF. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ NTH-VOP is an internal symbol in the C package. No argument information available. Function Documention: Return the Nth VOP in the IR2-Block pointed to by Thing. On Wednesday, 6/5/91 09:49:41 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/debug.lisp Created: Tuesday, 3/19/91 07:04:16 pm EST Comment: $Header: debug.lisp,v 1.14 91/02/20 14:57:04 ram Exp $ PUSH-IN is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:52:01 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1util.lisp Created: Wednesday, 6/5/91 12:20:36 am EST Comment: $Header: ir1util.lisp,v 1.38 91/05/31 14:18:15 ram Exp $ Macro documentation: Push Item onto a list linked by the accessor function Next that is stored in Place. IR1-ATTRIBUTES is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:42:37 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/knownfun.lisp Created: Thursday, 4/25/91 12:50:59 am EST Comment: $Header: knownfun.lisp,v 1.10 91/04/25 00:49:08 ram Exp $ Macro documentation: Automagically generated boolean attribute creation function. See Def-Boolean-Attribute. LIST-CONFLICTS is an internal symbol in the C package. No argument information available. Function Documention: Return a list of a the TNs that conflict with TN. Sort of, kind of. For debugging use only. Probably doesn't work on :COMPONENT TNs. On Wednesday, 6/5/91 09:49:41 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/debug.lisp Created: Tuesday, 3/19/91 07:04:16 pm EST Comment: $Header: debug.lisp,v 1.14 91/02/20 14:57:04 ram Exp $ EMIT-TEMPLATE is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Emit-Template Node Block Template Args Results [Info] Call the emit function for Template, linking the result in at the end of Block. DEFINE-TYPE-PREDICATE is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 06:03:53 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/typetran.lisp Created: Thursday, 5/23/91 06:01:57 pm EST Comment: $Header: typetran.lisp,v 1.11 91/05/23 17:55:06 ram Exp $ Macro documentation: Define-Type-Predicate Name Type Establish an association between the type predicate Name and the corresponding Type. This causes the type predicate to be recognized for purposes of optimization. DO-PACKED-TNS is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 06:08:46 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/tn.lisp Created: Tuesday, 3/19/91 07:05:25 pm EST Comment: $Header: tn.lisp,v 1.12 91/02/20 14:59:52 ram Exp $ Macro documentation: Do-Packed-TNs (TN-Var Component [Result]) Declaration* Form* Iterate over all packed TNs allocated in Component. COMPILER-CONSTANTP is an internal symbol in the C package. No argument information available. Its declared argument types are: (T) Its result type is: (MEMBER T NIL) Function Documention: Like constantp, only uses the compilation environment rather than the current Lisp environment. On Wednesday, 6/5/91 05:52:01 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1util.lisp Created: Wednesday, 6/5/91 12:20:36 am EST Comment: $Header: ir1util.lisp,v 1.38 91/05/31 14:18:15 ram Exp $ DEFALLOCATORS is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:41:31 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/alloc.lisp Created: Tuesday, 3/19/91 07:03:58 pm EST Comment: $Header: alloc.lisp,v 1.8 91/02/20 14:56:27 ram Exp $ Macro documentation: defallocators {((name lambda-list [real-lambda-list]) thread-slot (deinit-form*) (reinit-form*))}* EVENT-COUNT is an internal symbol in the C package. No argument information available. Its declared argument types are: (SYMBOL) Its result type is: FIXNUM Function Documention: Return the number of times that Event has happened. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ ABORT-TRANSFORM is an internal symbol in the C package. No argument information available. Function Documention: This function is used to throw out of an IR1 transform and force a normal call to the function at run time. No further optimizations will be attempted. On Wednesday, 6/5/91 05:54:57 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1opt.lisp Created: Thursday, 5/16/91 04:05:20 pm EST Comment: $Header: ir1opt.lisp,v 1.27 91/05/16 00:25:56 ram Exp $ DO-ENVIRONMENT-IR2-BLOCKS is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: DO-ENVIRONMENT-IR2-BLOCKS (Block-Var Env [Result]) Form* Iterate over all the IR2 blocks in the environment Env, in emit order. DO-IR2-BLOCKS is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Do-IR2-Blocks (Block-Var Component [Result]) Form* Iterate over the IR2 blocks in component, in emission order. DO-BLOCKS is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Do-Blocks (Block-Var Component [Ends] [Result-Form]) {Declaration}* {Form}* Iterate over the blocks in a component, binding Block-Var to each block in turn. The value of Ends determines whether to iterate over dummy head and tail blocks: NIL -- Skip Head and Tail (the default) :Head -- Do head but skip tail :Tail -- Do tail but skip head :Both -- Do both head and tail If supplied, Result-Form is the value to return. LEXENV-FIND is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: LEXENV-FIND Name Slot {Key Value}* Look up Name in the lexical environment namespace designated by Slot, returning the , or if no entry. The :TEST keyword may be used to determine the name equality predicate. VECTOR-LENGTH is an internal symbol in the C package. No argument information available. Its declared argument types are: (T) Its result type is: (UNSIGNED-BYTE 29) Function Documention: Return the length of VECTOR. There is no reason to use this, 'cause (length (the vector foo)) is the same. On Wednesday, 6/5/91 12:33:02 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/code/kernel.lisp Created: Tuesday, 4/23/91 04:22:40 pm EST Comment: $Header: kernel.lisp,v 1.7 91/04/23 01:25:20 wlott Exp $ EVENT-ACTION is an internal symbol in the C package. No argument information available. Its declared argument types are: (SYMBOL) Its result type is: (OR NULL FUNCTION) Function Documention: Return the function that is called when Event happens. If this is null, there is no action. The function is passed the node to which the event happened, or NIL if there is no relevant node. This may be set with SETF. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ FIND-IN is an internal symbol in the C package. No argument information available. It is currently declared inline; expansion is available. Function Documention: Find Element in a null-terminated List linked by the accessor function Next. Key, Test and Test-Not are the same as for generic sequence functions. On Wednesday, 6/5/91 05:52:01 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1util.lisp Created: Wednesday, 6/5/91 12:20:36 am EST Comment: $Header: ir1util.lisp,v 1.38 91/05/31 14:18:15 ram Exp $ WITH-IR1-ENVIRONMENT is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: With-IR1-Environment Node Form* Bind the IR1 context variables so that IR1 conversion can be done after the main conversion pass has finished. EVENT is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Event Name Node Note that the event with the specified Name has happened. Node is evaluated to determine the node to which the event happened. IR1-ATTRIBUTEP is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:42:37 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/knownfun.lisp Created: Thursday, 4/25/91 12:50:59 am EST Comment: $Header: knownfun.lisp,v 1.10 91/04/25 00:49:08 ram Exp $ Macro documentation: Automagically generated boolean attribute test function. See Def-Boolean-Attribute. Documentation on the SETF form: Automagically generated boolean attribute setter. See Def-Boolean-Attribute. DO-USES is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Do-Uses (Node-Var Continuation [Result]) {Declaration}* {Form}* Iterate over the uses of Continuation, binding Node to each one succesively. VOP-ATTRIBUTES is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Automagically generated boolean attribute creation function. See Def-Boolean-Attribute. POSITION-IN is an internal symbol in the C package. No argument information available. It is currently declared inline; expansion is available. Function Documention: Return the position of Element (or NIL if absent) in a null-terminated List linked by the accessor function Next. Key, Test and Test-Not are the same as for generic sequence functions. On Wednesday, 6/5/91 05:52:01 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1util.lisp Created: Wednesday, 6/5/91 12:20:36 am EST Comment: $Header: ir1util.lisp,v 1.38 91/05/31 14:18:15 ram Exp $ EVENT-STATISTICS is an internal symbol in the C package. No argument information available. Its declared argument types are: (&OPTIONAL UNSIGNED-BYTE STREAM) Its result type is: T Function Documention: Print a listing of events and their counts, sorted by the count. Events that happened fewer than Min-Count times will not be printed. Stream is the stream to write to. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ DO-BLOCKS-BACKWARDS is an internal symbol in the C package. Its macroexpansion function is #. [GC threshold exceeded with 1,613,840 bytes in use. Commencing GC.] [GC completed with 489,240 bytes retained and 1,124,600 bytes freed.] [GC will next occur when at least 1,489,240 bytes are in use.] No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Do-Blocks-Backwards (Block-Var Component [Ends] [Result-Form]) {Declaration}* {Form}* Like Do-Blocks, only iterate over the blocks in reverse order. VOP* is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: VOP* Name Node Block (Arg* More-Args) (Result* More-Results) Info* Like VOP, but allows for emission of templates with arbitrary numbers of arguments, and for emission of templates using already-created TN-Ref lists. The Arguments and Results are TNs to be referenced as the first arguments and results to the template. More-Args and More-Results are heads of TN-Ref lists that are added onto the end of the TN-Refs for the explicitly supplied operand TNs. The TN-Refs for the more operands must have the TN and Write-P slots correctly initialized. As with VOP, the Info forms are evaluated and passed as codegen info arguments. DEFPRINTER is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Defprinter Name Slot-Desc* Define some kind of reasonable defstruct structure-print function. Name is the name of the structure. We define a function %PRINT-name which prints the slots in the structure in the way described by the Slot-Descs. Each Slot-Desc can be a slot name, indicating that the slot should simply be printed. A Slot-Desc may also be a list of a slot name and other stuff. The other stuff is composed of keywords followed by expressions. The expressions are evaluated with the variable which is the slot name bound to the value of the slot. These keywords are defined: :PRIN1 Print the value of the expression instead of the slot value. :PRINC Like :PRIN1, only princ the value :TEST Only print something if the test is true. If no printing thing is specified then the slot value is printed as PRIN1. The structure being printed is bound to Structure and the stream is bound to Stream. DELETEF-IN is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:52:01 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1util.lisp Created: Wednesday, 6/5/91 12:20:36 am EST Comment: $Header: ir1util.lisp,v 1.38 91/05/31 14:18:15 ram Exp $ Macro documentation: Deletef-In Next Place Item Delete Item from a null-terminated list linked by the accessor function Next that is stored in Place. Item must appear exactly once in the list. GIVE-UP is an internal symbol in the C package. No argument information available. Its declared argument types are: (&REST T) Its result type is: NIL Function Documention: This function is used to throw out of an IR1 transform, aborting this attempt to transform the call, but admitting the possibility that this or some other transform will later suceed. If arguments are supplied, they are format arguments for an efficiency note. On Wednesday, 6/5/91 05:54:57 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/ir1opt.lisp Created: Thursday, 5/16/91 04:05:20 pm EST Comment: $Header: ir1opt.lisp,v 1.27 91/05/16 00:25:56 ram Exp $ BLOCK-ATTRIBUTES is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:28:56 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/node.lisp Created: Saturday, 4/20/91 02:27:59 pm EST Comment: $Header: node.lisp,v 1.16 91/04/20 14:14:38 ram Exp $ Macro documentation: Automagically generated boolean attribute creation function. See Def-Boolean-Attribute. BLOCK-ATTRIBUTEP is an internal symbol in the C package. Its macroexpansion function is #. No argument information available. On Wednesday, 6/5/91 05:28:56 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/node.lisp Created: Saturday, 4/20/91 02:27:59 pm EST Comment: $Header: node.lisp,v 1.16 91/04/20 14:14:38 ram Exp $ Macro documentation: Automagically generated boolean attribute test function. See Def-Boolean-Attribute. Documentation on the SETF form: Automagically generated boolean attribute setter. See Def-Boolean-Attribute. DEFKNOWN is an external symbol in the C package. Its macroexpansion function is #. DEFKNOWN can be called with these arguments: (name arg-types result-type &optional (attributes '(any)) &rest keys) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Defknown Name Arg-Types Result-Type [Attributes] {Key Value}* Declare the function Name to be a known function. We construct a type specifier for the function by wrapping (FUNCTION ...) around the Arg-Types and Result-Type. Attributes is a an unevaluated list of the boolean attributes that the function has. These attributes are meaningful here: call May call functions that are passed as arguments. In order to determine what other effects are present, we must find the effects of all arguments that may be functions. unsafe May incorporate arguments in the result or somehow pass them upward. unwind May fail to return during correct execution. Errors are O.K. any The (default) worst case. Includes all the other bad things, plus any other possible bad thing. foldable May be constant-folded. The function has no side effects, but may be affected by side effects on the arguments. e.g. SVREF, MAPC. flushable May be eliminated if value is unused. The function has no side effects except possibly CONS. If a function is defined to signal errors, then it is not flushable even if it is movable or foldable. movable May be moved with impunity. Has no side effects except possibly CONS, and is affected only by its arguments. predicate A true predicate likely to be open-coded. This is a hint to IR1 conversion that it should ensure calls always appear as an IF test. Not usually specified to Defknown, since this is implementation dependent, and is usually automatically set by the Define-VOP :Conditional option. Name may also be a list of names, in which case the same information is given to all the names. The keywords specify the initial values for various optimizers that the function might have. PRIMITIVE-TYPE-VOP is an external symbol in the C package. Its macroexpansion function is #. PRIMITIVE-TYPE-VOP can be called with these arguments: (vop kinds &rest types) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Primitive-Type-VOP Vop (Kind*) Type* Annotate all the specified primitive Types with the named VOP under each of the specified kinds: :Check A one argument one result VOP that moves the argument to the result, checking that the value is of this type in the process. COMPONENT-HEADER-LENGTH is an external symbol in the C package. COMPONENT-HEADER-LENGTH can be called with these arguments: (&optional (component *compile-component*)) Its defined argument types are: (&OPTIONAL T) Its result type is: (MOD 4294967293) Function Documention: Returns the number of bytes used by the code object header. On Wednesday, 6/5/91 09:49:21 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/codegen.lisp Created: Wednesday, 3/20/91 03:10:36 am EST Comment: $Header: codegen.lisp,v 1.14 91/03/20 03:00:25 wlott Exp $ DEF-PRIMITIVE-TYPE is an external symbol in the C package. Its macroexpansion function is #. DEF-PRIMITIVE-TYPE can be called with these arguments: (name scs &key (type name)) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Def-Primitive-Type Name (SC*) {Key Value}* Define a primitive type Name. Each SC specifies a Storage Class that values of this type may be allocated in. The following keyword options are defined: :Type The type descriptor for the Lisp type that is equivalent to this type (defaults to Name.) DEFINE-STORAGE-CLASS is an external symbol in the C package. Its macroexpansion function is #. DEFINE-STORAGE-CLASS can be called with these arguments: (name number sb-name &key (element-size '1) (alignment '1) locations reserve-locations save-p alternate-scs constant-scs) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Define-Storage-Class Name Number Storage-Base {Key Value}* Define a storage class Name that uses the named Storage-Base. Number is a small, non-negative integer that is used as an alias. The following keywords are defined: :Element-Size Size The size of objects in this SC in whatever units the SB uses. This defaults to 1. :Alignment Size The alignment restrictions for this SC. TNs will only be allocated at offsets that are an even multiple of this number. Defaults to 1. :Locations (Location*) If the SB is :Finite, then this is a list of the offsets within the SB that are in this SC. :Reserve-Locations (Location*) A subset of the Locations that the register allocator should try to reserve for operand loading (instead of to hold variable values.) :Save-P {T | NIL} If T, then values stored in this SC must be saved in one of the non-save-p :Alternate-SCs across calls. :Alternate-SCs (SC*) Indicates other SCs that can be used to hold values from this SC across calls or when storage in this SC is exhausted. The SCs should be specified in order of decreasing "goodness". There must be at least one SC in an unbounded SB, unless this SC is only used for restricted or wired TNs. :Constant-SCs (SC*) A list of the names of all the constant SCs that can be loaded into this SC by a move function. ATTRIBUTES-INTERSECTION is an external symbol in the C package. Its macroexpansion function is #. ATTRIBUTES-INTERSECTION can be called with these arguments: (&rest attributes) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Returns the intersection of all the sets of boolean attributes which are its arguments. DEFINE-MOVE-FUNCTION is an external symbol in the C package. Its macroexpansion function is #. DEFINE-MOVE-FUNCTION can be called with these arguments: ((name cost) lambda-list scs &body body) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Define-Move-Function (Name Cost) lambda-list ({(From-SC*) (To-SC*)}*) form* Define the function Name and note it as the function used for moving operands from the From-SCs to the To-SCs. Cost is the cost of this move operation. The function is called with three arguments: the VOP (for context), and the source and destination TNs. An ASSEMBLE form is wrapped around the body. All uses of DEFINE-MOVE-FUNCTION should be compiled before any uses of DEFINE-VOP. SB-ALLOCATED-SIZE is an external symbol in the C package. SB-ALLOCATED-SIZE can be called with these arguments: (name) Its defined argument types are: (T) Its result type is: (UNSIGNED-BYTE 29) Function Documention: The size of the Name'd SB in the currently compiled component. Useful mainly for finding the size for allocating stack frames. On Wednesday, 6/5/91 09:49:21 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/codegen.lisp Created: Wednesday, 3/20/91 03:10:36 am EST Comment: $Header: codegen.lisp,v 1.14 91/03/20 03:00:25 wlott Exp $ CURRENT-NFP-TN is an external symbol in the C package. CURRENT-NFP-TN can be called with these arguments: (vop) Its defined argument types are: (T) Its result type is: (OR NULL TN) Function Documention: Return the TN that is used to hold the number stack frame-pointer in VOP's function. Returns NIL if no number stack frame was allocated. On Wednesday, 6/5/91 09:49:21 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/codegen.lisp Created: Wednesday, 3/20/91 03:10:36 am EST Comment: $Header: codegen.lisp,v 1.14 91/03/20 03:00:25 wlott Exp $ NOTE-THIS-LOCATION is an external symbol in the C package. NOTE-THIS-LOCATION can be called with these arguments: (vop kind) Its defined argument types are: (T T) Its result type is: * Function Documention: NOTE-THIS-LOCATION VOP Kind Node that the current code location is an interesting (to the debugger) location of the specified Kind. VOP is the VOP responsible for this code. This VOP must specify some non-null :SAVE-P value (perhaps :COMPUTE-ONLY) so that the live set is computed. On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ DEFOPTIMIZER is an external symbol in the C package. Its macroexpansion function is #. DEFOPTIMIZER can be called with these arguments: (what (lambda-list &optional (n-node (gensym)) &rest vars) &body body) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Defoptimizer (Function Kind) (Lambda-List [Node-Var] Var*) Declaration* Form* Define some Kind of optimizer for the named Function. Function must be a known function. Lambda-List is used to parse the arguments to the combination as in Deftransform. If the argument syntax is invalid or there are non-constant keys, then we simply return NIL. The function is DEFUN'ed as Function-Kind-OPTIMIZER. Possible kinds are DERIVE-TYPE, OPTIMIZER, LTN-ANNOTATE and IR2-CONVERT. If a symbol is specified instead of a (Function Kind) list, then we just do a DEFUN with the symbol as its name, and don't do anything with the definition. This is useful for creating optimizers to be passed by name to DEFKNOWN. If supplied, Node-Var is bound to the combination node being optimized. If additional Vars are supplied, then they are used as the rest of the optimizer function's lambda-list. LTN-ANNOTATE methods are passed an additional POLICY argument, and IR2-CONVERT methods are passed an additional IR2-BLOCK argument. DEF-BOOLEAN-ATTRIBUTE is an external symbol in the C package. Its macroexpansion function is #. DEF-BOOLEAN-ATTRIBUTE can be called with these arguments: (name &rest attribute-names) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Def-Boolean-Attribute Name Attribute-Name* Define a new class of boolean attributes, with the attributes havin the specified Attribute-Names. Name is the name of the class, which is used to generate some macros to manipulate sets of the attributes: NAME-attributep attributes attribute-name* Return true if one of the named attributes is present, false otherwise. When set with SETF, updates the place Attributes setting or clearing the specified attributes. NAME-attributes attribute-name* Return a set of the named attributes. ATTRIBUTES-UNION is an external symbol in the C package. Its macroexpansion function is #. ATTRIBUTES-UNION can be called with these arguments: (&rest attributes) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Returns the union of all the sets of boolean attributes which are its arguments. SC-IS is an external symbol in the C package. Its macroexpansion function is #. SC-IS can be called with these arguments: (tn &rest scs) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: SC-Is TN SC* Returns true if TNs SC is any of the named SCs, false otherwise. DEF-PRIMITIVE-TRANSLATOR is an external symbol in the C package. Its macroexpansion function is #. DEF-PRIMITIVE-TRANSLATOR can be called with these arguments: (name lambda-list &body body) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Def-Primitive-Translator Name Lambda-List Form* Define a function that converts a use of (%PRIMITIVE Name ...) into Lisp code. Lambda-List is a defmacro style lambda list. DEF-PRIMITIVE-TYPE-ALIAS is an external symbol in the C package. Its macroexpansion function is #. DEF-PRIMITIVE-TYPE-ALIAS can be called with these arguments: (name result) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: DEF-PRIMITIVE-TYPE-ALIAS Name Result Define name to be an alias for Result in VOP operand type restrictions. SC-CASE is an external symbol in the C package. Its macroexpansion function is #. SC-CASE can be called with these arguments: (tn &rest forms) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: SC-Case TN {({(SC-Name*) | SC-Name | T} Form*)}* Case off of TN's SC. The first clause containing TN's SC is evaulated, returning the values of the last form. A clause beginning with T specifies a default. If it appears, it must be last. If no default is specified, and no clause matches, then an error is signalled. MOVE is an external symbol in the C package. Its macroexpansion function is #. MOVE can be called with these arguments: (dst src &optional (always-emit-code-p nil)) On Wednesday, 6/5/91 06:26:00 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/mips/mips-macs.lisp Created: Tuesday, 3/19/91 07:06:06 pm EST Comment: $Header: mips-macs.lisp,v 1.44 91/02/20 15:14:45 ram Exp $ Macro documentation: Move SRC into DST (unless they are location= and ALWAYS-EMIT-CODE-P is nil). DEFINE-STORAGE-BASE is an external symbol in the C package. Its macroexpansion function is #. DEFINE-STORAGE-BASE can be called with these arguments: (name kind &key size) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Define-Storage-Base Name Kind {Key Value}* Define a storage base having the specified Name. Kind may be :Finite, :Unbounded or :Non-Packed. The following keywords are legal: :Size Specify the number of locations in a :Finite SB or the initial size of a :Unbounded SB. DEFINE-VOP is an external symbol in the C package. Its macroexpansion function is #. DEFINE-VOP can be called with these arguments: ((name &optional inherits) &rest specs) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Define-VOP (Name [Inherits]) Spec* Define the symbol Name to be a Virtual OPeration in the compiler. If specified, Inherits is the name of a VOP that we default unspecified information from. Each Spec is a list beginning with a keyword indicating the interpretation of the other forms in the Spec: :Args {(Name {Key Value}*)}* :Results {(Name {Key Value}*)}* The Args and Results are specifications of the operand TNs passed to the VOP. The following operand options are defined: :SCs (SC*) :SCs specifies good SCs for this operand. Other SCs will be penalized according to move costs. A load TN will be allocated if necessary, guaranteeing that the operand is always one of the specified SCs. :Load-TN Load-Name Load-Name is bound to the load TN allocated for this operand, or to NIL if no load TN was allocated. :Load-If Expression Controls whether automatic operand loading is done. Expression is evaluated with the fixed operand TNs bound. If Expression is true, then loading is done and the variable is bound to the load TN in the generator body. Otherwise, loading is not done, and the variable is bound to the actual operand. :More T-or-NIL If specified, Name is bound to the TN-Ref for the first argument or result following the fixed arguments or results. A more operand must appear last, and cannot be targeted or restricted. :Target Operand This operand is targeted to the named operand, indicating a desire to pack in the same location. Not legal for results. :From Time-Spec :To Time-Spec Specify the beginning or end of the operand's lifetime. :From can only be used with results, and :To only with arguments. The default for the N'th argument/result is (:ARGUMENT N)/(:RESULT N). These options are necessary primarily when operands are read or written out of order. :Conditional This is used in place of :RESULTS with conditional branch VOPs. There are no result values: the result is a transfer of control. The target label is passed as the first :INFO arg. The second :INFO arg is true if the sense of the test should be negated. A side-effect is to set the PREDICATE attribute for functions in the :TRANSLATE option. :Temporary ({Key Value}*) Name* Allocate a temporary TN for each Name, binding that variable to the TN within the body of the generators. In addition to :Target (which is is the same as for operands), the following options are defined: :SC SC-Name :Offset SB-Offset Force the temporary to be allocated in the specified SC with the specified offset. Offset is evaluated at macroexpand time. If Offset is emitted, the register allocator chooses a free location in SC. If both SC and Offset are omitted, then the temporary is packed according to its primitive type. :From Time-Spec :To Time-Spec Similar to the argument/result option, this specifies the start and end of the temporarys' lives. The defaults are :Load and :Save, i.e. the duration of the VOP. The other intervening phases are :Argument, :Eval and :Result. Non-zero sub-phases can be specified by a list, e.g. by default the second argument's life ends at (:Argument 1). :Generator Cost Form* Specifies the translation into assembly code. Cost is the estimated cost of the code emitted by this generator. The body is arbitrary Lisp code that emits the assembly language translation of the VOP. An Assemble form is wrapped around the body, so code may be emitted by using the local Inst macro. During the evaluation of the body, the names of the operands and temporaries are bound to the actual TNs. :Effects Effect* :Affected Effect* Specifies the side effects that this VOP has and the side effects that effect its execution. If unspecified, these default to the worst case. :Info Name* Define some magic arguments that are passed directly to the code generator. The corresponding trailing arguments to VOP or %Primitive are stored in the VOP structure. Within the body of the generators, the named variables are bound to these values. Except in the case of :Conditional VOPs, :Info arguments cannot be specified for VOPS that are the direct translation for a function (specified by :Translate). :Ignore Name* Causes the named variables to be declared IGNORE in the generator body. :Variant Thing* :Variant-Vars Name* These options provide a way to parameterize families of VOPs that differ only trivially. :Variant makes the specified evaluated Things be the "variant" associated with this VOP. :Variant-Vars causes the named variables to be bound to the corresponding Things within the body of the generator. :Variant-Cost Cost Specifies the cost of this VOP, overriding the cost of any inherited generator. :Note {String | NIL} A short noun-like phrase describing what this VOP "does", i.e. the implementation strategy. If supplied, efficency notes will be generated when type uncertainty prevents :TRANSLATE from working. NIL inhibits any efficency note. :Arg-Types {* | PType | (:OR PType*) | (:CONSTANT Type)}* :Result-Types {* | PType | (:OR PType*)}* Specify the template type restrictions used for automatic translation. If there is a :More operand, the last type is the more type. :CONSTANT specifies that the argument must be a compile-time constant of the specified Lisp type. The constant values of :CONSTANT arguments are passed as additional :INFO arguments rather than as :ARGS. :Translate Name* This option causes the VOP template to be entered as an IR2 translation for the named functions. :Policy {:Small | :Fast | :Safe | :Fast-Safe} Specifies the policy under which this VOP is the best translation. :Guard Form Specifies a Form that is evaluated in the global environment. If form returns NIL, then emission of this VOP is prohibited even when all other restrictions are met. :VOP-Var Name :Node-Var Name In the generator, bind the specified variable to the VOP or the Node that generated this VOP. :Save-P {NIL | T | :Compute-Only | :Force-To-Stack} Indicates how a VOP wants live registers saved. :Move-Args {NIL | :Full-Call | :Local-Call | :Known-Return} Indicates if and how the more args should be moved into a different frame. DEF-SOURCE-TRANSFORM is an external symbol in the C package. Its macroexpansion function is #. DEF-SOURCE-TRANSFORM can be called with these arguments: (name lambda-list &body body) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Def-Source-Transform Name Lambda-List Form* Define a macro-like source-to-source transformation for the function Name. A source transform may "pass" by returning a non-nil second value. If the transform passes, then the form is converted as a normal function call. If the supplied arguments are not compatible with the specified lambda-list, then the transform automatically passes. Source-Transforms may only be defined for functions. Source transformation is not attempted if the function is declared Notinline. Source transforms should not examine their arguments. If it matters how the function is used, then Deftransform should be used to define an IR1 transformation. If the desirability of the transformation depends on the current Optimize parameters, then the Policy macro should be used to determine when to pass. CALLEE-RETURN-PC-TN is an external symbol in the C package. CALLEE-RETURN-PC-TN can be called with these arguments: (2env) Its defined argument types are: (T) Its result type is: TN Function Documention: Return the TN used for passing the return PC in a local call to the function designated by 2env. On Wednesday, 6/5/91 09:49:21 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/codegen.lisp Created: Wednesday, 3/20/91 03:10:36 am EST Comment: $Header: codegen.lisp,v 1.14 91/03/20 03:00:25 wlott Exp $ CALLEE-NFP-TN is an external symbol in the C package. CALLEE-NFP-TN can be called with these arguments: (2env) Its defined argument types are: (T) Its result type is: (OR NULL TN) Function Documention: Return the TN that is used to hold the number stack frame-pointer in the function designated by 2env. Returns NIL if no number stack frame was allocated. On Wednesday, 6/5/91 09:49:21 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/codegen.lisp Created: Wednesday, 3/20/91 03:10:36 am EST Comment: $Header: codegen.lisp,v 1.14 91/03/20 03:00:25 wlott Exp $ DEFINE-MOVE-VOP is an external symbol in the C package. Its macroexpansion function is #. DEFINE-MOVE-VOP can be called with these arguments: (name kind &rest scs) On Wednesday, 6/5/91 05:34:06 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/vmdef.lisp Created: Saturday, 4/20/91 02:28:08 pm EST Comment: $Header: vmdef.lisp,v 1.37 91/04/15 15:13:47 ram Exp $ Macro documentation: Define-Move-VOP Name {:Move | :Move-Argument} {(From-SC*) (To-SC*)}* Make Name be the VOP used to move values in the specified From-SCs to the representation of the To-SCs. If kind is :Move-Argument, then the VOP takes an extra argument, which is the frame pointer of the frame to move into. POLICY is an external symbol in the C package. Its macroexpansion function is #. POLICY can be called with these arguments: (node &rest conditions) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Policy Node Condition* Test whether some conditions apply to the current compiler policy for Node. Each condition is a predicate form which accesses the policy values by referring to them as the variables SPEED, SPACE, SAFETY, CSPEED, BREVITY and DEBUG. The results of all the conditions are combined with AND and returned as the result. Node is a form which is evaluated to obtain the node which the policy is for. If Node is NIL, then we use the current policy as defined by *default-cookie* and *current-cookie*. This option is only well defined during IR1 conversion. DEFTRANSFORM is an external symbol in the C package. Its macroexpansion function is #. DEFTRANSFORM can be called with these arguments: (name (lambda-list &optional (arg-types '*) (result-type '*) &key result policy node defun-only eval-name) &body body) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Deftransform Name (Lambda-List [Arg-Types] [Result-Type] {Key Value}*) Declaration* Form* Define an IR1 transformation for Name. An IR1 transformation computes a lambda that replaces the function variable reference for the call. A transform may pass (decide not to transform the call) by calling the Give-Up function. Lambda-List both determines how the current call is parsed and specifies the Lambda-List for the resulting lambda. We parse the call and bind each of the lambda-list variables to the continuation which represents the value of the argument. When parsing the call, we ignore the defaults, and always bind the variables for unsupplied arguments to NIL. If a required argument is missing, an unknown keyword is supplied, or an argument keyword is not a constant, then the transform automatically passes. The Declarations apply to the bindings made by Deftransform at transformation time, rather than to the variables of the resulting lambda. Bound-but-not-referenced warnings are suppressed for the lambda-list variables. Normally, the body evaluates to a form which becomes the body of an automatically constructed lambda. We make Lambda-List the lambda-list for the lambda, and automatically insert declarations of the argument and result types. If the second value of the body is non-null, then it is a list of declarations which are to be inserted at the head of the lambda. Automatic lambda generation may be inhibited by explicitly returning a lambda from the body. The Arg-Types and Result-Type are used to create a function type which the call must satisfy before transformation is attempted. The function type specifier is constructed by wrapping (FUNCTION ...) around these values, so the lack of a restriction may be specified by omitting the argument or supplying *. The argument syntax specified in the Arg-Types need not be the same as that in the Lambda-List, but the transform will never happen if the syntaxes can't be satisfied simultaneously. If there is an existing transform for the same function that has the same type, then it is replaced with the new definition. These are the legal keyword options: :Result - A variable which is bound to the result continuation. :Node - A variable which is bound to the combination node for the call. :Policy - A form which is supplied to the Policy macro to determine whether this transformation is appropriate. If the result is false, then the transform automatically passes. :Eval-Name - The name is actually a form to be evaluated. Useful for getting closures that transform similar functions. :Defun-Only - Don't actually instantiate a transform, instead just DEFUN Name with the specified transform definition function. This may be later instantiated with %Deftransform. DEF-IR1-TRANSLATOR is an external symbol in the C package. Its macroexpansion function is #. DEF-IR1-TRANSLATOR can be called with these arguments: (name (lambda-list start-var cont-var &key (kind :special-form)) &body body) On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $ Macro documentation: Def-IR1-Translator Name (Lambda-List Start-Var Cont-Var {Key Value}*) [Doc-String] Form* Define a function that converts a Special-Form or other magical thing into IR1. Lambda-List is a defmacro style lambda list. Start-Var and Cont-Var are bound to the start and result continuations for the resulting IR1. This keyword is defined: Kind The function kind to associate with Name (default :special-form). ATTRIBUTES= is an external symbol in the C package. ATTRIBUTES= can be called with these arguments: (attr1 attr2) Its declared argument types are: (FIXNUM FIXNUM) Its result type is: (MEMBER T NIL) It is currently declared inline; expansion is available. Function Documention: Returns true if the attributes present in Attr1 are indentical to those in Attr2. On Wednesday, 6/5/91 05:24:34 am EST it was compiled from: /afs/cs.cmu.edu/project/clisp-2/pmax_mach/15/compiler/macros.lisp Created: Tuesday, 3/19/91 07:05:00 pm EST Comment: $Header: macros.lisp,v 1.23 91/02/20 14:58:39 ram Exp $