e576bb | 2002-10-11 | Martin Nilsson | |
|
1b10db | 2002-10-08 | Martin Nilsson | |
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | |
|
0f39a4 | 1999-12-29 | Martin Stjernholm | | * IMEMBER: do not reset this member when pushing
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | * ZMEMBER: reset this member to zero when pushing
|
fb2f66 | 1998-11-05 | Fredrik Hübinette (Hubbe) | | * STACKMEMBER: Like IMEMBER, but is not allowed to become more when popping
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | *
* defining STRUCT defines the structures
* defining DECLARE creates global vars for saving linked list
|
c5c70a | 2008-04-10 | Henrik Grubbström (Grubba) | | * of these lists and the start sentinel.
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | * defining PUSH pushes the selected state(s) on the stack(s)
* defining POP pops the selected state(s) from the stack(s)
*
* define PROGRAM_STATE to select the program state
*/
|
71f3a2 | 1998-11-22 | Fredrik Hübinette (Hubbe) | | #ifdef PIKE_DEBUG
|
fb2f66 | 1998-11-05 | Fredrik Hübinette (Hubbe) | | #define DO_DEBUG_CODE(X) X
#else
#define DO_DEBUG_CODE(X)
#endif
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #ifdef STRUCT
|
c5c70a | 2008-04-10 | Henrik Grubbström (Grubba) | | #define IMEMBER(TYPE, FIELD, VALUE) TYPE FIELD;
#define STACKMEMBER(TYPE, FIELD, VALUE) TYPE FIELD;
#define ZMEMBER(TYPE, FIELD, VALUE) TYPE FIELD;
#define SNAME(STRUCT_TAG, VAR_NAME) \
struct STRUCT_TAG { struct STRUCT_TAG *previous;
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #define SEND };
#endif
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #ifdef EXTERN
#define IMEMBER(X,Y,Z)
#define STACKMEMBER(X,Y,z)
#define ZMEMBER(X,Y,Z)
|
a5a334 | 2006-07-05 | Martin Stjernholm | | #define SNAME(X,Y) PMOD_EXPORT extern struct X * Y;
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #define SEND
#endif
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #ifdef DECLARE
#define IMEMBER(X,Y,Z) Z,
|
18cec0 | 2014-05-22 | Per Hedbor | | #define STACKMEMBER(X,Y,Z) 0,
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #define ZMEMBER(X,Y,Z) Z,
#define SNAME(X,Y) \
extern struct X PIKE_CONCAT(Y,_base); \
struct X * Y = & PIKE_CONCAT(Y,_base); \
struct X PIKE_CONCAT(Y,_base) = { 0,
#define SEND };
#endif
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #ifdef PUSH
|
d7f762 | 2009-08-17 | Henrik Grubbström (Grubba) | | #define IMEMBER(X,Y,Z) (nEw->Y=Pike_compiler->Y);
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #define STACKMEMBER(X,Y,Z) (nEw->Y=Pike_compiler->Y);
|
d7f762 | 2009-08-17 | Henrik Grubbström (Grubba) | | #define ZMEMBER(X,Y,Z) /* Zapped by the MEMSET in SNAME() below. */;
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #define SNAME(X,Y) { \
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | struct X *nEw; \
nEw=ALLOC_STRUCT(X); \
|
d7f762 | 2009-08-17 | Henrik Grubbström (Grubba) | | MEMSET((char *)nEw, 0, sizeof(struct X)); \
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | nEw->previous=Pike_compiler;
#define SEND \
Pike_compiler=nEw; \
}
|
fb2f66 | 1998-11-05 | Fredrik Hübinette (Hubbe) | |
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #endif
#ifdef POP
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #define IMEMBER(X,Y,Z)
#define ZMEMBER(X,Y,Z)
|
fb2f66 | 1998-11-05 | Fredrik Hübinette (Hubbe) | |
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #define STACKMEMBER(X,Y,Z) DO_DEBUG_CODE( \
if(Pike_compiler->Y < oLd->Y) \
|
5aad93 | 2002-08-15 | Marcus Comstedt | | Pike_fatal("Stack " #Y " shrunk %ld steps compilation, currently: %p.\n", \
|
6f9590 | 2000-08-17 | Henrik Grubbström (Grubba) | | PTRDIFF_T_TO_LONG(oLd->Y - Pike_compiler->Y), Pike_compiler->Y); )
|
fb2f66 | 1998-11-05 | Fredrik Hübinette (Hubbe) | |
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #define SNAME(X,Y) { \
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | struct X *oLd=Pike_compiler->previous;
#define SEND \
free((char *)Pike_compiler); \
Pike_compiler=oLd; \
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | }
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | |
|
2066df | 1995-11-15 | Fredrik Hübinette (Hubbe) | | #define PCODE(X) X
#else
#define PCODE(X)
#endif
|
e021fe | 2008-04-14 | Henrik Grubbström (Grubba) | | #ifdef INIT
|
d7f762 | 2009-08-17 | Henrik Grubbström (Grubba) | | #define IMEMBER(X,Y,Z) (c->Y=Pike_compiler->Y);
|
e021fe | 2008-04-14 | Henrik Grubbström (Grubba) | | #define STACKMEMBER(X,Y,Z) (c->Y=Pike_compiler->Y);
|
d7f762 | 2009-08-17 | Henrik Grubbström (Grubba) | | #define ZMEMBER(X,Y,Z) /* Zapped by the MEMSET in SNAME() below. */;
|
e021fe | 2008-04-14 | Henrik Grubbström (Grubba) | | #define SNAME(X,Y) { \
|
d7f762 | 2009-08-17 | Henrik Grubbström (Grubba) | | MEMSET(c, 0, sizeof(struct X)); \
|
e021fe | 2008-04-14 | Henrik Grubbström (Grubba) | | c->previous = Pike_compiler;
#define SEND \
Pike_compiler = c; \
}
#endif
#ifdef EXIT
#define IMEMBER(X,Y,Z)
#define ZMEMBER(X,Y,Z)
#define STACKMEMBER(X,Y,Z) DO_DEBUG_CODE( \
if(c->Y < oLd->Y) \
Pike_fatal("Stack " #Y " shrunk %ld steps compilation, currently: %p.\n", \
PTRDIFF_T_TO_LONG(oLd->Y - c->Y), c->Y); )
#define SNAME(X,Y) { \
struct X *oLd = c->previous;
#define SEND \
if (Pike_compiler == c) { \
Pike_compiler=oLd; \
} else { \
struct program_state *tmp = Pike_compiler; \
while (tmp && (tmp->previous != c)) \
tmp = tmp->previous; \
if (tmp) tmp->previous = oLd; \
else Pike_fatal("Lost track of compiler_state %p\n", c); \
} \
}
#undef PCODE
#define PCODE(X) X
#endif
|
71f3a2 | 1998-11-22 | Fredrik Hübinette (Hubbe) | | #ifdef PIKE_DEBUG
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | #define STRMEMBER(X,Y) \
|
5aad93 | 2002-08-15 | Marcus Comstedt | | PCODE(if(Pike_compiler->X) Pike_fatal("Variable " #X " not deallocated properly.\n");) \
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | ZMEMBER(struct pike_string *,X,Y)
|
2066df | 1995-11-15 | Fredrik Hübinette (Hubbe) | | #else
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | #define STRMEMBER(X,Y) \
ZMEMBER(struct pike_string *,X,Y)
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #endif
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | SNAME(program_state,Pike_compiler)
|
ef24a8 | 2012-01-12 | Henrik Grubbström (Grubba) | | ZMEMBER(INT_TYPE,last_line,0)
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | STRMEMBER(last_file,0)
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | ZMEMBER(struct object *,fake_object,0)
ZMEMBER(struct program *,new_program,0)
ZMEMBER(struct program *,malloc_size_program,0)
ZMEMBER(node *,init_node,0)
ZMEMBER(INT32,last_pc,0)
ZMEMBER(int,num_parse_error,0)
ZMEMBER(struct compiler_frame *,compiler_frame,0)
ZMEMBER(INT32,num_used_modules,0)
IMEMBER(int,compiler_pass,0)
ZMEMBER(int,local_class_counter,0)
ZMEMBER(int,catch_level,0)
|
019b3d | 2000-07-09 | Henrik Grubbström (Grubba) | | ZMEMBER(INT32,current_modifiers,0)
|
a2af98 | 2014-03-01 | Henrik Grubbström (Grubba) | | ZMEMBER(node *,current_attributes,0)
|
c3cfe9 | 2000-07-10 | Henrik Grubbström (Grubba) | | ZMEMBER(int,varargs,0)
|
ae81d5 | 2007-10-05 | Henrik Grubbström (Grubba) | | ZMEMBER(int, num_create_args, 0)
|
d16515 | 2008-05-03 | Henrik Grubbström (Grubba) | | ZMEMBER(int, num_inherits, 0)
|
de1d7d | 2000-07-10 | Henrik Grubbström (Grubba) | | STRMEMBER(last_identifier,0)
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | ZMEMBER(struct mapping *,module_index_cache,0)
|
8174c8 | 2001-03-03 | Henrik Grubbström (Grubba) | | STACKMEMBER(struct pike_type **,type_stackp,type_stack)
STACKMEMBER(struct pike_type ***,pike_type_mark_stackp,pike_type_mark_stack)
|
342fef | 2000-08-23 | Fredrik Hübinette (Hubbe) | | ZMEMBER(INT32,parent_identifier,0)
|
ac8715 | 2000-09-25 | Fredrik Hübinette (Hubbe) | | IMEMBER(int, compat_major, PIKE_MAJOR_VERSION)
IMEMBER(int, compat_minor, PIKE_MINOR_VERSION)
|
cd2be3 | 2004-03-13 | Henrik Grubbström (Grubba) | | ZMEMBER(int, flags, 0)
|
eaa4da | 2001-10-04 | Fredrik Hübinette (Hubbe) | | ZMEMBER(struct compilation *,compiler,0)
|
44e340 | 2013-10-09 | Arne Goedeke | | ZMEMBER(struct block_allocator, node_allocator, BA_INIT_PAGES(sizeof(struct node_s), 2))
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | SEND
|
b8cda2 | 1997-01-21 | Fredrik Hübinette (Hubbe) | |
|
2066df | 1995-11-15 | Fredrik Hübinette (Hubbe) | | #undef PCODE
#undef STRMEMBER
|
5c8e89 | 1995-10-29 | Fredrik Hübinette (Hubbe) | | #undef IMEMBER
#undef ZMEMBER
#undef SNAME
#undef SEND
|
84cb1f | 1998-11-08 | Fredrik Hübinette (Hubbe) | | #undef STACKMEMBER
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | |
|
bad516 | 2000-06-23 | Fredrik Hübinette (Hubbe) | | #undef EXTERN
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | #undef STRUCT
|
e021fe | 2008-04-14 | Henrik Grubbström (Grubba) | | #undef EXIT
#undef INIT
|
b1f4eb | 1998-01-13 | Fredrik Hübinette (Hubbe) | | #undef PUSH
#undef POP
#undef DECLARE
|
fb2f66 | 1998-11-05 | Fredrik Hübinette (Hubbe) | | #undef DO_DEBUG_CODE
|