| Server IP : 217.160.0.135 / Your IP : 216.73.217.37 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1074145052 ( 1074145052) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/share/emacs/28.2/lisp/emacs-lisp/ |
Upload File : |
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.
#@96 Try to do lambda lifting if the number of arguments + free variables
is less than this number.
(defconst cconv-liftwhen 6 (#$ . 84))
#@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 "\302\211\303\302\"\210 \237\304\302\211# \203 \305\306!\210*\207" [cconv-var-classification cconv-freevars-alist nil cconv-analyze-form cconv-convert cl--assertion-failed (null cconv-freevars-alist)] 5 (#$ . 224)])
(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 (#$ . 794)])
#@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 (#$ . 994)])
#@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 (#$ . 1198)])
#@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 (#$ . 1407)])
#@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 (#$ . 1633)])
#@53
(fn ARGS BODY ENV PARENTFORM &optional DOCSTRING)
(defalias 'cconv--convert-function #[1284 "@@\232\204\f \301\302!\210\211A\242A\303\211C\304C\303C\211\203\233 \211@\211\n\236A\206) \211\305:\203\200 \242\211\306=\203o \243\211:\203^ \211\242 \242B\240\210\306\307\f\242DE \242B\240\266\202\216 %\266\202\216 %\266\202\216 \211%\266\211\242T\240\210A\266\202\202 \210\211\242\237\240\210\211\242\237\240\210\310\n\n\242\n$\262\242\204\307 \204\307 \311\312BBD\207\313\n\242BBBB\207" [cconv-freevars-alist 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 cconv--convert-funcbody function lambda internal-make-closure] 22 (#$ . 1841)])
#@30
(fn NEW-ENV VAR CLOSEDSYM)
(defalias 'cconv--remap-llv #[771 "\300\301\302#\"\207" [mapcar make-closure #[257 "\211A@\302=\204 \207\211@\3038=\204 \304\305!\210\211@\302@\306\307\310\300\301#\311\233\"BBB\207" [V0 V1 apply-partially 2 cl--assertion-failed (eq (car mapping) (nth 2 mapping)) mapcar make-closure #[257 "\300=\203 \301\207\207" [V0 V1] 3 "\n\n(fn ARG)"] 3] 9 "\n\n(fn MAPPING)"]] 8 (#$ . 2733)])
#@20
(fn VAR VARKIND)
(defalias 'cconv--warn-unused-msg #[514 "\300!?\206 \301!\302H\303=\206 \304=?\205/ \305\301!!\306\307\203+ \310P\202, \311$\262\207" [intern-soft symbol-name 0 95 ignored help-uni-confusable-suggestions format "Unused lexical %s `%S'%s" "\n " ""] 9 (#$ . 3162)])
#@20
(fn BINDER FORM)
(defalias 'cconv--var-classification #[514 "\301B\302\211\303%\207" [cconv-var-classification alist-get nil equal] 8 (#$ . 3463)])
(byte-code "\300\301\302\303#\300\207" [function-put cconv--var-classification compiler-macro cconv--var-classification--inliner] 4)
#@33
(fn INLINE--FORM BINDER FORM)
(defalias 'cconv--var-classification--inliner #[771 "\3002 \301\302E\303\304\211\305\306D\2570\207" [inline--just-use alist-get cons cconv-var-classification nil function equal] 10 (#$ . 3755)])
#@319 Run `cconv-convert' on FUNCBODY, the forms of a lambda expression.
PARENTFORM is the form containing the lambda expression. ENV is a
lexical environment (same format as for `cconv-convert'), not
including FUNARGS, the function's argument list. Return a list
of converted forms.
(fn FUNARGS FUNCBODY ENV PARENTFORM)
(defalias 'cconv--convert-funcbody #[1028 "C\301\211\203y \211@\302\303CB\301\211\304%\211\305\267\202k \306E\242B\240\210\307\310\"B\262\266\202r \301\311\312\"\262\211;\203a \211\242\236\203S C \242B\240\210\307\313\"B\262\266\202r \"\266\202r \"\266A\266\202\202 \210\314\307\315\"\"\262\211\203\311 \301A\203\224 @;\204\234 @\242\316>\203\251 \211A\262\242B\262\202\211 \317!\211\203\300 \211@\211!\262A\266\202\202\256 \210\320\237\321!\"\207\207" [cconv-var-classification nil #[514 "\211\242\236\205 C\242B\240\207" [] 5 "\n\n(fn ENV ARG)"] alist-get equal #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:captured+mutated 28 :unused 52)) car-safe make-closure #[257 "\301\300\302\300DDCE\207" [V0 let list] 5 "\n\n(fn BODY)"] cconv--warn-unused-msg "argument" #[257 "\301\300\302#\207" [V0 macroexp--warn-wrap lexical] 5 "\n\n(fn BODY)"] mapcar #[257 "\301\300\242\302#\207" [V0 cconv-convert nil] 5 "\n\n(fn FORM)"] (interactive declare :documentation) macroexp-progn append macroexp-unprogn] 15 (#$ . 3993)])
#@1040 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.
(VAR . nil): VAR is accessed normally. This is the same as VAR
being absent from ENV, but an explicit nil entry is useful
for shadowing VAR for a specific scope.
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 "CC\303\304\305\306\307\"\242\"\"\203 \310\311!\210\312\313:\203k\242\211\314>\203\243\243\211:\203{\211\242\243\304\242C\242C\211\203#\211@\304C:\204R \211C\262\202g AA\203_ \315\316#\210\211A@\240\210@\2119\204u \315\317\"\266\202\320!\204\201 \321!\203\212 \315\322\"\266\202\323\324B\304\211\325%\211\326\267\202\272\242@\327=\203\255 \242A@@\330=\204\261 \310\331!\210\242A@AA @@\232\204\302 \310\332!\210 @A\242A@\211A@\333\"\205\330 \nGY\266\204\203V \211A\242A\242A@\211A@\333\"AA\304
\334 BBB\242B\240\210\211\203?\211@\335\242\"\204\242B\240\210\211\242\236A\242\336=\2038\211>\2048\211\336EB\262A\266\202\202\210\327\330\337\242$BBD\266\210\202\310\n%\266\202\202\310\336E \242B\240\210\340\341\242\242\242#D\266\202\202\310\242\236\203\226C \242B\240\210\342\341\242\242\242#D\343\344\"\211\204\260\266\204\202\310\345\346#\266\204\202\310\n%\266\202\347=\203\375\242>\203\375\350\351\352\"!\353 \242#\240\210\354\n\242\"B\240\210\211D B\262 \210DB\262\347=\203\242\240\210\242\240\210\266A\266\202\202= \210\347=\204i\211\203h\211@\211\242\242>\203a\211\242\350\351\352\"!\353\242#\240\210\354\242\"B\240\210\211DB\262\266A\266\202\202,\210\237\305\306\355#\"BB\207:\203\232\242\211\330=\203\221$\207$\207$\207\211:\203\310\211\242\211\330=\203\274\243$\207\243$\207\211\356\267\202_\243\357\305\306\360 #\"B\207\243\211:\203-\211\242\211:\203*\211\242\211\330=\203'\243\211:\203$\211\242\243\211@\242\361=\205\341\211A\262\242A@
\242
\242#\362\242%\207\207\n\207 \207\207\363\364!\207\207\243\211:\203Z\211\242\243:\205W\341@\242\242#ABBB\207$\207\243\211:\203\361\211\242\243\211:\203\346\211\242\243\211\205\210\324CB\304\211\325%\211\365=\203\232\336E\f\242B\202\256\f\242\236\203\253C\f\242B\202\256\242\366=\205\271\343\344\"\341\242\242#\367 \203\322\345\346#\202\323\305\306\370%\n\"BBB\207$\207$\207\243\211:\203\211\242\243\371\341\n\242\n\242#\372\362\304
\242$F\207$\207\243\211\373G\374\"\374U\2036 \207\304\203\245\211A\262\242\211 \242\236A\206K\211\341\211A\262\242\242\242#9\203e\375E\202\236:\203\235\242\211\336=\203\227\243\211:\203\221\211\242\243\211\204\213\376E\266\202\202\222\266\202\202\222\262\202\230\262\202\236\211B\266\204\2027\211A\203\257\377\237B\207\211@\207\243\211:\203E\211\242\243\242\236A\201@ :\2038\242\211\334=\203+\243\211:\203\211\243\211:\203A@=\204\361\310\201A !\210\333\305\306\201B \"\"\305\306\201C #\"\"BB\207
\n\n%\207\f\f\n %\207 %\207\211\n\n%\207$\207\243\201D \305\201E \"B\207\207\243$\207\242\236A\206v\207" [cconv-var-classification cconv-freevars-alist cconv-liftwhen delq nil mapcar make-closure #[257 "\211A@\301=\205 \302AAA\300\242\"\207" [V0 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))) #[1028 "\300\301\302D\242\242#\303\304\305#\"BB\207" [funcall cconv-convert function mapcar make-closure #[257 "\302\300\242\301\242#\207" [V0 V1 cconv-convert] 5 "\n\n(fn FORM)"]] 11 "\n\n(fn ENV EXTEND FUN ARGS)"] #[1028 "\300\301\302#\"B\207" [mapcar make-closure #[257 "\302\300\242\301\242#\207" [V0 V1 cconv-convert] 5 "\n\n(fn FORM)"]] 10 "\n\n(fn ENV EXTEND FUNC FORMS)"] (let let*) byte-compile-warn "Malformed `%S' binding: %S" "attempt to let-bind nonvariable `%S'" booleanp keywordp "attempt to let-bind constant `%S'" #[1285 "\211\242\236\203 C\242B\240\210\300\242\242\242#\207" [cconv-convert] 9 "\n\n(fn ENV EXTEND NEW-ENV VALUE VAR)"] alist-get equal #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:lambda-candidate 155 :captured+mutated 359 :unused 388)) 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 cconv--convert-funcbody list cconv-convert ignore cconv--warn-unused-msg "variable" macroexp--warn-wrap lexical let* make-symbol format "closed-%s" cconv--remap-llv remq #[257 "\302\300\242\301\242#\207" [V0 V1 cconv-convert] 5 "\n\n(fn FORM)"] #s(hash-table size 13 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (cond 718 function 734 internal-make-closure 816 quote 820 defvar 823 defconst 823 condition-case 867 unwind-protect 1018 setq 1061 apply 1202 funcall 1202 interactive 1358 declare 1372)) cond #[257 "\302\303\304\300\301#\"\207" [V0 V1 mapcar make-closure #[257 "\302\300\242\301\242#\207" [V0 V1 cconv-convert] 5 "\n\n(fn FORM)"]] 6 "\n\n(fn BRANCH)"] :documentation cconv--convert-function byte-compile-report-error "Internal error in compiler: cconv called twice?" :captured+mutated :unused condition-case #[257 "\211@\304\305\306\300\303#A\"\302\307=\204 \211\202 \310\301\311\301DDCBBC\262B\207" [V0 V1 V2 V3 mapcar make-closure #[257 "\302\301\300\242#\207" [V0 V1 cconv-convert] 5 "\n\n(fn FORM)"] :captured+mutated let list] 7 "\n\n(fn HANDLER)"] unwind-protect :fun-body logand 1 setq setcar progn #[1285 "\300\301\302#B\"B\207" [mapcar make-closure #[257 "\302\300\242\301\242#\207" [V0 V1 cconv-convert] 5 "\n\n(fn ARG)"]] 11 "\n\n(fn ENV EXTEND CALLSYM FUN ARGS)"] (eq (cadr mapping) fun) #[257 "\211\300\242\236A\206 \211\211:\203$ \211\242\211\301=\203\"