171 |
operand of an instruction. The vector contains all the constants, |
operand of an instruction. The vector contains all the constants, |
172 |
variable names and function names used by the function, except for |
variable names and function names used by the function, except for |
173 |
certain primitives that are coded as special instructions. |
certain primitives that are coded as special instructions. |
174 |
|
|
175 |
|
If the argument to @code{byte-compile} is a @code{lambda} expression, |
176 |
|
it returns the corresponding compiled code, but does not store |
177 |
|
it anywhere. |
178 |
@end defun |
@end defun |
179 |
|
|
180 |
@deffn Command compile-defun &optional arg |
@deffn Command compile-defun &optional arg |
236 |
When a @samp{.el} file has no corresponding @samp{.elc} file, |
When a @samp{.el} file has no corresponding @samp{.elc} file, |
237 |
@var{flag} says what to do. If it is @code{nil}, this command ignores |
@var{flag} says what to do. If it is @code{nil}, this command ignores |
238 |
these files. If @var{flag} is 0, it compiles them. If it is neither |
these files. If @var{flag} is 0, it compiles them. If it is neither |
239 |
@code{nil} nor 0, it asks the user whether to compile each such file. |
@code{nil} nor 0, it asks the user whether to compile each such file, |
240 |
|
and asks about each subdirectory as well. |
241 |
|
|
242 |
Interactively, @code{byte-recompile-directory} prompts for |
Interactively, @code{byte-recompile-directory} prompts for |
243 |
@var{directory} and @var{flag} is the prefix argument. |
@var{directory} and @var{flag} is the prefix argument. |
298 |
|
|
299 |
@item |
@item |
300 |
If you alter the compiled file (such as by compiling a new version), |
If you alter the compiled file (such as by compiling a new version), |
301 |
then further access to documentation strings in this file will give |
then further access to documentation strings in this file will |
302 |
nonsense results. |
probably give nonsense results. |
303 |
@end itemize |
@end itemize |
304 |
|
|
305 |
If your site installs Emacs following the usual procedures, these |
If your site installs Emacs following the usual procedures, these |
370 |
|
|
371 |
@item |
@item |
372 |
If you alter the compiled file (such as by compiling a new version), |
If you alter the compiled file (such as by compiling a new version), |
373 |
then trying to load any function not already loaded will yield nonsense |
then trying to load any function not already loaded will usually yield |
374 |
results. |
nonsense results. |
375 |
@end itemize |
@end itemize |
376 |
|
|
377 |
These problems will never happen in normal circumstances with |
These problems will never happen in normal circumstances with |
396 |
@end defvar |
@end defvar |
397 |
|
|
398 |
@defun fetch-bytecode function |
@defun fetch-bytecode function |
399 |
This immediately finishes loading the definition of @var{function} from |
If @var{function} is a byte-code function object, this immediately |
400 |
its byte-compiled file, if it is not fully loaded already. The argument |
finishes loading the byte code of @var{function} from its |
401 |
@var{function} may be a byte-code function object or a function name. |
byte-compiled file, if it is not fully loaded already. Otherwise, |
402 |
|
it does nothing. It always returns @var{function}. |
403 |
@end defun |
@end defun |
404 |
|
|
405 |
@node Eval During Compile |
@node Eval During Compile |
446 |
you must search for the function names. |
you must search for the function names. |
447 |
|
|
448 |
You can suppress the compiler warning for calling an undefined |
You can suppress the compiler warning for calling an undefined |
449 |
function @var{func} by conditionalizing the function call on a |
function @var{func} by conditionalizing the function call on an |
450 |
@code{fboundp} test, like this: |
@code{fboundp} test, like this: |
451 |
|
|
452 |
@example |
@example |
474 |
You can suppress any compiler warnings using the construct |
You can suppress any compiler warnings using the construct |
475 |
@code{with-no-warnings}: |
@code{with-no-warnings}: |
476 |
|
|
477 |
@defmac with-no-warnings body... |
@c This is implemented with a defun, but conceptually it is |
478 |
|
@c a special form. |
479 |
|
|
480 |
|
@defspec with-no-warnings body... |
481 |
In execution, this is equivalent to @code{(progn @var{body}...)}, |
In execution, this is equivalent to @code{(progn @var{body}...)}, |
482 |
but the compiler does not issue warnings for anything that occurs |
but the compiler does not issue warnings for anything that occurs |
483 |
inside @var{body}. |
inside @var{body}. |
484 |
|
|
485 |
We recommend that you use this construct around the smallest |
We recommend that you use this construct around the smallest |
486 |
possible piece of code. |
possible piece of code. |
487 |
@end defmac |
@end defspec |
488 |
|
|
489 |
@node Byte-Code Objects |
@node Byte-Code Objects |
490 |
@section Byte-Code Function Objects |
@section Byte-Code Function Objects |
587 |
point is left before the output. |
point is left before the output. |
588 |
|
|
589 |
The argument @var{object} can be a function name, a lambda expression |
The argument @var{object} can be a function name, a lambda expression |
590 |
or a byte-code object. |
or a byte-code object. If it is a lambda expression, @code{disassemble} |
591 |
|
compiles it and disassembles the resulting compiled code. |
592 |
@end deffn |
@end deffn |
593 |
|
|
594 |
Here are two examples of using the @code{disassemble} function. We |
Here are two examples of using the @code{disassemble} function. We |