;ELC ;;; compiled by jwz@thalidomide on Tue Dec 21 00:25:36 1993 ;;; from file /th/jwz/emacs19/lisp/bytecomp/byte-optimize.el ;;; emacs version 19.9 Lucid (beta4). ;;; bytecomp version 2.21; 14-dec-93. ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "This file was compiled for Emacs 19.")) (byte-code "\"!!MM#" [require byte-compile "bytecomp" fboundp byte-compile-lapcode error "loading bytecomp got the wrong version of the compiler." byte-compile-log-lap-1 #[(format &rest args) "H!lj  \"*#!" [byte-code-vector 0 error "The old version of the disassembler is loaded. Reload new-bytecomp as well." byte-compile-log-1 apply format nil a c mapcar #[(arg) ":9!\"!O!@\"= >AA@ >A@A !\"O!=A=> #" [arg string-match "^byte-" symbol-name intern 5 nil c error "non-symbolic byte-op %s" TAG byte-goto-ops byte-constref-ops a "^byte-." constant const 0 (unbind call const) format "(%s %s)"] 4] args] 7] byte-compile-log-lap (macro . #[(format-string &rest args) " BBE" [and (memq byte-optimize-log '(t byte)) byte-compile-log-lap-1 format-string args] 5]) put inline byte-optimizer byte-optimize-inline-handler] 4) (fset 'byte-optimize-inline-handler #[(form) " A\"B" [progn mapcar #[(sexp) "9 \nA ! A K: @= !!)" [sexp fn byte-compile-function-environment fboundp byte-compile-macro-environment macro subrp byte-compile-inline-expand] 3] form] 4 "\ byte-optimize-handler for the `inline' special-form."]) (fset 'byte-inline-lapcode #[(lap) " " [lap byte-compile-output] 2 "\ splice the given lap code into the current instruction stream. If it has any labels in it, you're responsible for making sure there are no collisions, and that byte-compile-tag-number is reasonable after this is spliced in. the provided list is destroyed."]) (byte-code "MMM" [byte-compile-inline-expand #[(form) "@\nA ! K \" : @= A@! : @= A@ # 9 AB! ! H H H HFEAB @= \" AB*" [form name byte-compile-function-environment fboundp fn byte-compile-warn "attempt to inline %s before it was defined" autoload load error "file \"%s\" didn't define \"%s\"" byte-compile-inline-expand compiled-function-p lambda 0 byte-code 1 2 3 "%s is not a lambda"] 8] byte-compile-unfold-lambda #[(form &optional name) "\n@\nA ! H H H HFE A@ AAˉ  @;AA@:@@=A@= \"A\"@=A\"AA\"  @ BD B  \"@ @D B AA =\"\n  BBB!\"#>&'(\n!!!#!+!)." [name "anonymous lambda" form values lambda compiled-function-p 0 byte-code 1 2 3 nil bindings restp optionalp body arglist interactive &optional error "&optional found after &rest in %s" "nothing after &optional in %s" t &rest "nothing after &rest in %s" "multiple vars after &rest in %s" list byte-compile-warn "attempt to open-code %s with too few arguments" too-few "attempt to open-code %s with too many arguments" let progn newform byte-optimize byte-optimize-log (t source) 4 print-length print-level print-escape-newlines byte-compile-log-1 format " %s ==> %s" prin1-to-string] 8] byte-optimize-form-code-walker #[(form for-effect) ": 9?=?66 =AA!\"A@6 ?66 ! =!6 > A@\"AA \"BB6 = A\"B6 =AAA \"A\nB6\n@6A@ \"6 =AAA@ \"AA\"BB6A@ \"6 =A@\"8 \"AAA\"BBB6 > A \"B6 = A@\"AA \"BB6 = A@\"8 \" \"BBB6 > A!@ \"AmA !>$%&!\"!+ B)6 A\"B6 =!\"6 >6 = A@ \"AABB6 = A@\"AABB0\"= \" 9 = !\" N \n=!\" !>$%& !\"!+A\"B\" A\"B*" [form nil tmp fn for-effect byte-compile-delete-errors t quote byte-compile-warn "malformed quote form: %s" prin1-to-string compiled-function-p lambda byte-compile-unfold-lambda (let let*) mapcar #[(binding) "9AA!\"@A@\"D" [binding byte-compile-warn "malformed let binding: %s" prin1-to-string byte-optimize-form nil] 4] byte-optimize-body cond #[(clause) ":@\"A \"B!\"" [clause byte-optimize-form nil byte-optimize-body for-effect byte-compile-warn "malformed cond form: %s" prin1-to-string] 4] progn byte-optimize-form prog1 prog2 2 (save-excursion save-restriction) with-output-to-temp-buffer if 3 (and or) reverse backwards byte-optimize byte-optimize-log (t source) 4 print-length print-level print-escape-newlines byte-compile-log-1 format " all subforms of %s called for effect; deleted" interactive "misplaced interactive spec: %s" (defun defmacro function condition-case save-window-excursion) unwind-protect catch macroexpand byte-compile-macro-environment mocklisp "%s is a malformed function" side-effect-free error-free "%s called for effect" " %s called for effect; deleted" append (nil)] 7]] 2) (fset 'byte-optimize-form #[(form &optional for-effect) " \n\"É : @9\n @N @N != >̉  ! !#!+ \n\" *" [byte-optimize-form-code-walker form for-effect nil new opt byte-for-effect-optimizer byte-optimizer byte-optimize byte-optimize-log (t source) t 4 print-length print-level print-escape-newlines byte-compile-log-1 format " %s ==> %s" prin1-to-string byte-optimize-form] 7 "\ The source-level pass of the optimizer."]) (byte-code "MM" [byte-optimize-body #[(forms all-for-effect) " A @ @ \" \n B A_ ," [forms nil new fe result rest all-for-effect byte-optimize-form] 5] byte-compile-trueconstp (macro . #[(form) "\nD\nDED\nDDC\nECF" [cond consp form eq car 'quote not symbolp t] 6])] 2) (fset 'byte-optimize-associative-math #[(form) " A\n\n@\n@ B\n@ B\nAi A @ @ \" A @ B @E @ \" +" [nil form rest constants args apply] 5 "\ If the function is being called with constant numeric args, evaluate as much as possible at compile-time. This optimizer assumes that the function is associative, like + or *."]) (fset 'byte-optimize-nonassociative-math #[(form) "A@AA@A@AA @@\n @\" Ao @\n BB\n*" [form rest constant] 4 "\ If the function is being called with constant numeric args, evaluate as much as possible at compile-time. This optimizer assumes that the function is nonassociative, like - or /."]) (byte-code "MMMMM#MMMMM#####################################M@MʁA#BCMDEMFGMHIMJKMʁLˁB#ʁMˁD#ʁNˁF#ʁOˁH#ʁPˁJ#ʁQˁR#ʁSˁR#ʁTˁR#" [byte-optimize-delay-constants-math #[(form start fun) "S \nAA\n@t !S \nA\n@u\n@ B\nàj \" \"C)C )" [start form rest nil constants copy-sequence delq apply fun] 4] byte-optimize-plus #[(form) " # > !\" Aɏ AA A@ " [byte-optimize-delay-constants-math form 1 + 0 delq copy-sequence nil (eval form) ((error form))] 4] byte-optimize-minus #[(form) " # !@= !AA \" A@ A@Z 8E !\") 8= A@ AAA A@= @ AAB !" [byte-optimize-delay-constants-math form 2 + reverse 3 last 0 copy-sequence delq - byte-optimize-predicate] 7] byte-optimize-multiply #[(form) " #A‡ AA A@ !@= AD = !\" = !\"D = A\"> !\" A@9x @ @E )" [byte-optimize-delay-constants-math form 1 * reverse last 0 progn delq copy-sequence -1 - 2 t mapcar symbolp +] 6] byte-compile-butlast #[(form) " !A" [reverse form] 2] put byte-optimizer byte-compile-inline-expand byte-optimize-divide #[(form) " # AA!@ U  !A) A@ @ A@ AA !A)BB AA A@ A@= AA# =  !A) A@D )" [byte-optimize-delay-constants-math form 2 * reverse last 1 nil 0 append (progn) (0) -1 - 3] 5] byte-optimize-logmumble #[(form) " @# > @= AB !\" = > !\" !" [byte-optimize-delay-constants-math form 1 byte-optimize-predicate 0 logand progn delq copy-sequence logior -1] 5] byte-optimize-binary-predicate #[(form) "A@:A@@=A@9A@>8:8@=898>Ə@8A@E" [form quote (nil t) 2 nil (byte-code "\n!D" [quote eval form] 3) ((error form))] 3] byte-optimize-predicate #[(form) " A\n \n@:\n@@=\n@9?\n@>\nA` ȏ *" [t form rest ok quote (nil t) nil (byte-code "\n!D" [quote eval form] 3) ((error form))] 4] byte-optimize-identity #[(form) "AAAA@AGAGUĪ#" [form byte-compile-warn "identity called with %d arg%s, but requires 1" 1 "" "s"] 5] identity + * - / max byte-optimize-associative-math min = eq eql equal string= string-equal < > <= >= 1+ 1- not null memq consp listp symbolp stringp string< string-lessp logand logior logxor lognot car cdr car-safe cdr-safe quote byte-optimize-quote #[(form) "A@:A@9A@>A@" [form (nil t)] 2] byte-optimize-zerop #[(form) "A@!\nA@E" [form eval byte-compile-delete-errors = 0] 3] zerop byte-optimize-and #[(form) "A?>!A@Av!EAAA@!" [form nil progn byte-optimize-and copy-sequence byte-optimize-predicate] 6] byte-optimize-or #[(form) " > !\"  AA @: @@= @9 @=b ! @ >U AA ! A@)" [nil form delq copy-sequence rest quote t byte-optimize-predicate] 5] byte-optimize-cond #[(form) "\nA \n!\"o\nA>\n!\"\n A @: @@= @9 @=_ \nA= @A @AA @AB @A@ @@ A\n! @\n>()\n=\nA @: @A @@\n@\nAAB!E\n)\n" [nil rest form delq copy-sequence quote t progn cond clauses or byte-optimize-cond] 6] byte-optimize-if #[(form) "A@: @= 9 =8 B88Ț 8E8 DB8E E)" [form clause quote t 2 4 progn 3 (nil) if not nil] 6] byte-optimize-while #[(form) "A@" [form] 1] and or cond if while /= byte-compile-negation-optimizer atom nlistp] 4) (byte-code "MM####M#M#M@#Ap@#Ap*M#" [byte-optimize-funcall #[(form) "A@> A@AAB)" [form fn 'function] 3] byte-optimize-apply #[(form) "A@GS8 = A@<AA!A\nD A@\") !\"̮*" [form last fn quote reverse butlast funcall mapcar #[(x) " D" [quote x] 2] byte-compile-warn "last arg to apply can't be a literal atom: %s" prin1-to-string nil] 4] put funcall byte-optimizer apply let byte-optimize-letX let* #[(form) "A@AAB8@=A@\"\"#A@!  A! @A@F)" [form progn 2 3 let append (progn) mapcar car cdr (nil) reverse binds let* nil] 7] nth byte-optimize-nth #[(form) "A@>A@U88DD!" [form (0 1) car 0 2 cdr byte-optimize-predicate] 4] nthcdr byte-optimize-nthcdr #[(form) "A@>!8 S!Dr)" [form count (0 1 2) byte-optimize-predicate 2 natnump cdr] 4] (% * + / /= 1+ < <= = > >= append aref ash assoc assq boundp buffer-file-name buffer-local-variables buffer-modified-p buffer-substring capitalize car cdr concat coordinates-in-window-p copy-marker count-lines documentation downcase elt fboundp featurep file-directory-p file-exists-p file-locked-p file-name-absolute-p file-newer-than-file-p file-readable-p file-symlink-p file-writable-p format get get-buffer get-buffer-window getenv get-file-buffer length logand logior lognot logxor lsh marker-buffer max member memq min mod next-window nth nthcdr previous-window rassq regexp-quote reverse string< string= string-lessp string-equal substring user-variable-p window-buffer window-edges window-height window-hscroll window-width zerop) (arrayp atom bobp bolp buffer-end buffer-list buffer-size buffer-string bufferp char-or-string-p commandp cons consp current-buffer dot dot-marker eobp eolp eq eql equal get-largest-window identity integerp integer-or-marker-p interactive-p keymapp list listp make-marker mark mark-marker markerp minibuffer-window natnump nlistp not null numberp one-window-p point point-marker processp selected-window sequencep stringp subrp symbolp syntax-table-p vector vectorp windowp) side-effect-and-error-free-fns side-effect-free-fns side-effect-free t error-free byte-compile-splice-in-already-compiled-code #[(form) "> ! A@ 8#! 8\\\n]\nT" [byte-optimize (t lap) byte-compile-normal-call form byte-inline-lapcode byte-decompile-bytecode-1 2 t byte-compile-depth 3 byte-compile-maxdepth] 5] byte-code byte-compile (byte-constant byte-constant2 byte-varref byte-varset byte-varbind) byte-constref-ops] 5) (fset 'disassemble-offset #[nil " W\"\" =TH =THTH\"\\ ) Y Z  Y XTHTH\"\\YXTH" [op byte-nth logand 7 tem 248 6 ptr bytes lsh 8 byte-constant byte-constant2 byte-goto-if-not-nil-else-pop byte-rel-goto byte-insertN] 4 "\ Don't call this!"]) (fset 'byte-decompile-bytecode #[(bytes constvec) "\"+" [nil 0 byte-compile-tag-number byte-compile-variables byte-compile-constants byte-decompile-bytecode-1 bytes constvec] 3 "\ Turns BYTECODE into lapcode, refering to CONSTVEC."]) (fset 'byte-decompile-bytecode-1 #[(bytes constvec &optional make-splicable) "G‰ \n     U H  H>>JZZH Z\\  B B @A=>H= ; \"  CB@  CB@=  SU  BBB T !@@  ABAB  \" AAU)  \"@A@A BB\". " [bytes 0 nil retcount endtag tmp lap offset op tags tag optr ptr length disassemble-offset byte-code-vector byte-goto-ops byte-rel-goto-ops byte-rel-goto byte-goto 127 byte-compile-make-tag byte-constant2 byte-constant byte-constref-ops constvec assoc byte-compile-constants byte-compile-variables make-splicable byte-return rest delq error "optimizer error: missed tags %s" mapcar cdr] 12 "\ As byte-decompile-bytecode, but updates byte-compile-{constants, variables, tag-number}. If the optional 3rd arg is true, then `return' opcodes are replaced with `goto's destined for the end of the code."]) (byte-code " B\n" [TAG byte-goto-ops byte-tagref-ops (byte-goto-if-nil byte-goto-if-not-nil byte-goto-if-nil-else-pop byte-goto-if-not-nil-else-pop) byte-conditional-ops (byte-constant byte-dup byte-symbolp byte-consp byte-stringp byte-listp byte-numberp byte-integerp byte-eq byte-equal byte-not byte-cons byte-list1 byte-list2 byte-interactive-p "Byte-codes that can be moved past an unbind.") byte-after-unbind-ops (byte-constant byte-dup byte-symbolp byte-consp byte-stringp byte-listp byte-integerp byte-numberp byte-eq byte-equal byte-not byte-car-safe byte-cdr-safe byte-cons byte-list1 byte-list2 byte-point byte-point-max byte-point-min byte-following-char byte-preceding-char byte-current-column byte-eolp byte-eobp byte-bolp byte-bobp byte-current-buffer byte-interactive-p) byte-compile-side-effect-and-error-free-ops (byte-varref byte-nth byte-memq byte-car byte-cdr byte-length byte-aref byte-symbol-value byte-get byte-concat2 byte-concat3 byte-sub1 byte-add1 byte-eqlsign byte-gtr byte-lss byte-leq byte-geq byte-diff byte-negate byte-plus byte-max byte-min byte-mult byte-char-after byte-char-syntax byte-buffer-substring byte-string= byte-string< byte-nthcdr byte-elt byte-member byte-assq byte-quo byte-rem) byte-compile-side-effect-free-ops] 2) (defconst byte-boolean-vars '(abbrevs-changed abbrev-all-caps inverse-video visible-bell check-protected-fields no-redraw-on-reenter cursor-in-echo-area noninteractive stack-trace-on-error debug-on-error debug-on-quit debug-on-next-call insert-default-directory vms-stmlf-recfm indent-tabs-mode meta-flag load-in-progress defining-kbd-macro completion-auto-help completion-ignore-case enable-recursive-minibuffers print-escape-newlines delete-exited-processes parse-sexp-ignore-comments words-include-escapes pop-up-windows reset-terminal-on-clear truncate-partial-width-windows mode-line-inverse-video) "\ DEFVAR_BOOL variables. Giving these any non-nil value sets them to t. If this does not enumerate all DEFVAR_BOOL variables, the byte-optimizer may generate incorrect code.") (fset 'byte-optimize-lapcode #[(lap &optional for-effect) "  \n    K  =>!\n \n`\n@\nA@\n8@=@> @JH \nA\n U>\"\"\"B  U>\"\"B  U>\"٠¡B !B @$>A=@=\" @'>ى ¡8\">*>-./A@A@ !A@%!+ B @=AA=@>A@6> @=B  @> A@>A:C:B:@ >@ B&@ B >$@¡ B @=@=@>># \nA\n\"\"B @@=@A=@B=>ՁC@A=BAAB#@A=BA\" B @A=@B=@=A=@A=BAD>ՁEDAB&\"D )B @=@F>@A=@G=A@A@?>ՁH#\nA\n\"\"@'>>ՁIAB$\">ՁIAB$堈 B @=\nA @@= A rA @A= @@=J>KL\nA =ALMPLj>ՁNLL&)  @ @¡ \nB @O=@O=P>*>-./QA@A@#!+R\">Ac\" B @O=R\"S>*>-./TA@\"!+\" B @U>@V>\n W>XLYZ A  @@O=Yj @XBXL[PLZTZSY @@O=\\ @A\" @K]Z^W_Ձ`LaQX]]E$>ՁbZUKc]]&)\n , B @d=@e>>Ձf%\n\nA B @d=i@g>AWASU\n\"@h=\nB\">Ձf@ATB@h=\n@\nA@AU@h=\nA@K% B @$>A>A@ @i> =B @= @=B >Ձj@ $ @k=k A B @l>iA>A @@m>i @= @@n@>@A>Ձo@$O 8@= p  AB>Ձq@A@$A@ A@ B @=@=A>A @@r> @= @@A@st>>Ձu%@A\nB\n>Ձv#O 8@= p  AB A@\" B @w=@=A\n>A>A @@= @AA=A@6>Ӂp x>ՁyAA@ @AA@ @xA@xB& \nB\nAB x AB)  B @=B @O=B A>A @A= @@z>p x>Ձ{A@AA@ @ @@|AxBxA@& x AB @@G=\n:C:B:@B\nAB @@}>A@) \nA\nK:~\n\n\n@\nA@@>A=A~>A~B~A:>A:B:@=\n8@=A\n8@=@>>Ձ&\nAA@AB\nAB ~\n@>\n  A @@=tA @A=@ @@= BT>Ձ$@d=@d=>ՁIdAA\\B$ \"AA\\\nA\nY  \\. " [nil first-time 0 byte-compile-delete-errors byte-compile-side-effect-free-ops byte-compile-side-effect-and-error-free-ops side-effect-free tmp3 tmp2 tmp rest add-depth keep-going off2 lap2 off1 lap1 off0 lap0 byte-optimize-log (t byte) byte-compile-log-lap-1 " ---- next pass" lap 2 byte-discard t byte-stack+-info 1 " %s discard --> " delq " %s discard --> discard" -1 " %s discard --> discard discard" error "Optimizer error: too much on the stack" byte-goto-ops byte-goto "" byte-goto-always-pop-ops "Depth conflict at tag %d" (t byte) byte-optimize (t source) 4 print-length print-level print-escape-newlines byte-compile-log-1 format " (goto %s) %s: --> %s %s:" prin1-to-string byte-varref (byte-varset byte-varbind) byte-boolean-vars byte-constant (byte-constant byte-dup) (nil t) byte-compile-constants " %s %s %s --> %s %s %s" " %s %s --> dup %s" byte-dup (byte-varset byte-varbind) " dup %s discard --> %s" byte-not byte-goto-if-nil byte-goto-if-not-nil " not %s --> %s" inverse " %s %s %s: --> %s %s:" byte-conditional-ops byte-goto-if-nil-else-pop " %s %s --> " " %s %s --> %s" (t byte) "" str " dup" " %s%s %s --> %s%s dup" TAG (t byte) " adjascent tags %d and %d merged" rassq (t byte) " unused tag %d removed" (byte-goto byte-return) (TAG nil) (t lap) deleted opt-p i " %s" "%d:" tagstr 6 apply " %s" " %s --> %s %s" " %s <%d unreachable op%s> %s --> %s %s" "s" byte-unbind byte-after-unbind-ops " %s %s --> %s %s" (byte-varbind byte-save-excursion byte-save-restriction) byte-varbind (byte-goto byte-return) " %s [%s] --> %s" byte-return (byte-goto-if-nil-else-pop byte-goto-if-not-nil-else-pop) (byte-discard byte-goto-if-nil byte-goto-if-not-nil byte-goto-if-nil-else-pop byte-goto-if-not-nil-else-pop) ((byte-goto-if-nil-else-pop byte-goto-if-nil) (byte-goto-if-not-nil-else-pop byte-goto-if-not-nil)) " %s-else-pop [%s] --> %s" byte-compile-make-tag " %s [%s] --> %s " (byte-discard byte-goto-if-nil byte-goto-if-not-nil byte-goto-if-nil-else-pop byte-goto-if-not-nil-else-pop) (byte-goto-if-nil byte-goto-if-nil-else-pop) (byte-goto-if-not-nil byte-goto-if-not-nil-else-pop) " %s goto [%s] --> %s %s" " %s goto [%s] --> goto " byte-varset newtag " %s: %s ... %s %s --> %s: %s %s: ... %s %s %s" (byte-goto byte-goto-if-nil byte-goto-if-not-nil byte-goto-if-nil-else-pop) "%s %s: ... %s: %s --> %s ... %s:" ((byte-goto-if-nil . byte-goto-if-not-nil) (byte-goto-if-not-nil . byte-goto-if-nil) (byte-goto-if-nil-else-pop . byte-goto-if-not-nil-else-pop) (byte-goto-if-not-nil-else-pop . byte-goto-if-nil-else-pop)) (byte-goto-if-nil-else-pop byte-goto-if-not-nil byte-goto-if-nil byte-goto-if-not-nil byte-goto byte-goto) byte-compile-variables byte-constref-ops (byte-varbind byte-varset) " %s %s %s --> %s dup %s" (byte-constant byte-varref) " %s [dup/%s]... %s --> %s dup..." byte-compile-maxdepth] 14 "\ Simple peephole optimizer. LAP is both modified and returned."]) (provide 'byte-optimize)