;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!ǉ	\"*#!" [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HFEAB@=	\"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ˉ@;AA@:@@=A @=\"A\"@=A\"AA\"@BDB\"@@DBAA =\"\nBBB!\"#>&'(\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?=?66=AA!\"A@6?66!=!6>A@\"AA\"BB6=A\"B6=AAA\"A\nB6\n@6A@\"6=AAA@\"AA\"BB6A@\"6=A@\"8\"AAA\"BBB6>A\"B6=A@\"AA\"BB6=A@\"8\"\"BBB6>A!@\"AmA !>$%&!\"!+B)6A\"B6=!\"6>6=A@\"AABB6=A@\"AABB0\"=\"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) "9AA!\"@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\nAi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	@\"	Ao	@\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 #B C MD E MF G MH I MJ K Mʁ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	\nAA\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@9A@>8:8@=898>Ə@8A@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) "AAAA@AGAGUĪ#" [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@9A@>A@" [form (nil t)] 2] byte-optimize-zerop #[(form) "A@!\nA@E" [form eval byte-compile-delete-errors = 0] 3] zerop byte-optimize-and #[(form) "A?>!A@Av!EAAA@!" [form nil progn byte-optimize-and copy-sequence byte-optimize-predicate] 6] byte-optimize-or #[(form) "	>	!\"	AA@:@@=@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	B88Ț	8E8	DB8E	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@#Ap@#Ap*M#" [byte-optimize-funcall #[(form) "A@>	A@AAB)" [form fn 'function] 3] byte-optimize-apply #[(form) "A@GS8		=	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@AAB8@=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@U88DD!" [form (0 1) car 0 2 cdr byte-optimize-predicate] 4] nthcdr byte-optimize-nthcdr #[(form) "A@>!8	S!Dr)" [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]\nT" [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\"\"=TH=THTH\"\\)YZYXTHTH\"\\YXTH" [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>>JZZHZ\\	 B	B	@A=>H=;\"CB@CB@=SU BBBT! @@	ABAB	\"	AAU)		\"@A@ABB\"." [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	@=AA=@>A@6>	@=B	@>	A@>A:C:B:@	>@	B&@	B	>$@¡B	@=@=@>>#\nA\n\"\"B	@@ =@A =@B =>ՁC @A =B A AB#@A =B A \"B	@A =@B =@=A=@A =B A D>ՁE DAB&\"D)B	@=@F>@A =@G =A@A@?>ՁH #\nA\n\"\"@'>>ՁI AB$\">ՁI AB$堈B	@=\nA	@@=	A	rA	@A=	@@=J >K L\nA	=ALM PLj>ՁN LL&)	@	@¡	\nB	@O =@O =P >*>-./Q A@A@#!+R \">Ac\"B	@O =R \"S >*>-./T A@\"!+\"B	@U >@V >\n	W >XLYZ	A		@@O =Yj	@XBXL[ PLZTZSY	@@O =\\ 	@A\"	@K ]Z^ W_ Ձ` La QX]]E$>Ձb ZUK c ]]&)\n	,B	@d =@e>>Ձf %\n\nAB	@d =i@g >AWASU\n\"@h =\nB\">Ձf @ATB@h =\n@\nA@AU@h =\nA@K %B	@$>A>A@	@i >	=B	@=	@=B	>Ձj @	$	@k =k 	AB	@l >iA>A	@@m >i	@=	@@n @>@A>Ձo @$O 	8@=	p  	AB>Ձq @A@$A@	A@B	@=@=A>A	@@r >	@=	@@A@s t >>Ձu %@A\nB\n>Ձv #O 	8@=	p  	AB	A@\"B	@w =@=A\n>A>A	@@=	@AA=A@6>Ӂp  x>Ձy AA@	@AA@	@xA@xB&\nB\nAB	x	AB)B	@=B	@O =B	A>A	@A=	@@z >p  x>Ձ{ A@AA@	@	@@| AxBxA@&	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	@@=tA	@A=@	@@=	BT>Ձ $@d =@d =>ՁI d AA\\B$\"AA\\\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	-->	<deleted>" delq "  %s discard	-->	<deleted> discard" -1 "  %s discard	-->	discard discard" error "Optimizer error: too much on the stack" byte-goto-ops byte-goto "<deleted>" 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	-->	<deleted>" "  %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 <deleted> %s" "  %s <%d unreachable op%s> %s	-->	%s <deleted> %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 <skip>" (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]	-->	<deleted> goto <skip>" 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)
