tidying.
authorStephen Adams <edu/mit/csail/zurich/adams>
Sat, 9 Mar 1996 16:09:39 +0000 (16:09 +0000)
committerStephen Adams <edu/mit/csail/zurich/adams>
Sat, 9 Mar 1996 16:09:39 +0000 (16:09 +0000)
v8/src/compiler/documentation/midend/applicat.txt

index 113b0f93a978713c0cf4942f14f66a988386872d..cb7fce6fa317207ffab58b6350dbc6a7a820df86 100644 (file)
@@ -2,15 +2,25 @@ Description of applicat.scm
 
 Purpose:
 --------
-APPLICAT examines CALLs and rewrites them into calls to
-pseudo-primitives if the operator is not know. (using %internal-apply)
-In a few cases the CALL is not rewriten: QUOTE of a known-operator
-and not a primitive-procedure, or its primitive-procedure-name is not 
-compiler:primitive-with-no-open-coding, LOOKUP with an a bound variable 
-in a LETREC expression, LAMBDA. 
-In a case where the operator is a QUOTE to an unknown operator and it is a 
-primitive-procedure the CALL is rewriten with a CALL to %primitive-apply.
-In a CALL to a LAMBDA it gets rid of #!OPTIONAL and #!REST.
+
+APPLICAT rewrites CALLS to use explicit application pseudo-primitives
+like %internal-apply (aka funcall).
+
+Some operators are not rewritten.
+
+ . QUOTEd known-operator that will be open-coded.  Known operators
+   which are primitive procedures may be excluded by placing their
+   names in the list COMPILER:PRIMITIVE-WITH-NO-OPEN-CODING
+ . LOOKUP with a variable bound in a LET or LETREC expression to a
+   LAMBDA.
+
+Two kinds of application primitives are used:
+ . %primitive-apply when the operator is a quoted primitive procedure
+   not handled as above.
+ . %internal-apply for all other operators - thet could be anything.
+
+In a CALL to a LAMBDA, #!OPTIONAL and #!REST arguments are replaced by
+expressions to construct the appropriate values.
 
 Operators Introduced:
 ---------------------
@@ -26,15 +36,15 @@ Special forms excluded:
 
 Special forms introduced:
 -------------------------
 none
+ none
 
 Magic Cookies handled specially:
 -------------------------------
-none
+ none
 
 Guarantees on Output:
 ---------------------
- After this pass, CALLs only have the following kinds of operators:
 After this pass, CALLs only have the following kinds of operators:
 LAMBDA expressions, LOOKUP expressions where the variable is bound in
 a LETREC expression, or known operators, including %internal-apply and
 %primitive-apply.