Copyright (C) 2000-2012 |
GNU Info (elisp)Byte-Code ObjectsByte-Code Function Objects ========================== Byte-compiled functions have a special data type: they are "byte-code function objects". Internally, a byte-code function object is much like a vector; however, the evaluator handles this data type specially when it appears as a function to be called. The printed representation for a byte-code function object is like that for a vector, with an additional `#' before the opening `['. A byte-code function object must have at least four elements; there is no maximum number, but only the first six elements have any normal use. They are: ARGLIST The list of argument symbols. BYTE-CODE The string containing the byte-code instructions. CONSTANTS The vector of Lisp objects referenced by the byte code. These include symbols used as function names and variable names. STACKSIZE The maximum stack size this function needs. DOCSTRING The documentation string (if any); otherwise, `nil'. The value may be a number or a list, in case the documentation string is stored in a file. Use the function `documentation' to get the real documentation string (Note: Accessing Documentation). INTERACTIVE The interactive spec (if any). This can be a string or a Lisp expression. It is `nil' for a function that isn't interactive. Here's an example of a byte-code function object, in printed representation. It is the definition of the command `backward-sexp'. #[(&optional arg) "^H\204^F^@\301^P\302^H[!\207" [arg 1 forward-sexp] 2 254435 "p"] The primitive way to create a byte-code object is with `make-byte-code': - Function: make-byte-code &rest elements This function constructs and returns a byte-code function object with ELEMENTS as its elements. You should not try to come up with the elements for a byte-code function yourself, because if they are inconsistent, Emacs may crash when you call the function. Always leave it to the byte compiler to create these objects; it makes the elements consistent (we hope). You can access the elements of a byte-code object using `aref'; you can also use `vconcat' to create a vector with the same elements. automatically generated by info2www version 1.2.2.9 |