4.3BSD/usr/contrib/emacs/lisp/bytecomp.elc


(defvar byte-compile-constnum -1 "Transfer vector index of last constant allocated.")

(defvar byte-compile-constants nil "Alist describing contents to put in transfer vector.
Each element is (CONTENTS . INDEX)")

(defvar byte-compile-macro-environment nil "Alist of (MACRONAME . DEFINITION) macros defined in the file
which is being compiled.")

(defvar byte-compile-pc 0 "Index in byte string to store next opcode at.")

(defvar byte-compile-output nil "Alist describing contents to put in byte code string.
Each element is (INDEX . VALUE)")

(defvar byte-compile-depth 0 "Current depth of execution stack.")

(defvar byte-compile-maxdepth 0 "Maximum depth of execution stack.")

(defconst byte-varref 8 "Byte code opcode for variable reference.")

(defconst byte-varset 16 "Byte code opcode for setting a variable.")

(defconst byte-varbind 24 "Byte code opcode for binding a variable.")

(defconst byte-call 32 "Byte code opcode for calling a function.")

(defconst byte-unbind 40 "Byte code opcode for unbinding special bindings.")

(defconst byte-constant 192 "Byte code opcode for reference to a constant.")

(defconst byte-constant-limit 64 "Maximum index usable in  byte-constant  opcode.")

(defconst byte-constant2 129 "Byte code opcode for reference to a constant with vector index >= 0100.")

(defconst byte-goto 130 "Byte code opcode for unconditional jump")

(defconst byte-goto-if-nil 131 "Byte code opcode for pop value and jump if it's nil.")

(defconst byte-goto-if-not-nil 132 "Byte code opcode for pop value and jump if it's not nil.")

(defconst byte-goto-if-nil-else-pop 133 "Byte code opcode for examine top-of-stack, jump and don't pop it if it's nil,
otherwise pop it.")

(defconst byte-goto-if-not-nil-else-pop 134 "Byte code opcode for examine top-of-stack, jump and don't pop it if it's not nil,
otherwise pop it.")

(defconst byte-return 135 "Byte code opcode for pop value and return it from byte code interpreter.")

(defconst byte-discard 136 "Byte code opcode to discard one value from stack.")

(defconst byte-dup 137 "Byte code opcode to duplicate the top of the stack.")

(defconst byte-save-excursion 138 "Byte code opcode to make a binding to record the buffer, point and mark.")

(defconst byte-save-window-excursion 139 "Byte code opcode to make a binding to record entire window configuration.")

(defconst byte-save-restriction 140 "Byte code opcode to make a binding to record the current buffer clipping restrictions.")

(defconst byte-catch 141 "Byte code opcode for catch.  Takes, on stack, the tag and an expression for the body.")

(defconst byte-unwind-protect 142 "Byte code opcode for unwind-protect.  Takes, on stack, an expression for the body
and an expression for the unwind-action.")

(defconst byte-condition-case 143 "Byte code opcode for condition-case.  Takes, on stack, the variable to bind,
an expression for the body, and a list of clauses.")

(defconst byte-temp-output-buffer-setup 144 "Byte code opcode for entry to with-output-to-temp-buffer.
Takes, on stack, the buffer name.
Binds standard-output and does some other things.
Returns with temp buffer on the stack in place of buffer name.")

(defconst byte-temp-output-buffer-show 145 "Byte code opcode for exit from with-output-to-temp-buffer.
Expects the temp buffer on the stack underneath value to return.
Pops them both, then pushes the value back on.
Unbinds standard-output and makes the temp buffer visible.")

(defconst byte-nth 56)

(defconst byte-symbolp 57)

(defconst byte-consp 58)

(defconst byte-stringp 59)

(defconst byte-listp 60)

(defconst byte-eq 61)

(defconst byte-memq 62)

(defconst byte-not 63)

(defconst byte-car 64)

(defconst byte-cdr 65)

(defconst byte-cons 66)

(defconst byte-list1 67)

(defconst byte-list2 68)

(defconst byte-list3 69)

(defconst byte-list4 70)

(defconst byte-length 71)

(defconst byte-aref 72)

(defconst byte-aset 73)

(defconst byte-symbol-value 74)

(defconst byte-symbol-function 75)

(defconst byte-set 76)

(defconst byte-fset 77)

(defconst byte-get 78)

(defconst byte-substring 79)

(defconst byte-concat2 80)

(defconst byte-concat3 81)

(defconst byte-concat4 82)

(defconst byte-sub1 83)

(defconst byte-add1 84)

(defconst byte-eqlsign 85)

(defconst byte-gtr 86)

(defconst byte-lss 87)

(defconst byte-leq 88)

(defconst byte-geq 89)

(defconst byte-diff 90)

(defconst byte-negate 91)

(defconst byte-plus 92)

(defconst byte-max 93)

(defconst byte-min 94)

(defconst byte-point 96)

(defconst byte-mark 97)

(defconst byte-goto-char 98)

(defconst byte-insert 99)

(defconst byte-point-max 100)

(defconst byte-point-min 101)

(defconst byte-char-after 102)

(defconst byte-following-char 103)

(defconst byte-preceding-char 104)

(defconst byte-current-column 105)

(defconst byte-indent-to 106)

(defconst byte-scan-buffer 107)

(defconst byte-eolp 108)

(defconst byte-eobp 109)

(defconst byte-bolp 110)

(defconst byte-bobp 111)

(defconst byte-current-buffer 112)

(defconst byte-set-buffer 113)

(defconst byte-read-char 114)

(defconst byte-set-mark 115)

(defconst byte-interactive-p 116)

(defun byte-recompile-directory (directory &optional arg) "\
Recompile every .el file in DIRECTORY that needs recompilation.
This is if a .elc file exists but is older than the .el file.
If the .elc file does not exist, offer to compile the .el file
only if a prefix argument has been specified." (interactive "DByte recompile directory: 
P") (byte-code "ň !!	d	@\"L	@!?L	@\"LP!BP\"LLQ!Z!
T[ň	A

Urׂs#+" [directory files count source arg nil save-some-buffers expand-file-name directory-files 0 string-match ".el$" auto-save-file-name-p file-exists-p "c" file-newer-than-file-p y-or-n-p "Compile " "? " byte-compile-file message "Done (Total of %d file%s compiled)" 1 "" "s"] 15))

(defun file-newer-than-file-p (file1 file2) "\
Return t if FILE1 modified more recently than FILE2." (byte-code "	!\"@!\"@@
@V'@
@U'A@
A@V*" [mtime1 file1 mtime2 file2 nthcdr 5 file-attributes] 7))

(defun byte-compile-file (filename) "\
Compile a file of Lisp code named FILENAME into a file of byte code.
The output file's name is made by appending \"c\" to the end of FILENAME." (interactive "fByte compile file: ") (byte-code "Ĉ!\"!!	q !b
q  	q!!H!7m?)a	!!
\"3
qb#!!!!!cĈhdP#p!	!)-" [filename inbuffer outbuffer byte-compile-macro-environment nil case-fold-search sexp t expand-file-name message "Compiling %s..." get-buffer-create " *Compiler Input*" " *Compiler Output*" erase-buffer insert-file-contents 1 emacs-lisp-mode skip-chars-forward " 	
" looking-at ";" forward-line read print byte-compile-file-form search-forward "
(" "defun \\|autoload " forward-sexp 3 " " "\"" forward-char "\\
" write-region "c" kill-buffer] 25))

(defun byte-compile-file-form (form) (byte-code "!>A@	\"@=Z8#
+

\"A	!7	K!=A	BBA!B?U\"Vň{
i
AAB\"t	AABBBA!B*" [form name tem byte-compile-macro-environment filename nil noninteractive car-safe (defun defmacro) assq defun message "Compiling %s (%s)..." 1 setcdr fboundp macro byte-compile-lambda "Compiling %s..." lambda defmacro] 12))

(defun byte-compile (funname) "\
Byte-compile the definition of function FUNNAME (a symbol)." (byte-code "!K!=K!MŇ" [funname fboundp car-safe lambda byte-compile-lambda nil] 5))

(defun byte-compile-lambda (fun) (byte-code "	AA\"A@;AƈAB!C
I
A@;4
A@?;
B
A@!DBJƈ	A=?]	8B^ƈ	@	A@BB+" [bodyptr fun int newbody assq interactive nil byte-compile-top-level progn 2] 6))

(defun byte-compile-top-level (form) (byte-code "					
!!		?T	@BB	A	*
!\"
T	\"o@A@@IAY\"@@@AIAx
F." [byte-compile-constants nil byte-compile-constnum byte-compile-pc byte-compile-depth byte-compile-maxdepth byte-compile-output byte-compile-string byte-compile-vector vars form i 0 nreverse byte-compile-find-vars -1 byte-compile-form byte-compile-out byte-return make-vector make-string byte-code] 10))

(defun byte-compile-find-vars (form) (byte-code "	
!)" [all-vars nil form byte-compile-find-vars-1] 2))

(defun byte-compile-find-vars-1 (form) (byte-code "9	>?	B‚:?\"@=)
@>A@AA@9W@	>?S@	BT‚|@:{@@	>?p@@	Bqˆ@A@!|ˆA8@!A*@=A

@@!A)
A)\"=?!@9A@!A)" [form all-vars nil binds body clauses byte-compile-macro-environment t quote (let let*) byte-compile-find-vars-1 cond macroexpand] 9))

(defun byte-compile-form (form) (byte-code "	\"9\"Y:?!Y@N
/
\"X@!AH@!A7)AG\"AGZ)
T]" [form byte-compile-macro-environment handler copy byte-compile-depth byte-compile-maxdepth macroexpand byte-compile-variable-ref byte-varref byte-compile-constant byte-compile funcall byte-compile-push-constant byte-compile-form byte-compile-out byte-call] 10))

(defun byte-compile-variable-ref (base-op var) (byte-code "	
\"A\"	!\"!)" [data var byte-compile-constants base-op assq byte-compile-out error format "Variable %s seen on pass 2 of byte compiler but not pass 1" prin1-to-string] 7))

(defun byte-compile-constant (const) (byte-code "	;	
\"	
\"A!*	TB
B!)" [data const byte-compile-constants byte-compile-constnum assoc assq byte-compile-out-const] 6))

(defun byte-compile-push-constant (const) (byte-code "!	
T]" [const byte-compile-maxdepth byte-compile-depth byte-compile-constant] 4))

(put (quote point) (quote byte-compile) (quote byte-compile-no-args))

(put (quote point) (quote byte-opcode) (quote byte-point))

(put (quote dot) (quote byte-compile) (quote byte-compile-no-args))

(put (quote dot) (quote byte-opcode) (quote byte-point))

(put (quote mark) (quote byte-compile) (quote byte-compile-no-args))

(put (quote mark) (quote byte-opcode) (quote byte-mark))

(put (quote point-max) (quote byte-compile) (quote byte-compile-no-args))

(put (quote point-max) (quote byte-opcode) (quote byte-point-max))

(put (quote point-min) (quote byte-compile) (quote byte-compile-no-args))

(put (quote point-min) (quote byte-opcode) (quote byte-point-min))

(put (quote dot-max) (quote byte-compile) (quote byte-compile-no-args))

(put (quote dot-max) (quote byte-opcode) (quote byte-point-max))

(put (quote dot-min) (quote byte-compile) (quote byte-compile-no-args))

(put (quote dot-min) (quote byte-opcode) (quote byte-point-min))

(put (quote following-char) (quote byte-compile) (quote byte-compile-no-args))

(put (quote following-char) (quote byte-opcode) (quote byte-following-char))

(put (quote preceding-char) (quote byte-compile) (quote byte-compile-no-args))

(put (quote preceding-char) (quote byte-opcode) (quote byte-preceding-char))

(put (quote current-column) (quote byte-compile) (quote byte-compile-no-args))

(put (quote current-column) (quote byte-opcode) (quote byte-current-column))

(put (quote eolp) (quote byte-compile) (quote byte-compile-no-args))

(put (quote eolp) (quote byte-opcode) (quote byte-eolp))

(put (quote eobp) (quote byte-compile) (quote byte-compile-no-args))

(put (quote eobp) (quote byte-opcode) (quote byte-eobp))

(put (quote bolp) (quote byte-compile) (quote byte-compile-no-args))

(put (quote bolp) (quote byte-opcode) (quote byte-bolp))

(put (quote bobp) (quote byte-compile) (quote byte-compile-no-args))

(put (quote bobp) (quote byte-opcode) (quote byte-bobp))

(put (quote current-buffer) (quote byte-compile) (quote byte-compile-no-args))

(put (quote current-buffer) (quote byte-opcode) (quote byte-current-buffer))

(put (quote read-char) (quote byte-compile) (quote byte-compile-no-args))

(put (quote read-char) (quote byte-opcode) (quote byte-read-char))

(put (quote symbolp) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote symbolp) (quote byte-opcode) (quote byte-symbolp))

(put (quote consp) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote consp) (quote byte-opcode) (quote byte-consp))

(put (quote stringp) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote stringp) (quote byte-opcode) (quote byte-stringp))

(put (quote listp) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote listp) (quote byte-opcode) (quote byte-listp))

(put (quote not) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote not) (quote byte-opcode) (quote byte-not))

(put (quote null) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote null) (quote byte-opcode) (quote byte-not))

(put (quote car) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote car) (quote byte-opcode) (quote byte-car))

(put (quote cdr) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote cdr) (quote byte-opcode) (quote byte-cdr))

(put (quote length) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote length) (quote byte-opcode) (quote byte-length))

(put (quote symbol-value) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote symbol-value) (quote byte-opcode) (quote byte-symbol-value))

(put (quote symbol-function) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote symbol-function) (quote byte-opcode) (quote byte-symbol-function))

(put (quote 1+) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote 1+) (quote byte-opcode) (quote byte-add1))

(put (quote 1-) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote 1-) (quote byte-opcode) (quote byte-sub1))

(put (quote goto-char) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote goto-char) (quote byte-opcode) (quote byte-goto-char))

(put (quote char-after) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote char-after) (quote byte-opcode) (quote byte-char-after))

(put (quote set-buffer) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote set-buffer) (quote byte-opcode) (quote byte-set-buffer))

(put (quote set-mark) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote set-mark) (quote byte-opcode) (quote byte-set-mark))

(put (quote interactive-p) (quote byte-compile) (quote byte-compile-one-arg))

(put (quote interactive-p) (quote byte-opcode) (quote byte-interactive-p))

(put (quote eq) (quote byte-compile) (quote byte-compile-two-args))

(put (quote eq) (quote byte-opcode) (quote byte-eq))

(put (quote memq) (quote byte-compile) (quote byte-compile-two-args))

(put (quote memq) (quote byte-opcode) (quote byte-memq))

(put (quote cons) (quote byte-compile) (quote byte-compile-two-args))

(put (quote cons) (quote byte-opcode) (quote byte-cons))

(put (quote aref) (quote byte-compile) (quote byte-compile-two-args))

(put (quote aref) (quote byte-opcode) (quote byte-aref))

(put (quote set) (quote byte-compile) (quote byte-compile-two-args))

(put (quote set) (quote byte-opcode) (quote byte-set))

(put (quote fset) (quote byte-compile) (quote byte-compile-two-args))

(put (quote fset) (quote byte-opcode) (quote byte-fset))

(put (quote =) (quote byte-compile) (quote byte-compile-two-args))

(put (quote =) (quote byte-opcode) (quote byte-eqlsign))

(put (quote <) (quote byte-compile) (quote byte-compile-two-args))

(put (quote <) (quote byte-opcode) (quote byte-lss))

(put (quote >) (quote byte-compile) (quote byte-compile-two-args))

(put (quote >) (quote byte-opcode) (quote byte-gtr))

(put (quote <=) (quote byte-compile) (quote byte-compile-two-args))

(put (quote <=) (quote byte-opcode) (quote byte-leq))

(put (quote >=) (quote byte-compile) (quote byte-compile-two-args))

(put (quote >=) (quote byte-opcode) (quote byte-geq))

(put (quote get) (quote byte-compile) (quote byte-compile-two-args))

(put (quote get) (quote byte-opcode) (quote byte-get))

(put (quote nth) (quote byte-compile) (quote byte-compile-two-args))

(put (quote nth) (quote byte-opcode) (quote byte-nth))

(put (quote aset) (quote byte-compile) (quote byte-compile-three-args))

(put (quote aset) (quote byte-opcode) (quote byte-aset))

(put (quote substring) (quote byte-compile) (quote byte-compile-three-args))

(put (quote substring) (quote byte-opcode) (quote byte-substring))

(put (quote scan-buffer) (quote byte-compile) (quote byte-compile-three-args))

(put (quote scan-buffer) (quote byte-opcode) (quote byte-scan-buffer))

(defun byte-compile-no-args (form) (byte-code "@NJ\"" [form byte-compile-out byte-opcode 0] 3))

(defun byte-compile-one-arg (form) (byte-code "A@!	S@NJ\"" [form byte-compile-depth byte-compile-form (quote nil) byte-compile-out byte-opcode 0] 4))

(defun byte-compile-two-args (form) (byte-code "A@!8!	Z@NJ\"" [form byte-compile-depth byte-compile-form (quote nil) 2 (quote nil) byte-compile-out byte-opcode 0] 5))

(defun byte-compile-three-args (form) (byte-code "A@!8!8!	Z@NJ\"" [form byte-compile-depth byte-compile-form (quote nil) 2 (quote nil) 3 (quote nil) byte-compile-out byte-opcode 0] 6))

(put (quote list) (quote byte-compile) (quote byte-compile-list))

(defun byte-compile-list (form) (byte-code "	GU
!AW>	A)@!ASZZ8J\")A	!)" [len form nil args byte-compile-depth 1 byte-compile-constant 6 byte-compile-form byte-compile-out 2 (byte-list1 byte-list2 byte-list3 byte-list4) 0 byte-compile-normal-call] 5))

(put (quote concat) (quote byte-compile) (quote byte-compile-concat))

(defun byte-compile-concat (form) (byte-code "	GU!QU	!QWJ	A
5
@!
A$SZZ8J\")QQ	!)" [len form args byte-compile-depth t 1 byte-compile-form "" 2 byte-compile-normal-call 6 byte-compile-out 3 (byte-concat2 byte-concat3 byte-concat4) 0] 6))

(put (quote -) (quote byte-compile) (quote byte-compile-minus))

(defun byte-compile-minus (form) (byte-code "	GU	A@!
Z\"BU;	A@!	8!
Z\"B
B	!)" [len form byte-compile-depth byte-negate byte-diff t 2 byte-compile-form 1 byte-compile-out 0 3 byte-compile-normal-call] 7))

(put (quote +) (quote byte-compile) (quote byte-compile-maybe-two-args))

(put (quote +) (quote byte-opcode) (quote byte-plus))

(put (quote max) (quote byte-compile) (quote byte-compile-maybe-two-args))

(put (quote max) (quote byte-opcode) (quote byte-max))

(put (quote min) (quote byte-compile) (quote byte-compile-maybe-two-args))

(put (quote min) (quote byte-opcode) (quote byte-min))

(defun byte-compile-maybe-two-args (form) (byte-code "	GU&	A@!	8!
Z	@NJ\")	!)" [len form byte-compile-depth 3 byte-compile-form 2 byte-compile-out byte-opcode 0 byte-compile-normal-call] 5))

(defun byte-compile-normal-call (form) (byte-code "@!A		@!	A)AG\"
AGZ" [form copy byte-compile-depth byte-compile-push-constant byte-compile-form byte-compile-out byte-call] 5))

(put (quote function) (quote byte-compile) (quote byte-compile-function-form))

(defun byte-compile-function-form (form) (byte-code "A@!!" [form byte-compile-constant byte-compile-lambda] 3))

(put (quote indent-to) (quote byte-compile) (quote byte-compile-indent-to))

(defun byte-compile-indent-to (form) (byte-code "	GU	A@!
Z\"	!)" [len form byte-compile-depth byte-indent-to 2 byte-compile-form 1 byte-compile-out 0 byte-compile-normal-call] 4))

(put (quote insert) (quote byte-compile) (quote byte-compile-insert))

(defun byte-compile-insert (form) (byte-code "	GW,	A
(
@!Z\"
A)/	!)" [len form args byte-compile-depth byte-insert 3 byte-compile-form 1 byte-compile-out 0 byte-compile-normal-call] 5))

(put (quote quote) (quote byte-compile) (quote byte-compile-quote))

(defun byte-compile-quote (form) (byte-code "A@!" [form byte-compile-constant] 2))

(put (quote setq) (quote byte-compile) (quote byte-compile-setq))

(defun byte-compile-setq (form) (byte-code "	A8A@!AA?\"\"
T]#ȈS@\"AA)" [args form byte-compile-maxdepth byte-compile-depth byte-compile-form byte-compile-out byte-dup 0 nil byte-compile-variable-ref byte-varset] 6))

(put (quote let) (quote byte-compile) (quote byte-compile-let))

(defun byte-compile-let (form) (byte-code "	A@#@9
!@A@!A)	A@!GZS@9D@\"J@@\"A2)	AA!	A@G\"" [varlist form nil byte-compile-depth byte-compile-push-constant byte-compile-form reverse byte-compile-variable-ref byte-varbind byte-compile-body byte-compile-out byte-unbind] 9))

(put (quote let*) (quote byte-compile) (quote byte-compile-let*))

(defun byte-compile-let* (form) (byte-code "	A@=@9
!@A@!S@9.@\"4@@\"A)	AA!	A@G\"" [varlist form nil byte-compile-depth byte-compile-push-constant byte-compile-form byte-compile-variable-ref byte-varbind byte-compile-body byte-compile-out byte-unbind] 8))

(put (quote save-excursion) (quote byte-compile) (quote byte-compile-save-excursion))

(defun byte-compile-save-excursion (form) (byte-code "\"A!\"" [form byte-compile-out byte-save-excursion 0 byte-compile-body byte-unbind 1] 5))

(put (quote save-restriction) (quote byte-compile) (quote byte-compile-save-restriction))

(defun byte-compile-save-restriction (form) (byte-code "\"A!\"" [form byte-compile-out byte-save-restriction 0 byte-compile-body byte-unbind 1] 5))

(put (quote with-output-to-temp-buffer) (quote byte-compile) (quote byte-compile-with-output-to-temp-buffer))

(defun byte-compile-with-output-to-temp-buffer (form) (byte-code "A@!\"AA!\"	S" [form byte-compile-depth byte-compile-form byte-compile-out byte-temp-output-buffer-setup 0 byte-compile-body byte-temp-output-buffer-show] 6))

(put (quote progn) (quote byte-compile) (quote byte-compile-progn))

(defun byte-compile-progn (form) (byte-code "A!" [form byte-compile-body] 2))

(put (quote interactive) (quote byte-compile) (quote byte-compile-noop))

(defun byte-compile-noop (form) (byte-code "!" [nil byte-compile-constant] 2))

(defun byte-compile-body (body) (byte-code "?	!++@!A \"
SA" [body nil byte-compile-depth byte-compile-constant byte-compile-form byte-compile-discard] 6))

(put (quote prog1) (quote byte-compile) (quote byte-compile-prog1))

(defun byte-compile-prog1 (form) (byte-code "A@!AAAA! ć" [form byte-compile-form byte-compile-body byte-compile-discard nil] 4))

(put (quote prog2) (quote byte-compile) (quote byte-compile-prog2))

(defun byte-compile-prog2 (form) (byte-code "A@! 8!AAA\"AAA! #Ň" [form byte-compile-form byte-compile-discard 2 byte-compile-body nil] 6))

(defun byte-compile-discard nil (byte-code "\"S" [byte-compile-depth byte-compile-out byte-discard 0] 3))

(put (quote if) (quote byte-compile) (quote byte-compile-if))

(defun byte-compile-if (form) (byte-code "AA?, A@!	\"
S8!
S	!)a  A@!\"
S8!
S	\"!AAA!	!*" [form donetag byte-compile-depth elsetag byte-compile-make-tag byte-compile-form byte-compile-goto byte-goto-if-nil-else-pop 2 byte-compile-out-tag byte-goto-if-nil byte-goto byte-compile-body] 15))

(put (quote cond) (quote byte-compile) (quote byte-compile-cond))

(defun byte-compile-cond (form) (byte-code "AA!
‡" [form byte-compile-cond-1 nil] 2))

(defun byte-compile-cond-1 (clauses) (byte-code "A?, @@!@A(	\"
S@A!	!)Z  @@!\"
S@A!	\"!A!	!*" [clauses donetag byte-compile-depth elsetag byte-compile-make-tag byte-compile-form byte-compile-goto byte-goto-if-nil-else-pop byte-compile-body byte-compile-out-tag byte-goto-if-nil byte-goto byte-compile-cond-1] 15))

(put (quote and) (quote byte-compile) (quote byte-compile-and))

(defun byte-compile-and (form) (byte-code " 
A	?!S=	=	@!S	A?0!4\"	A*" [failtag args form t byte-compile-depth byte-compile-make-tag byte-compile-form byte-compile-out-tag byte-compile-goto byte-goto-if-nil-else-pop] 8))

(put (quote or) (quote byte-compile) (quote byte-compile-or))

(defun byte-compile-or (form) (byte-code " 
A	?!8	8	@!S	A?+!/\"	A*" [wintag args form nil byte-compile-depth byte-compile-make-tag byte-compile-constant byte-compile-form byte-compile-out-tag byte-compile-goto byte-goto-if-not-nil-else-pop] 8))

(put (quote while) (quote byte-compile) (quote byte-compile-while))

(defun byte-compile-while (form) (byte-code "  AA	!A@!\"AA! 	\"!+" [endtag looptag args form byte-compile-make-tag byte-compile-out-tag byte-compile-form byte-compile-goto byte-goto-if-nil-else-pop byte-compile-body byte-compile-discard byte-goto] 10))

(put (quote catch) (quote byte-compile) (quote byte-compile-catch))

(defun byte-compile-catch (form) (byte-code "A@!AAB!!	Z\"" [form byte-compile-depth byte-compile-form byte-compile-push-constant byte-compile-top-level progn 2 byte-compile-out byte-catch 0] 6))

(put (quote save-window-excursion) (quote byte-compile) (quote byte-compile-save-window-excursion))

(defun byte-compile-save-window-excursion (form) (byte-code "AB!C!	S\"" [form byte-compile-depth byte-compile-push-constant byte-compile-top-level progn byte-compile-out byte-save-window-excursion 0] 5))

(put (quote unwind-protect) (quote byte-compile) (quote byte-compile-unwind-protect))

(defun byte-compile-unwind-protect (form) (byte-code "AAB!C!	S\"A@!	S\"" [form byte-compile-depth byte-compile-push-constant byte-compile-top-level progn byte-compile-out byte-unwind-protect 0 byte-compile-form byte-unbind 1] 7))

(put (quote condition-case) (quote byte-compile) (quote byte-compile-condition-case))

(defun byte-compile-condition-case (form) (byte-code "A@!8!!AAA	3	@@AB!D
B)	A
!!*Z\"" [form clauses compiled-clauses clause byte-compile-depth byte-compile-push-constant byte-compile-top-level 2 nil progn nreverse 3 byte-compile-out byte-condition-case 0] 9))

(defun byte-compile-make-tag nil (byte-code "B" [nil] 2))

(defun byte-compile-out-tag (tag) (byte-code "	@	
\"@
\"A)" [uses tag byte-compile-pc setcar byte-compile-store-goto] 5))

(defun byte-compile-goto (opcode tag) (byte-code "\"	@!
	@\"	
	@B\"
\\" [opcode tag byte-compile-pc byte-compile-out 0 integerp byte-compile-store-goto setcar 2] 7))

(defun byte-compile-store-goto (at-pc to-pc) (byte-code "	
\"BB	T
\"BB" [byte-compile-output at-pc to-pc logand 255 lsh -8] 5))

(defun byte-compile-out (opcode offset) (byte-code "!	W	\\!9	W&\\!	!9\\!	\"!	\"!" [opcode offset eval 6 byte-compile-out-1 256 7 logand 255 lsh -8] 11))

(defun byte-compile-out-const (offset) (byte-code "	W
\\!!\"!\"!" [offset byte-constant-limit byte-constant byte-constant2 byte-compile-out-1 logand 255 lsh -8] 8))

(defun byte-compile-out-1 (code) (byte-code "	
BB	T" [byte-compile-output byte-compile-pc code] 2))

(defun batch-byte-compile nil "\
Runs byte-compile-file on the files remaining on the command line.
Must be used only with -batch, and kills emacs on completion.
Each file will be processed even if an error occurred previously.
For example, invoke \"emacs -batch -f batch-byte-compile $emacs/ ~/*.el\"" (byte-code "?!ˆ
@!!s@!o@\"P@!?P@@\"P
P!P

P\"e
!?ab‚fˆA#*@!?ˆA!	Ղ!)" [noninteractive error nil command-line-args files source t "batch-byte-compile is to be used only with -batch" file-directory-p expand-file-name directory-files string-match ".el$" auto-save-file-name-p file-exists-p "c" file-newer-than-file-p batch-byte-compile-file message "Done" kill-emacs 1 0] 14))

(defun batch-byte-compile-file (file) (byte-code "ŏ" [err file t nil (byte-code "!	" [file t byte-compile-file] 2) ((error (byte-code "A
Ă	@NA!$
" [err file nil message ">>Error occurred processing %s: %s (%s)" ">>Error occurred processing %s: %s" error-message prin1-to-string] 6)))] 3))