home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Otherware
/
Otherware_1_SB_Development.iso
/
amiga
/
utility
/
text
/
emacs.lha
/
emacs
/
lisp
/
bytecomp.elc
< prev
next >
Wrap
Text File
|
1992-02-21
|
29KB
|
677 lines
(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 ═!╬PëàO ╧!âD ╨\"éO àO ╤╥╙Q!àZ ╘!êTëê Aëêé ê╒╓╫Uâq ╪é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ê╒╓!ê╫╪!àL ┘╙!êé; êm?)àe ┌ !ëê█▄!
\"êé7 ê
qê╙bê▌▐─╚#àÆ ╫▀!àÄ αß!ê╒Γ!ê╫π!àÄ Σ╙!êσcêél ê╙bê▌▐─╚#à╨ ╫µ!à╠ `S ─τΦÅà╦ ╒Γ!ê èΘ ê`)=à╦ ╫π!à╦ Σ╙!êσc)êéû ê╚
Ω╙dδ!∞P#)êφp!êφ !)-ê╚ç" [filename inbuffer outbuffer byte-compile-macro-environment nil case-fold-search sexp emacs-lisp-mode-hook 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 "<?â