4.4BSD/usr/src/contrib/emacs-18.57/lisp/bytecomp.elc


(provide (quote byte-compile))

(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-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-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-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 "ˆ !#	c	@!?O	@\"O!PO
!D
\"OOQ!Z!T	AUq؂r#," [directory files nil count source dest arg save-some-buffers expand-file-name directory-files "\\.el\\'" 0 auto-save-file-name-p file-name-sans-versions "c" file-exists-p 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 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#!!!!!chb#!`S珅! `)=!!c)	d!P#)p!	!)-LJ" [filename inbuffer outbuffer byte-compile-macro-environment nil case-fold-search sexp t this-line vms-stmlf-recfm 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 "\\
" "defvar \\|defconst " (byte-code "!" [t forward-sexp 3] 2) ((error (byte-code "" [nil] 1))) beginning-of-line write-region file-name-sans-versions "c" kill-buffer] 32))

(defun byte-compile-file-form (form) (byte-code "<?
@>A@	\"@=_8#
4
\"J	!@	K!=J	BBA!B?[\"
n
AAB\"y	AABBBA!B*@=!" [form name tem byte-compile-macro-environment filename nil noninteractive t (defun defmacro) assq defun message "Compiling %s (%s)..." 1 setcdr fboundp car-safe macro byte-compile-lambda "Compiling %s..." lambda defmacro require eval] 11))

(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] 5))

(defun byte-compile-lambda (fun) (byte-code "	AA\"AAA@;AAB!C
H
A@;6
A@?=
D
A@!DB	A=?X	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 "
	!

@
A!		UT	@BB	A	4+!\"
T\"@A@@IAo\"@@@AIA
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 temp i form 0 -1 byte-compile-find-vars nreverse byte-compile-form byte-compile-out byte-return make-vector make-string byte-code] 10))

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

(defun byte-compile-find-vars-1 (form) (byte-code "9	>?	B:? @='@>A@!AA
@9U@	>?R@	By@:y@@	>?k@@	B@@@A@!D\"A:@
\"BB+@=@=@=8!\"BB@=A!
@\"\"A
B*\"=?!@9@A\"B\"" [form all-vars binds body tail clauses byte-compile-macro-environment t quote (let let*) copy-sequence setcar byte-compile-find-vars-1 mapcar function condition-case catch 1 nthcdr 2 cond macroexpand] 15))

(defun byte-compile-form (form) (byte-code "	\"=!=!9+\":?7!@9?@!={@8A
j
@@DB
AAQ!@AABB!+~!@N\"!)T]" [form byte-compile-macro-environment vars vals result t handler byte-compile-maxdepth byte-compile-depth macroexpand nil byte-compile-constant byte-compile-variable-ref byte-varref car-safe lambda 1 byte-compile-form let nreverse byte-compile-normal-call byte-compile funcall] 14))

(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))

(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 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 eq) (quote byte-compile) (quote byte-compile-two-args))

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

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

(put (quote eql) (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))

(defun byte-compile-no-args (form) (byte-code "G\"!@NJ\"" [form /= 1 byte-compile-normal-call byte-compile-out byte-opcode 0] 5))

(defun byte-compile-one-arg (form) (byte-code "G\"!!A@!	S@NJ\"" [form byte-compile-depth /= 2 byte-compile-normal-call byte-compile-form byte-compile-out byte-opcode 0] 6))

(defun byte-compile-two-args (form) (byte-code "G\"!(A@!8!	Z@NJ\"" [form byte-compile-depth /= 3 byte-compile-normal-call byte-compile-form 2 byte-compile-out byte-opcode 0] 7))

(defun byte-compile-three-args (form) (byte-code "G\"!.A@!8!8!	Z@NJ\"" [form byte-compile-depth /= 4 byte-compile-normal-call byte-compile-form 2 3 byte-compile-out byte-opcode 0] 8))

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

(defun byte-compile-substring (form) (byte-code "GVGW!88!8\"!8,!	Z
\"" [form byte-compile-depth byte-substring 4 2 byte-compile-normal-call byte-compile-form 1 (quote nil) 3 (quote nil) byte-compile-out 0] 7))

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

(defun byte-compile-interactive-p (form) (byte-code "\"" [byte-interactive-p byte-compile-out 0] 3))

(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!MU	!MWJ	A
5
@!
A$SZZ8J\")M	!)" [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\">U;	A@!	8!
Z\">	!)" [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))

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

(defun byte-compile-function-form (form) (byte-code "A@98DD!A@!!" [form t byte-compile-form symbol-function quote 1 byte-compile-constant byte-compile-lambda] 5))

(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 setq-default) (quote byte-compile) (quote byte-compile-setq-default))

(defun byte-compile-setq-default (form) (byte-code "8D\"BB!" [form byte-compile-form set-default quote 1 nthcdr 2] 6))

(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 "	A;8A@!AA?#\"
T]S@\"AA>!)" [args form byte-compile-maxdepth byte-compile-depth nil byte-compile-form byte-compile-out byte-dup 0 byte-compile-variable-ref byte-varset byte-compile-constant] 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] 4))

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

(defun byte-compile-prog2 (form) (byte-code "A@! 8!AAAAAA! " [form byte-compile-form byte-compile-discard 2 byte-compile-body] 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 "\"?- A@!	\"
S8!
S	!)b  A@!\"
S8!
S	\"!AAA!	!*" [form donetag byte-compile-depth elsetag nthcdr 3 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] 16))

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

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

(defun byte-compile-cond-1 (clauses) (byte-code "@@=@@!=@A!A?F @@!@AB
\"S@A!
!)  @@!@A?e
\"S}\"S@A!
\"!A!
!*" [clauses t donetag byte-compile-depth elsetag car-safe quote byte-compile-body byte-compile-make-tag byte-compile-form byte-compile-goto byte-goto-if-nil-else-pop byte-compile-out-tag byte-goto-if-not-nil-else-pop byte-goto-if-nil byte-goto byte-compile-cond-1] 18))

(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 "?!@!!r@!n@\"X@!?X@@\"X
!PX!X
\"e
!?eljA\"+}@!?}ljA!	ׂ!)" [noninteractive error nil command-line-args-left files source dest 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-name-sans-versions "c" file-exists-p file-newer-than-file-p batch-byte-compile-file message "Done" kill-emacs 1 0] 15))

(defun batch-byte-compile-file (file) (byte-code "" [err (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))