From: Stephen Adams Date: Sat, 9 Mar 1996 16:09:39 +0000 (+0000) Subject: tidying. X-Git-Tag: 20090517-FFI~5656 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=7167567c0d657e6d34bf73e58d1f5f04a4726971;p=mit-scheme.git tidying. --- diff --git a/v8/src/compiler/documentation/midend/applicat.txt b/v8/src/compiler/documentation/midend/applicat.txt index 113b0f93a..cb7fce6fa 100644 --- a/v8/src/compiler/documentation/midend/applicat.txt +++ b/v8/src/compiler/documentation/midend/applicat.txt @@ -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.