%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
;ELC ;;; Compiled ;;; in Emacs version 25.2 ;;; with all optimizations. ;;; This file contains utf-8 non-ASCII characters, ;;; and so cannot be loaded into Emacs 22 or earlier. (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (string-lessp emacs-version "23") (error "`%s' was compiled for Emacs 23 or later" #$)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@96 Try to do lambda lifting if the number of arguments + free variables is less than this number. (defconst cconv-liftwhen 6 (#$ . 408)) #@252 Main entry point for closure conversion. -- FORM is a piece of Elisp code after macroexpansion. -- TOPLEVEL(optional) is a boolean variable, true if we are at the root of AST Returns a form where all lambdas don't have any free variables. (fn FORM) (defalias 'cconv-closure-convert #[257 "\303\211\211\304\303\"\210\n\237\305\303\211#\n\203 \306\307!\210+\207" [cconv-captured+mutated cconv-lambda-candidates cconv-freevars-alist nil cconv-analyze-form cconv-convert cl--assertion-failed (null cconv-freevars-alist)] 5 (#$ . 549)]) #@70 Add the warnings that closure conversion would encounter. (fn FORM) (defalias 'cconv-warnings-only #[257 "\303\211\211\304\303\"\210+\207" [cconv-captured+mutated cconv-lambda-candidates cconv-freevars-alist nil cconv-analyze-form] 4 (#$ . 1096)]) (defconst cconv--dummy-var (make-symbol "ignored")) #@63 Return elements of set S1 that are not in set S2. (fn S1 S2) (defalias 'cconv--set-diff #[514 "\300\211\203 \211@\211>\204 \211B\262A\266\202\202 \210\211\237\207" [nil] 7 (#$ . 1407)]) #@60 Return elements of set S that are not in Dom(M). (fn S M) (defalias 'cconv--set-diff-map #[514 "\300\211\203 \211@\211\236\204 \211B\262A\266\202\202 \210\211\237\207" [nil] 7 (#$ . 1608)]) #@67 Return the submap of map M1 that has Dom(M2) removed. (fn M1 M2) (defalias 'cconv--map-diff #[514 "\300\211\203 \211@\211@\236\204 \211B\262A\266\202\202 \210\211\237\207" [nil] 7 (#$ . 1813)]) #@53 Return the map M minus any mapping for X. (fn M X) (defalias 'cconv--map-diff-elem #[514 "\211\236\211\203 \300\"\202 \236\203 \301\302!\210\207" [remq cl--assertion-failed (null (assq x res))] 6 (#$ . 2022)]) #@65 Return the map M minus any mapping for elements of S. (fn M S) (defalias 'cconv--map-diff-set #[514 "\300\211\203 \211@\211@>\204 \211B\262A\266\202\202 \210\211\237\207" [nil] 7 (#$ . 2248)]) (defalias 'cconv--convert-function #[1284 "@@\232\204\f \302\303!\210\211A\242A\304\211\211C\305C\304C\211\203\236 \211@\211\236A\206* \211\306:\203\202 @\211\307=\203q A\211:\203` \211@\211\n\f\242B\240\210\307\310 \242DE\n\242B\240\266\202m %\210\210\202~ %\210\210\202\217 \211%\210\266\211\242T\240\210A\266\202\202 \210\211\242\237\240\210\211\242\237\240\210\n\211\203\352 \211@\211C\nB \235\204\317 \211\242\236\203\343 C\242B\240\210\202\343 \307E\242B\240\210\211\311DDB\262A\266\202\202\255 \210\312\313\314\315\316\317!\320\"\321\322%\"\262\203-\304@;\204@\242\323>\203\211A\262\242B\262\202\324\237\325 BBC\"\262\210\242\204C\204C\326\327\fBBD\202P\330\242 BBBB\207" [cconv-freevars-alist cconv-captured+mutated cl--assertion-failed (equal body (caar cconv-freevars-alist)) nil 0 #[1285 "\242B\240\210\300\242E\242B\240\207" [internal-get-closed-var] 9 "\n\n(fn ENVECTOR I NEW-ENV FV EXP)"] car-safe internal-get-closed-var list mapcar make-byte-code 257 "\301\300\242\302#\207" vconcat vector [cconv-convert nil] 5 "\n\n(fn FORM)" (interactive declare) append let function lambda internal-make-closure] 24 "\n\n(fn ARGS BODY ENV PARENTFORM &optional DOCSTRING)"]) #@868 Return FORM with all its lambdas changed so they are closed. ENV is a lexical environment mapping variables to the expression used to get its value. This is used for variables that are copied into closures, moved into cons cells, ... ENV is a list where each entry takes the shape either: (VAR . (car-safe EXP)): VAR has been moved into the car of a cons-cell, and EXP is an expression that evaluates to this cons-cell. (VAR . (internal-get-closed-var N)): VAR has been copied into the closure environment's Nth slot. (VAR . (apply-partially F ARG1 ARG2 ..)): VAR has been λ-lifted and takes additional arguments ARGs. EXTEND is a list of variables which might need to be accessed even from places where they are shadowed, because some part of ENV causes them to be used at places where they originally did not directly appear. (fn FORM ENV EXTEND) (defalias 'cconv-convert #[771 "\211CC\305\306\307\310\311\312\313\314 !\315\"\316\317%\242\"\"\203 \320\321!\210\322\323\324\325\326\327\n:\203e\n@\211\330>\203\230A\211:\203\211@A\211\306\242C\242C\211\203\346\211@\306:\204a \211C\262\202w AA\203p \331\332\333 #!\210A@\262@B\235\203A@\334=\203\220 A@@\335=\204\224 \320\336!\210A@AA @@\232\204\244 \320\337!\210 @AA@\211A@\340\"\205\271 \nGY\266\204\203A \211A\242AA@\211A@\340\"AA\306C\341 BBB \242B\240\210\211\203$\211@\211\342\242\"\204\377 \242B\240\210\210\211\242\236A\242\343=\203\211>\204\343E\242B\240\210A\266\202\202\346 \210\334\335\307\310\311\344\313\314 !\345\"\346\347%\"BBD\266\206\202}B\235\203c\343E\242B\240\210\350\351\242\242#D\202}\211\242\236\203tC\242B\240\210\351\242\242#\242>\203\300\352\353\354!P!\307\310\311\355\313\314 \"\356\"\357\317%\n\242\"\240\210\360 \242\"\240\210\242B\240\210\211D B\262 \210DB\262\361=\203\335\242\240\210\242\240\210\266A\266\202\202M \210\237\307\310\311\362\313\314 \"\363\"\346\347% \"BB\266\203\266\203\266\202\202\223:\203/@\211\335=\203!\n\f$\202*\n\f$\262\202\223\364=\203? #\202\223\365=\203K\366\367!\202\223\370=\203V\f\202\223\334=\203a\f\202\223\371=\203s \n\f$\202\223\372=\203\200!\202\223\373=\203\213\f\202\223 $\262\202`\211:\203\311\211@\211\335=\203\266\fA\n\f$\262\202\304\fA\n\f$\262\262\202`\211\364=\203\336A #\262\202`\211\334=\203OA\211:\203H\211@\211:\203A\211@\211\335=\203:A\211:\2033\211@A\211@\242\374=\205 \351\211A\262\242A@\242\242#\375\242%\262\266\202\266\202\2025\262\202<\262\202C \262\202J\f\262\202`\211\365=\203[\366\367!\202`\211\370=\203f\202`\211\376>\203\320A\211:\203\231\211@A\211\211\307\310\311\362\313\314\"\377\"\346\347%\"BB\266\203\266\202\202\313\371=\203\253 \n\f$\202\313\372=\203\270!\202\313\373=\203\303\f\202\313 $\262\202`\211\201@ =\203\263A\211:\203\246\211@A\211:\203\230\211@A\f\203,\211\375\306C\242$\201@ \201A \307\310\311\201B \313\314\f#\201C \"\201D \201E %\"BBB\262\266\203\202\223\211\201@ \351\242\242#\205GCB\235\211\203Y\201F E\242B\202m\242\236\203jC\242B\202m\242\307\310\311\201G \313\314\f $\201H \"\201I \201E % \"\266\202BBB\266\203\266\202\202\241 $\266\202\202\256 $\262\202`\211\201J =\203\370\f\203\350A\211:\203\333\211@A %\266\202\202\343 $\262\202`A $\262\202`\211\201K =\203)A\211:\203\211@A %\266\202\202$ $\262\202`\211\371=\203@A \n\f$\262\202`\211\201L >\2036A\211:\203\211@A\211\242\236A\201M :\203\372@\211\341=\203\351A\211:\203\330\211A\211:\203\307\211A@=\204\213\320\201N !\210\340\307\310\311\201O \313\314!\201P \"\201D \201Q %\"\307\310\311\362\313\314\"\201R \"\346\201S %\"\"BB\262\202\323\n\n\n%\262\202\344 %\262\202\365%\262\202\211%\262\262\266\203\266\202\2021\372=\203!\2021\373=\203)\f\2021 $\262\202`\211\372=\203HA!\262\202`\211\373=\203S\202`A $\262\262\202q\n\242\236A\206q\n\266\206\207" [cconv-lambda-candidates cconv-freevars-alist cconv-liftwhen cconv-captured+mutated byte-compile--use-old-handlers delq nil mapcar make-byte-code 257 "\211A@\301=\205 \302AAA\300\242\"\207" vconcat vector [apply-partially cconv--set-diff] 4 "\n\n(fn MAPPING)" cl--assertion-failed (not (delq nil (mapcar (lambda (mapping) (if (eq (cadr mapping) 'apply-partially) (cconv--set-diff (cdr (cddr mapping)) extend))) env))) #[1285 "\211\300\242\242#\301\302\303\n\242$F\207" [cconv-convert :fun-body cconv--convert-function nil] 13 "\n\n(fn ENV EXTEND BODY FORM HEAD)"] #[257 "\300\301\302\"B\207" [interactive mapcar #[257 "\300\301\211#\207" [cconv-convert nil] 5 "\n\n(fn FORM)"]] 5 "\n\n(fn FORMS)"] #[1028 "\300G\301\"\301U\203\f \207\302\203{ \211A\262\242\211\242\236A\206 \211\303\211A\262\242\242\242#9\203: \304E\202t :\203s @\211\305=\203m A\211:\203g \211@A\211\204a \306E\262\202b \266\202\202h \262\202n \262\202t \211B\266\204\202 \211A\203\207 \307\237B\202\211 \211@\207" [logand 1 nil cconv-convert setq car-safe setcar progn] 16 "\n\n(fn FORM ENV EXTEND FORMS)"] #[771 "\300\301\302\303\304\305\306 \"\307\"\310\311%\"B\207" [cond mapcar make-byte-code 257 "\302\303\304\305\306\307\300\301\"\310\"\311\312%\"\207" vconcat vector [mapcar make-byte-code 257 "\302\300\242\301\242#\207" vconcat vector [cconv-convert] 5 "\n\n(fn FORM)"] 9 "\n\n(fn BRANCH)"] 12 "\n\n(fn ENV EXTEND COND-FORMS)"] #[1028 "\300\301\302D\242\242#\303\304\305\306\307\310\"\311\"\312\313%\"BB\207" [funcall cconv-convert function mapcar make-byte-code 257 "\302\300\242\301\242#\207" vconcat vector [cconv-convert] 5 "\n\n(fn FORM)"] 14 "\n\n(fn ENV EXTEND ARGS FUN)"] #[1028 "\211\300\301\302\303\304\305\n\n\"\306\"\307\310%\"B\207" [mapcar make-byte-code 257 "\302\300\242\301\242#\207" vconcat vector [cconv-convert] 5 "\n\n(fn FORM)"] 13 "\n\n(fn ENV EXTEND FORMS FUNC)"] (let let*) byte-compile-log-warning format-message "Malformed `%S' binding: %S" function lambda (and (eq (car value) 'function) (eq (car (cadr value)) 'lambda)) (equal (cddr (cadr value)) (caar cconv-freevars-alist)) append apply-partially memql car-safe "\301\300\242\302#\207" [cconv-convert nil] 5 "\n\n(fn FORM)" list cconv-convert make-symbol "closed-" symbol-name "\211A@\302=\204 \207\211@\3038=\204 \304\305!\210\211@\302@\306\307\310\311\312\313\300\301\"\314\"\315\316%\315\233\"BBB\207" [apply-partially 2 cl--assertion-failed (eq (car mapping) (nth 2 mapping)) mapcar make-byte-code 257 "\300=\203 \301\207\207" vconcat vector [] 3 "\n\n(fn ARG)"] 12 remq let* "\302\300\242\301\242#\207" [cconv-convert] cond internal-make-closure byte-compile-report-error "Internal error in compiler: cconv called twice?" quote setq interactive declare :documentation cconv--convert-function (defvar defconst) [cconv-convert] condition-case :fun-body "\211@\304\302\206 CA\301\242\300$D\207" [cconv--dummy-var cconv--convert-function] 7 "\n\n(fn HANDLER)" car-save "\211@\304\305\306\307\310\311\300\303\"\312\"\313\314%A\"\302\204 \211\202&