(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) (FILECREATED " 2-Nov-93 23:07:15" ("compiled on " {DSK}export>lispcore>sources>CLTL2>CMLMVS.;1) "19-Feb-93 17:03:08" "COMPILE-FILEd" in "Medley 19-Feb-93 ..." dated "19-Feb-93 18:20:42") (FILECREATED "24-Mar-92 14:05:50" {DSK}local>lde>lispcore>sources>CMLMVS.;2 4265 changes to%: ( VARS CMLMVSCOMS) (FUNCTIONS CL:NTH-VALUE) previous date%: "16-May-90 13:35:04" {DSK}local>lde>lispcore>sources>CMLMVS.;1) (RPAQQ CMLMVSCOMS ((* ; "Interpreter and compiler support for multiple values. See LLMVS for runtime support") (FNS CL:MULTIPLE-VALUE-CALL RETVALUES) (PROP DMACRO CL:MULTIPLE-VALUE-CALL) (FUNCTIONS CL:MULTIPLE-VALUE-BIND CL:MULTIPLE-VALUE-LIST CL:MULTIPLE-VALUE-PROG1 CL:MULTIPLE-VALUE-SETQ CL:NTH-VALUE) (VARS ( NEW-ADVISETEMPLATE (QUOTE (ADV-PROG (!VALUE !OTHER-VALUES) (CL:MULTIPLE-VALUE-SETQ (!VALUE . !OTHER-VALUES) (ADV-PROG NIL (ADV-RETURN DEF))) (ADV-RETURN (CL:VALUES-LIST (CONS !VALUE !OTHER-VALUES ))))))) (PROP FILETYPE CMLMVS) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA CL:MULTIPLE-VALUE-CALL) (NLAML) (LAMA))))) CL:MULTIPLE-VALUE-CALL :D8 (L (0 FORMS)) N@,j0@°d, Z–KµJ\[¿µìL°" [J°ïdýnIkØYñ¨hl4 ¿µêIH(69 \LISPERROR 43 LAST 20 \MVLIST) NIL () RETVALUES :D8 (P 0 P I 2 FLG I 1 VALUES I 0 POS) D@ kHÑÊðjð•kHÑÈ„kHÑÈ l ÙXjð´ Al ¿hH B–@ ¿A$(60 RELSTK 52 \SMASHRETURN 44 \LISPERROR 5 \STACKARGPTR) NIL () (PUTPROPS CL:MULTIPLE-VALUE-CALL DMACRO (DEFMACRO (FN &BODY BODY) (* ;; "How to compile special form MULTIPLE-VALUE-CALL --- for benefit of macro writers, handle some degenerate cases and let the rest turn into an APPLY. This is not an OPTIMIZER because pavcompiler intercepts it for its own use." ) (COND ((AND (LISTP FN) (MEMB (CAR FN) (QUOTE (FUNCTION CL:FUNCTION))) (MEMB (CADR FN) (QUOTE (LIST CL:VALUES)))) (if (NULL (CDR BODY)) then (* ; "only one source of values. Either sole arg is the result itself, or a list of its values is") (CONS (if (EQ (CADR FN) (QUOTE LIST)) then (QUOTE \MVLIST) else (QUOTE PROGN)) BODY) else (* ; "Produce a list consisting of all args spread. This is either the result itself, or to be spread as values" ) (BQUOTE ((\, (if (EQ (CADR FN) (QUOTE LIST)) then (QUOTE PROGN) else (QUOTE CL:VALUES-LIST))) (NCONC (\,@ (for F in BODY collect (BQUOTE (\MVLIST (\, F)))))))))) (T (BQUOTE (APPLY (\, FN) (NCONC (\,@ ( for F in BODY collect (BQUOTE (\MVLIST (\, F)))))))))))) CL::expand-MULTIPLE-VALUE-BIND :D8 (L (1 SI::$$MACRO-ENVIRONMENT 0 SI::$$MACRO-FORM)) %@AH¹HZ»J¼gIgKhLNIL (26 CL:MULTIPLE-VALUE-LIST 20 DESTRUCTURING-BIND) () (SETF-MACRO-FUNCTION (QUOTE CL:MULTIPLE-VALUE-BIND) (QUOTE CL::expand-MULTIPLE-VALUE-BIND)) CL::expand-MULTIPLE-VALUE-LIST :D8 (L (1 SI::$$MACRO-ENVIRONMENT 0 SI::$$MACRO-FORM)) @goHhNIL (10 CL:MULTIPLE-VALUE-CALL) ( 15 (FUNCTION LIST)) (SETF-MACRO-FUNCTION (QUOTE CL:MULTIPLE-VALUE-LIST) (QUOTE CL::expand-MULTIPLE-VALUE-LIST)) CL::expand-MULTIPLE-VALUE-PROG1 :D8 (L (1 SI::$$MACRO-ENVIRONMENT 0 SI::$$MACRO-FORM)) &@!H¹HºgggIhJhNIL (25 CL:MULTIPLE-VALUE-LIST 20 PROG1 15 CL:VALUES-LIST) () (SETF-MACRO-FUNCTION (QUOTE CL:MULTIPLE-VALUE-PROG1) (QUOTE CL::expand-MULTIPLE-VALUE-PROG1)) CL::expand-MULTIPLE-VALUE-SETQ :D8 (L (1 SI::$$MACRO-ENVIRONMENT 0 SI::$$MACRO-FORM)) A@1H¹Hº»gKgJhhhgIKhgKhh(16 GENSYM) (53 CAR 42 DESTRUCTURING-SETQ 28 CL:MULTIPLE-VALUE-LIST 22 LET) () (SETF-MACRO-FUNCTION (QUOTE CL:MULTIPLE-VALUE-SETQ) (QUOTE CL::expand-MULTIPLE-VALUE-SETQ)) CL::expand-NTH-VALUE :D8 (L (1 SI::$$MACRO-ENVIRONMENT 0 SI::$$MACRO-FORM)) !@!H¹HºgIgJhhNIL (22 CL:MULTIPLE-VALUE-LIST 16 CL:NTH) () (SETF-MACRO-FUNCTION (QUOTE CL:NTH-VALUE) (QUOTE CL::expand-NTH-VALUE)) (RPAQQ NEW-ADVISETEMPLATE (ADV-PROG (!VALUE !OTHER-VALUES) (CL:MULTIPLE-VALUE-SETQ (!VALUE . !OTHER-VALUES) (ADV-PROG NIL (ADV-RETURN DEF))) (ADV-RETURN (CL:VALUES-LIST (CONS !VALUE !OTHER-VALUES ))))) (PUTPROPS CMLMVS FILETYPE CL:COMPILE-FILE) (PUTPROPS CMLMVS COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1990 1992)) NIL