/usr/lib/xemacs-21.4.24/x86_64-linux-gnu/include/bytecode.h is in xemacs21-bin 21.4.24-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | /* Definitions for bytecode interpretation and compiled-function objects.
Copyright (C) 1985, 1986, 1987, 1992, 1993 Free Software Foundation, Inc.
This file is part of XEmacs.
XEmacs is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
XEmacs is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with XEmacs; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Synched up with: Not in FSF. */
/* Authorship:
FSF: long ago.
Mly: rewrote for 19.8, properly abstracted.
Jon Reid: some changes for I18N3 (domain, etc), for 19.8.
*/
#ifndef INCLUDED_bytecode_h_
#define INCLUDED_bytecode_h_
/* Meanings of slots in a Lisp_Compiled_Function.
Don't use these! For backward compatibility only. */
#define COMPILED_ARGLIST 0
#define COMPILED_INSTRUCTIONS 1
#define COMPILED_CONSTANTS 2
#define COMPILED_STACK_DEPTH 3
#define COMPILED_DOC_STRING 4
#define COMPILED_INTERACTIVE 5
#define COMPILED_DOMAIN 6
/* It doesn't make sense to have this and also have load-history */
/* #define COMPILED_FUNCTION_ANNOTATION_HACK */
struct Lisp_Compiled_Function
{
struct lrecord_header lheader;
unsigned short stack_depth;
unsigned short specpdl_depth;
struct
{
unsigned int documentationp: 1;
unsigned int interactivep: 1;
/* Only used if I18N3, but always defined for simplicity. */
unsigned int domainp: 1;
/* Non-zero if this bytecode came from a v18 or v19 file.
We need to Ebolify the `assoc', `delq', etc. functions. */
unsigned int ebolified: 1;
} flags;
Lisp_Object instructions;
Lisp_Object constants;
Lisp_Object arglist;
/* This uses the minimal number of conses; see accessors in data.c. */
Lisp_Object doc_and_interactive;
#ifdef COMPILED_FUNCTION_ANNOTATION_HACK
/* Something indicating where the bytecode came from */
Lisp_Object annotated;
#endif
};
typedef struct Lisp_Compiled_Function Lisp_Compiled_Function;
Lisp_Object run_byte_code (Lisp_Object compiled_function_or_instructions, ...);
Lisp_Object compiled_function_arglist (Lisp_Compiled_Function *f);
Lisp_Object compiled_function_instructions (Lisp_Compiled_Function *f);
Lisp_Object compiled_function_constants (Lisp_Compiled_Function *f);
int compiled_function_stack_depth (Lisp_Compiled_Function *f);
Lisp_Object compiled_function_documentation (Lisp_Compiled_Function *f);
Lisp_Object compiled_function_annotation (Lisp_Compiled_Function *f);
Lisp_Object compiled_function_domain (Lisp_Compiled_Function *f);
Lisp_Object compiled_function_interactive (Lisp_Compiled_Function *f);
void set_compiled_function_documentation (Lisp_Compiled_Function *f,
Lisp_Object new_doc);
Lisp_Object funcall_compiled_function (Lisp_Object fun,
int nargs, Lisp_Object args[]);
void optimize_compiled_function (Lisp_Object compiled_function);
DECLARE_LRECORD (compiled_function, Lisp_Compiled_Function);
#define XCOMPILED_FUNCTION(x) XRECORD (x, compiled_function, \
Lisp_Compiled_Function)
#define XSETCOMPILED_FUNCTION(x, p) XSETRECORD (x, p, compiled_function)
#define COMPILED_FUNCTIONP(x) RECORDP (x, compiled_function)
#define CHECK_COMPILED_FUNCTION(x) CHECK_RECORD (x, compiled_function)
#define CONCHECK_COMPILED_FUNCTION(x) CONCHECK_RECORD (x, compiled_function)
extern Lisp_Object Qbyte_code;
/* total 1765 internal 101 doc-and-int 775 doc-only 389 int-only 42 neither 559
no doc slot, no int slot
overhead : (* 1765 0) = 0
doc-and-int (args . (doc . int)): (* 775 4) = 3100
doc-only (args . doc) : (* 389 2) = 778
int-only (args . int) : (* 42 2) = 84
neither args : (* 559 0) = 0 = 3962
combined
overhead : (* 1765 1) = 1765
doc-and-int (doc . int) : (* 775 2) = 1550
doc-only doc : (* 389 0) = 0
int-only int : (* 42 0) = 0
neither - : (* 559 0) = 0 = 3315
both
overhead : (* 1765 2) = 3530
doc-and-int - : (* 775 0) = 0
doc-only - : (* 389 0) = 0
int-only - : (* 42 0) = 0
neither - : (* 559 0) = 0 = 3530
*/
#endif /* INCLUDED_bytecode_h_ */
|