This is bytecode.h in view mode; [Download] [Up]
/* Fundamental definitions for XEmacs Lisp interpreter.
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, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Synched up with: Not in FSF. */
#ifndef _XEMACS_BYTECODE_H_
#define _XEMACS_BYTECODE_H_
/* Meanings of slots in a Lisp_Bytecode.
This is kludgily used by `elt' and `concat' to pretend that bytecode
objects are really sequences and should be eliminated eventually...
*/
#define COMPILED_ARGLIST 0
#define COMPILED_BYTECODE 1
#define COMPILED_CONSTANTS 2
#define COMPILED_STACK_DEPTH 3
#define COMPILED_DOC_STRING 4
#define COMPILED_INTERACTIVE 5
#define COMPILED_DOMAIN 6
struct Lisp_Bytecode
{
struct lrecord_header lheader;
unsigned short maxdepth;
struct
{
unsigned int documentationp: 1;
unsigned int interactivep: 1;
/* Only used if I18N3, but always defined for simplicity. */
unsigned int domainp: 1;
} flags;
Lisp_Object bytecodes;
Lisp_Object constants;
Lisp_Object arglist;
/* This uses the minimal number of conses; see accessors in data.c. */
Lisp_Object doc_and_interactive;
};
extern Lisp_Object bytecode_documentation (struct Lisp_Bytecode *b);
extern Lisp_Object bytecode_interactive (struct Lisp_Bytecode *b);
extern Lisp_Object bytecode_domain (struct Lisp_Bytecode *b);
extern void set_bytecode_documentation (struct Lisp_Bytecode *b,
Lisp_Object);
DECLARE_LRECORD (bytecode, struct Lisp_Bytecode);
#define XBYTECODE(x) XRECORD (x, bytecode, struct Lisp_Bytecode)
#define XSETBYTECODE(x, p) XSETRECORD (x, p, bytecode)
#define BYTECODEP(x) RECORDP (x, bytecode)
#define CHECK_BYTECODE(x, i) CHECK_RECORD (x, bytecode)
/* 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 /* _XEMACS_BYTECODE_H_ */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.