;ELC
;;; Compiled
;;; in Emacs version 26.1
;;; 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)])
#@53
(fn ARGS BODY ENV PARENTFORM &optional DOCSTRING)
(defalias 'cconv--convert-function #[1284 "@@\232\204\f \302\303!\210\211A\242A\304\211\211C\305C\304C\211\203\250 \211@\211\236A\206* \211\306:\203\214 @\211\307=\203{ A\211:\203` \211@\211\n\f\242B\240\210\307\310
\242DE\n\242B\240\266\202w \n\242B\240\210\310\n\242E\242B\240\210\210\202\210 %\210\210\202\231 \211%\210\266\211\242T\240\210A\266\202\202 \210\211\242\237\240\210\211\242\237\240\210\n\211\203\364 \211@\211C\nB \235\204\331 \211\242\236\203\355 C\242B\240\210\202\355 \307E\242B\240\210\211\311DDB\262A\266\202\202\267 \210\312\313\314\315\316\317!\320\"\321\322%\"\262\2037\304@;\204@\242\323>\203(\211A\262\242B\262\202
\324\237\325 BBC\"\262\210\242\204M\204M\326\327\fBBD\202Z\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 (#$ . 2456)])
#@30
(fn NEW-ENV VAR CLOSEDSYM)
(defalias 'cconv--remap-llv #[771 "\300\301\302\303\304\305\"\306\"\307\310%\"\207" [mapcar make-byte-code 257 "\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" vconcat vector [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 "\n\n(fn MAPPING)"] 11 (#$ . 3805)])
#@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:\203\237\n@\211\330>\203\314A\211:\203<\211@A\211\306\242C\242C\211\203\326\211@\306:\204a \211C\262\202u AA\203n \331\332#\210A@\262@B\235\203?@\333=\203\216 A@@\334=\204\222 \320\335!\210A@AA @@\232\204\242 \320\336!\210 @AA@\211A@\337\"\205\267 \nGY\266\204\203? \211A\242AA@\211A@\337\"AA\306C\340 BBB
\242B\240\210\211\203\"\211@\211\341\242\"\204\375
\242B\240\210\210\211\242\236A\242\342=\203\211>\204\342E\242B\240\210A\266\202\202\344 \210\333\334\307\310\311\343\313\314 !\344\"\345\346%\"BBD\266\206\202{B\235\203a\342E\242B\240\210\347\350\242\242#D\202{\211\242\236\203rC\242B\240\210\350\242\242#\351=\203\260\242>\203\260\352\353\354\"!\355 \242#\240\210\356\n\242\"B\240\210\211D B\262 \210DB\262\351=\203\315\242\240\210\242\240\210\266A\266\202\202M \210\351=\204\211\203\211@\211\242\242>\203\211\242\352\353\354\"!\355\242#\240\210\356\242\"B\240\210\211DB\262\266A\266\202\202\336\210\237\307\310\311\357\313\314 \"\360\"\345\346% \"BB\266\203\266\203\266\202\202\307:\203c@\211\334=\203U\n\f$\202^\n\f$\262\202\307\361=\203s #\202\307\362=\203\363\364!\202\307\365=\203\212\f\202\307\333=\203\225\f\202\307\366=\203\247
\n\f$\202\307\367=\203\264!\202\307\370=\203\277\f\202\307 $\262\202\232\211:\203\375\211@\211\334=\203\352\fA\n\f$\262\202\370\fA\n\f$\262\262\202\232\211\361=\203A #\262\202\232\211\333=\203\203A\211:\203|\211@\211:\203u\211@\211\334=\203nA\211:\203g\211@A\211@\242\371=\205T\350\211A\262\242A@\242\242#\372\242%\262\266\202\266\202\202i\262\202p\262\202w
\262\202~\f\262\202\232\211\362=\203\217\363\364!\202\232\211\365=\203\232\202\232\211\373>\203A\211:\203\315\211@A\211\211\307\310\311\357\313\314\"\374\"\345\346%\"BB\266\203\266\202\202\377\366=\203\337
\n\f$\202\377\367=\203\354!\202\377\370=\203\367\f\202\377 $\262\202\232\211\375=\203\335A\211:\203\320\211@A\211:\203\302\211@A\f\203X\211\372\306C\242$\375\376\307\310\311\377\313\314\f#\201@ \"\201A \201B %\"BBB\262\266\203\202\275\211\375\350\242\242#\205qCB\235\211\203\203\201C E\242B\202\227\242\236\203\224C\242B\202\227\242\307\310\311\201D \313\314\f $\201E \"\201F \201B % \"\266\202BBB\266\203\266\202\202\313
$\266\202\202\330 $\262\202\232\211\201G =\203\"\f\203A\211:\203\211@A
%\266\202\202
$\262\202\232A $\262\202\232\211\201H =\203SA\211:\203F\211@A
%\266\202\202N $\262\202\232\211\366=\203jA
\n\f$\262\202\232\211\201I >\203pA\211:\203K\211@A\211\242\236A\201J :\2034@\211\340=\203#A\211:\203\211A\211:\203\361\211A@=\204\265\320\201K !\210\337\307\310\311\201L \313\314!\201M \"\201A \201N %\"\307\310\311\357\313\314\"\201O \"\345\201P %\"\"BB\262\202
\307\310\311\357\313\314\"\201Q \"\345\201P % B\"B\262\202 %\262\202/%\262\202@\211%\262\262\266\203\266\202\202k\367=\203X!\202k\370=\203c\f\202k $\262\202\232\211\367=\203\202A!\262\202\232\211\370=\203\215\202\232A $\262\262\202\253\n\242\236A\206\253\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-warn "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 let* make-symbol format "closed-%s" cconv--remap-llv remq "\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& |