e576bb2002-10-11Martin Nilsson /* || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information. */
24ddc71998-03-28Henrik Grubbström (Grubba) 
5267b71995-08-09Fredrik Hübinette (Hubbe) #ifndef LAS_H #define LAS_H
06d7701997-01-28Fredrik Hübinette (Hubbe) #include "global.h"
5267b71995-08-09Fredrik Hübinette (Hubbe) #include "svalue.h"
2d10fb2016-12-29Arne Goedeke #include "buffer.h"
44e3402013-10-09Arne Goedeke #include "block_allocator.h"
5267b71995-08-09Fredrik Hübinette (Hubbe)  #define MAX_GLOBAL_VARIABLES 1000
cc5e511998-06-05Fredrik Hübinette (Hubbe) typedef void (*c_fun)(INT32);
5267b71995-08-09Fredrik Hübinette (Hubbe) 
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) 
4ba3b31999-12-26Henrik Grubbström (Grubba) /* Flags used by yytype_error() */ #define YYTE_IS_WARNING 1
1afbc42008-02-06Martin Stjernholm struct compiler_frame; /* Avoid gcc warning. */
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) int islocal(struct pike_string *str);
35e4612008-01-16Henrik Grubbström (Grubba) int low_add_local_name(struct compiler_frame *frame, struct pike_string *str, struct pike_type *type, node *def); int add_local_name(struct pike_string *str, struct pike_type *type, node *def);
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) int verify_declared(struct pike_string *str); extern int cumulative_parse_error;
f8af032003-11-14Martin Stjernholm  #ifndef STRUCT_NODE_S_DECLARED #define STRUCT_NODE_S_DECLARED
9b9f962003-11-14Martin Stjernholm struct node_s; typedef struct node_s node;
f8af032003-11-14Martin Stjernholm #endif
9b9f962003-11-14Martin Stjernholm 
b997d22008-01-03Henrik Grubbström (Grubba) /* local variable flags */ #define LOCAL_VAR_IS_USED 1
9d52082016-10-30Martin Karlgren /* var used in subscope -- needs to be saved when function returns */ #define LOCAL_VAR_USED_IN_SCOPE 2
5267b71995-08-09Fredrik Hübinette (Hubbe) struct local_variable {
06983f1996-09-22Fredrik Hübinette (Hubbe)  struct pike_string *name;
d68a072001-02-20Henrik Grubbström (Grubba)  struct pike_type *type;
a566ca1999-12-14Fredrik Hübinette (Hubbe)  node *def;
b997d22008-01-03Henrik Grubbström (Grubba)  /* FIXME: Consider moving these two to the def node above? */
02a79a2000-09-04Fredrik Hübinette (Hubbe)  struct pike_string *file; int line;
b997d22008-01-03Henrik Grubbström (Grubba)  unsigned int flags;
5267b71995-08-09Fredrik Hübinette (Hubbe) };
185d3a2015-03-16Henrik Grubbström (Grubba) /* Keeps track of local variables and similar for the current function. */
b1f4eb1998-01-13Fredrik Hübinette (Hubbe) struct compiler_frame
5267b71995-08-09Fredrik Hübinette (Hubbe) {
b1f4eb1998-01-13Fredrik Hübinette (Hubbe)  struct compiler_frame *previous;
d68a072001-02-20Henrik Grubbström (Grubba)  struct pike_type *current_type; struct pike_type *current_return_type;
5267b71995-08-09Fredrik Hübinette (Hubbe)  int current_number_of_locals;
2acdd31995-10-29Fredrik Hübinette (Hubbe)  int max_number_of_locals;
2898e62001-08-02Fredrik Hübinette (Hubbe)  int min_number_of_locals;
02a79a2000-09-04Fredrik Hübinette (Hubbe)  int last_block_level; /* used to detect variables declared in same block */
873ceb2000-04-30Fredrik Hübinette (Hubbe)  int num_args;
4218011999-01-31Fredrik Hübinette (Hubbe)  int lexical_scope;
6fd5172000-04-25Fredrik Hübinette (Hubbe)  int current_function_number;
873ceb2000-04-30Fredrik Hübinette (Hubbe)  int recur_label; int is_inline;
1ef5572000-08-30Henrik Grubbström (Grubba)  unsigned int opt_flags;
5267b71995-08-09Fredrik Hübinette (Hubbe)  struct local_variable variable[MAX_LOCAL]; };
9b9f962003-11-14Martin Stjernholm /* Also used in struct node_identifier */ union node_data { struct { int number; struct program *prog; } id; struct { int ident; struct compiler_frame *frame; struct program *prog; } trampoline; struct svalue sval; struct { struct node_s *a, *b; } node; struct { struct node_identifier *a, *b; } node_id; struct { int a, b; } integer; };
1bbd1a2014-08-14Per Hedbor #ifdef PIKE_DEBUG #include "opcodes.h" #endif
9b9f962003-11-14Martin Stjernholm struct node_s { unsigned INT32 refs; struct pike_string *current_file; struct pike_type *type; struct pike_string *name; struct node_s *parent;
ef24a82012-01-12Henrik Grubbström (Grubba)  INT_TYPE line_number;
9b9f962003-11-14Martin Stjernholm  unsigned INT16 node_info; unsigned INT16 tree_info;
ef24a82012-01-12Henrik Grubbström (Grubba)  unsigned INT16 pad;
9b9f962003-11-14Martin Stjernholm  /* The stuff from this point on is hashed. */
1bbd1a2014-08-14Per Hedbor #ifdef PIKE_DEBUG enum Pike_opcodes token : 16; #else
9b9f962003-11-14Martin Stjernholm  unsigned INT16 token;
1bbd1a2014-08-14Per Hedbor #endif
9b9f962003-11-14Martin Stjernholm  union node_data u; };
8322b62000-05-08Fredrik Hübinette (Hubbe) #define SCOPE_LOCAL 1 #define SCOPE_SCOPED 2 #define SCOPE_SCOPE_USED 4
44e3402013-10-09Arne Goedeke void count_memory_in_node_ss(size_t *num, size_t *size);
e5d6692004-12-07Henrik Grubbström (Grubba) 
5267b71995-08-09Fredrik Hübinette (Hubbe) /* Prototypes begin here */ int car_is_node(node *n); int cdr_is_node(node *n);
3c0c281998-01-26Fredrik Hübinette (Hubbe) void check_tree(node *n, int depth);
5267b71995-08-09Fredrik Hübinette (Hubbe) INT32 count_args(node *n);
d68a072001-02-20Henrik Grubbström (Grubba) struct pike_type *find_return_type(node *n);
d4a1362001-02-09Fredrik Hübinette (Hubbe) int check_tailrecursion(void);
a8ef6e1996-12-03Fredrik Hübinette (Hubbe) struct node_chunk;
a44a2c1998-05-01Henrik Grubbström (Grubba) void free_all_nodes(void);
a612ea1999-11-12Henrik Grubbström (Grubba) void debug_free_node(node *n);
7e877a2003-04-02Martin Stjernholm node *debug_mknode(int token,node *a,node *b);
a612ea1999-11-12Henrik Grubbström (Grubba) node *debug_mkstrnode(struct pike_string *str);
69aa4b2003-01-26Mirar (Pontus Hagland) node *debug_mkintnode(INT_TYPE nr); node *debug_mknewintnode(INT_TYPE nr);
a612ea1999-11-12Henrik Grubbström (Grubba) node *debug_mkfloatnode(FLOAT_TYPE foo); node *debug_mkprgnode(struct program *p); node *debug_mkapplynode(node *func,node *args); node *debug_mkefuncallnode(char *function, node *args); node *debug_mkopernode(char *oper_id, node *arg1, node *arg2);
204df92006-01-21Henrik Grubbström (Grubba) node *debug_mkversionnode(int major, int minor);
a612ea1999-11-12Henrik Grubbström (Grubba) node *debug_mklocalnode(int var, int depth); node *debug_mkidentifiernode(int i);
8c70ba2001-09-28Fredrik Hübinette (Hubbe) node *debug_mktrampolinenode(int i, struct compiler_frame *depth);
ff88db2000-07-12Henrik Grubbström (Grubba) node *debug_mkexternalnode(struct program *prog, int i);
b46e862004-12-18Henrik Grubbström (Grubba) node *debug_mkthisnode(struct program *parent_prog, int inherit_num);
d68a072001-02-20Henrik Grubbström (Grubba) node *debug_mkcastnode(struct pike_type *type, node *n); node *debug_mksoftcastnode(struct pike_type *type, node *n);
591c0c1997-01-19Fredrik Hübinette (Hubbe) void resolv_constant(node *n);
086acc1999-09-11Fredrik Hübinette (Hubbe) void resolv_class(node *n); void resolv_class(node *n);
4218011999-01-31Fredrik Hübinette (Hubbe) node *index_node(node *n, char *node_name, struct pike_string *id);
5267b71995-08-09Fredrik Hübinette (Hubbe) int node_is_eq(node *a,node *b);
d68a072001-02-20Henrik Grubbström (Grubba) node *debug_mktypenode(struct pike_type *t);
01d0152008-07-09Martin Stjernholm node *debug_mkconstantsvaluenode(const struct svalue *s); node *debug_mkliteralsvaluenode(const struct svalue *s);
a612ea1999-11-12Henrik Grubbström (Grubba) node *debug_mksvaluenode(struct svalue *s);
5267b71995-08-09Fredrik Hübinette (Hubbe) node *copy_node(node *n);
71bde82001-03-16Fredrik Hübinette (Hubbe) node *defrost_node(node *n); void optimize_node(node *);
5267b71995-08-09Fredrik Hübinette (Hubbe) int is_const(node *n); int node_is_tossable(node *n); int node_is_true(node *n); int node_is_false(node *n);
cc5e511998-06-05Fredrik Hübinette (Hubbe) int node_may_overload(node *n, int lfun);
6930181996-02-25Fredrik Hübinette (Hubbe) node **last_cmd(node **a); node **my_get_arg(node **a,int n);
cc5e511998-06-05Fredrik Hübinette (Hubbe) node **is_call_to(node *n, c_fun f);
5267b71995-08-09Fredrik Hübinette (Hubbe) void print_tree(node *n); struct used_vars; void fix_type_field(node *n);
a8ef6e1996-12-03Fredrik Hübinette (Hubbe) struct timer_oflo;
9f85c32002-10-25Marcus Comstedt ptrdiff_t eval_low(node *n,int print_error);
329cc01997-02-17Fredrik Hübinette (Hubbe) int dooptcode(struct pike_string *name, node *n,
d68a072001-02-20Henrik Grubbström (Grubba)  struct pike_type *type,
329cc01997-02-17Fredrik Hübinette (Hubbe)  int modifiers);
94d5aa2017-11-25Henrik Grubbström (Grubba) void resolv_type(node *n);
eda0e72018-05-27Henrik Grubbström (Grubba) void fix_foreach_type(node *lval_lval);
5267b71995-08-09Fredrik Hübinette (Hubbe) /* Prototypes end here */
a612ea1999-11-12Henrik Grubbström (Grubba) /* Handling of nodes */ #define free_node(n) debug_free_node(dmalloc_touch(node *,n)) #define mknode(token, a, b) dmalloc_touch(node *, debug_mknode(token, dmalloc_touch(node *, a), dmalloc_touch(node *, b))) #define mkstrnode(str) dmalloc_touch(node *, debug_mkstrnode(str)) #define mkintnode(nr) dmalloc_touch(node *, debug_mkintnode(nr)) #define mknewintnode(nr) dmalloc_touch(node *, debug_mknewintnode(nr)) #define mkfloatnode(foo) dmalloc_touch(node *, debug_mkfloatnode(foo)) #define mkprgnode(p) dmalloc_touch(node *, debug_mkprgnode(p)) #define mkapplynode(func, args) dmalloc_touch(node *, debug_mkapplynode(dmalloc_touch(node *, func),dmalloc_touch(node *, args))) #define mkefuncallnode(function, args) dmalloc_touch(node *, debug_mkefuncallnode(function, dmalloc_touch(node *, args))) #define mkopernode(oper_id, arg1, arg2) dmalloc_touch(node *, debug_mkopernode(oper_id, dmalloc_touch(node *, arg1), dmalloc_touch(node *, arg2)))
204df92006-01-21Henrik Grubbström (Grubba) #define mkversionnode(major, minor) dmalloc_touch(node *, debug_mkversionnode(major, minor))
a612ea1999-11-12Henrik Grubbström (Grubba) #define mklocalnode(var, depth) dmalloc_touch(node *, debug_mklocalnode(var, depth)) #define mkidentifiernode(i) dmalloc_touch(node *, debug_mkidentifiernode(i))
8c70ba2001-09-28Fredrik Hübinette (Hubbe) #define mktrampolinenode(i,f) dmalloc_touch(node *, debug_mktrampolinenode(i, f))
ff88db2000-07-12Henrik Grubbström (Grubba) #define mkexternalnode(parent_prog, i) dmalloc_touch(node *, debug_mkexternalnode(parent_prog, i))
b46e862004-12-18Henrik Grubbström (Grubba) #define mkthisnode(parent_prog, i) dmalloc_touch(node *, debug_mkthisnode(parent_prog, i))
a612ea1999-11-12Henrik Grubbström (Grubba) #define mkcastnode(type, n) dmalloc_touch(node *, debug_mkcastnode(type, dmalloc_touch(node *, n)))
e2c1471999-11-23Henrik Grubbström (Grubba) #define mksoftcastnode(type, n) dmalloc_touch(node *, debug_mksoftcastnode(type, dmalloc_touch(node *, n)))
c536a42000-05-17Henrik Grubbström (Grubba) #define mktypenode(t) dmalloc_touch(node *, debug_mktypenode(t))
a612ea1999-11-12Henrik Grubbström (Grubba) #define mkconstantsvaluenode(s) dmalloc_touch(node *, debug_mkconstantsvaluenode(dmalloc_touch(struct svalue *, s))) #define mkliteralsvaluenode(s) dmalloc_touch(node *, debug_mkliteralsvaluenode(dmalloc_touch(struct svalue *, s))) #define mksvaluenode(s) dmalloc_touch(node *, debug_mksvaluenode(dmalloc_touch(struct svalue *, s)))
a742ed2003-03-27Martin Stjernholm #define COPY_LINE_NUMBER_INFO(TO, FROM) do { \ node *to_ = (TO), *from_ = (FROM); \
bd7a6d2004-08-25Henrik Grubbström (Grubba)  if (from_) { \ to_->line_number = from_->line_number; \ free_string (to_->current_file); \ copy_shared_string (to_->current_file, from_->current_file); \ } \
a742ed2003-03-27Martin Stjernholm  } while (0)
a612ea1999-11-12Henrik Grubbström (Grubba)  /* lvalue variants of CAR(n) & CDR(n) */
a2d5581999-11-11Henrik Grubbström (Grubba) #define _CAR(n) (dmalloc_touch(node *,(n))->u.node.a) #define _CDR(n) (dmalloc_touch(node *,(n))->u.node.b) #define _CAAR(n) _CAR(_CAR(n)) #define _CADR(n) _CAR(_CDR(n)) #define _CDAR(n) _CDR(_CAR(n)) #define _CDDR(n) _CDR(_CDR(n))
a612ea1999-11-12Henrik Grubbström (Grubba) 
4f241e2001-04-15Henrik Grubbström (Grubba) #define ADD_NODE_REF(n) do { if (n) add_ref(n); } while(0) #define ADD_NODE_REF2(n, code) do { ADD_NODE_REF(n); code; } while(0)
a612ea1999-11-12Henrik Grubbström (Grubba)  #define CAR(n) _CAR(n) #define CDR(n) _CDR(n)
5267b71995-08-09Fredrik Hübinette (Hubbe) #define CAAR(n) CAR(CAR(n)) #define CADR(n) CAR(CDR(n)) #define CDAR(n) CDR(CAR(n)) #define CDDR(n) CDR(CDR(n))
80d3021999-11-08Henrik Grubbström (Grubba) #define CAAAR(n) CAR(CAR(CAR(n))) #define CAADR(n) CAR(CAR(CDR(n))) #define CADAR(n) CAR(CDR(CAR(n))) #define CADDR(n) CAR(CDR(CDR(n))) #define CDAAR(n) CDR(CAR(CAR(n))) #define CDADR(n) CDR(CAR(CDR(n))) #define CDDAR(n) CDR(CDR(CAR(n))) #define CDDDR(n) CDR(CDR(CDR(n)))
4ee3fe1999-11-14Henrik Grubbström (Grubba) #define CAAAAR(n) CAR(CAR(CAR(CAR(n)))) #define CAAADR(n) CAR(CAR(CAR(CDR(n)))) #define CAADAR(n) CAR(CAR(CDR(CAR(n)))) #define CAADDR(n) CAR(CAR(CDR(CDR(n)))) #define CADAAR(n) CAR(CDR(CAR(CAR(n)))) #define CADADR(n) CAR(CDR(CAR(CDR(n)))) #define CADDAR(n) CAR(CDR(CDR(CAR(n)))) #define CADDDR(n) CAR(CDR(CDR(CDR(n)))) #define CDAAAR(n) CDR(CAR(CAR(CAR(n)))) #define CDAADR(n) CDR(CAR(CAR(CDR(n)))) #define CDADAR(n) CDR(CAR(CDR(CAR(n)))) #define CDADDR(n) CDR(CAR(CDR(CDR(n)))) #define CDDAAR(n) CDR(CDR(CAR(CAR(n)))) #define CDDADR(n) CDR(CDR(CAR(CDR(n)))) #define CDDDAR(n) CDR(CDR(CDR(CAR(n)))) #define CDDDDR(n) CDR(CDR(CDR(CDR(n))))
ae14022001-05-19Henrik Grubbström (Grubba) #define CAAAAAR(n) CAR(CAR(CAR(CAR(CAR(n))))) #define CAAAADR(n) CAR(CAR(CAR(CAR(CDR(n))))) #define CAAADAR(n) CAR(CAR(CAR(CDR(CAR(n))))) #define CAAADDR(n) CAR(CAR(CAR(CDR(CDR(n))))) #define CAADAAR(n) CAR(CAR(CDR(CAR(CAR(n))))) #define CAADADR(n) CAR(CAR(CDR(CAR(CDR(n))))) #define CAADDAR(n) CAR(CAR(CDR(CDR(CAR(n))))) #define CAADDDR(n) CAR(CAR(CDR(CDR(CDR(n))))) #define CADAAAR(n) CAR(CDR(CAR(CAR(CAR(n))))) #define CADAADR(n) CAR(CDR(CAR(CAR(CDR(n))))) #define CADADAR(n) CAR(CDR(CAR(CDR(CAR(n))))) #define CADADDR(n) CAR(CDR(CAR(CDR(CDR(n))))) #define CADDAAR(n) CAR(CDR(CDR(CAR(CAR(n))))) #define CADDADR(n) CAR(CDR(CDR(CAR(CDR(n))))) #define CADDDAR(n) CAR(CDR(CDR(CDR(CAR(n))))) #define CADDDDR(n) CAR(CDR(CDR(CDR(CDR(n))))) #define CDAAAAR(n) CDR(CAR(CAR(CAR(CAR(n))))) #define CDAAADR(n) CDR(CAR(CAR(CAR(CDR(n))))) #define CDAADAR(n) CDR(CAR(CAR(CDR(CAR(n))))) #define CDAADDR(n) CDR(CAR(CAR(CDR(CDR(n))))) #define CDADAAR(n) CDR(CAR(CDR(CAR(CAR(n))))) #define CDADADR(n) CDR(CAR(CDR(CAR(CDR(n))))) #define CDADDAR(n) CDR(CAR(CDR(CDR(CAR(n))))) #define CDADDDR(n) CDR(CAR(CDR(CDR(CDR(n))))) #define CDDAAAR(n) CDR(CDR(CAR(CAR(CAR(n))))) #define CDDAADR(n) CDR(CDR(CAR(CAR(CDR(n))))) #define CDDADAR(n) CDR(CDR(CAR(CDR(CAR(n))))) #define CDDADDR(n) CDR(CDR(CAR(CDR(CDR(n))))) #define CDDDAAR(n) CDR(CDR(CDR(CAR(CAR(n))))) #define CDDDADR(n) CDR(CDR(CDR(CAR(CDR(n))))) #define CDDDDAR(n) CDR(CDR(CDR(CDR(CAR(n))))) #define CDDDDDR(n) CDR(CDR(CDR(CDR(CDR(n))))) #define CAAAAAAR(n) CAR(CAR(CAR(CAR(CAR(CAR(n)))))) #define CAAAAADR(n) CAR(CAR(CAR(CAR(CAR(CDR(n)))))) #define CAAAADAR(n) CAR(CAR(CAR(CAR(CDR(CAR(n)))))) #define CAAAADDR(n) CAR(CAR(CAR(CAR(CDR(CDR(n)))))) #define CAAADAAR(n) CAR(CAR(CAR(CDR(CAR(CAR(n)))))) #define CAAADADR(n) CAR(CAR(CAR(CDR(CAR(CDR(n)))))) #define CAAADDAR(n) CAR(CAR(CAR(CDR(CDR(CAR(n)))))) #define CAAADDDR(n) CAR(CAR(CAR(CDR(CDR(CDR(n)))))) #define CAADAAAR(n) CAR(CAR(CDR(CAR(CAR(CAR(n)))))) #define CAADAADR(n) CAR(CAR(CDR(CAR(CAR(CDR(n)))))) #define CAADADAR(n) CAR(CAR(CDR(CAR(CDR(CAR(n)))))) #define CAADADDR(n) CAR(CAR(CDR(CAR(CDR(CDR(n)))))) #define CAADDAAR(n) CAR(CAR(CDR(CDR(CAR(CAR(n)))))) #define CAADDADR(n) CAR(CAR(CDR(CDR(CAR(CDR(n)))))) #define CAADDDAR(n) CAR(CAR(CDR(CDR(CDR(CAR(n)))))) #define CAADDDDR(n) CAR(CAR(CDR(CDR(CDR(CDR(n)))))) #define CADAAAAR(n) CAR(CDR(CAR(CAR(CAR(CAR(n)))))) #define CADAAADR(n) CAR(CDR(CAR(CAR(CAR(CDR(n)))))) #define CADAADAR(n) CAR(CDR(CAR(CAR(CDR(CAR(n)))))) #define CADAADDR(n) CAR(CDR(CAR(CAR(CDR(CDR(n)))))) #define CADADAAR(n) CAR(CDR(CAR(CDR(CAR(CAR(n)))))) #define CADADADR(n) CAR(CDR(CAR(CDR(CAR(CDR(n)))))) #define CADADDAR(n) CAR(CDR(CAR(CDR(CDR(CAR(n)))))) #define CADADDDR(n) CAR(CDR(CAR(CDR(CDR(CDR(n)))))) #define CADDAAAR(n) CAR(CDR(CDR(CAR(CAR(CAR(n)))))) #define CADDAADR(n) CAR(CDR(CDR(CAR(CAR(CDR(n)))))) #define CADDADAR(n) CAR(CDR(CDR(CAR(CDR(CAR(n)))))) #define CADDADDR(n) CAR(CDR(CDR(CAR(CDR(CDR(n)))))) #define CADDDAAR(n) CAR(CDR(CDR(CDR(CAR(CAR(n)))))) #define CADDDADR(n) CAR(CDR(CDR(CDR(CAR(CDR(n)))))) #define CADDDDAR(n) CAR(CDR(CDR(CDR(CDR(CAR(n)))))) #define CADDDDDR(n) CAR(CDR(CDR(CDR(CDR(CDR(n)))))) #define CDAAAAAR(n) CDR(CAR(CAR(CAR(CAR(CAR(n)))))) #define CDAAAADR(n) CDR(CAR(CAR(CAR(CAR(CDR(n)))))) #define CDAAADAR(n) CDR(CAR(CAR(CAR(CDR(CAR(n)))))) #define CDAAADDR(n) CDR(CAR(CAR(CAR(CDR(CDR(n)))))) #define CDAADAAR(n) CDR(CAR(CAR(CDR(CAR(CAR(n)))))) #define CDAADADR(n) CDR(CAR(CAR(CDR(CAR(CDR(n)))))) #define CDAADDAR(n) CDR(CAR(CAR(CDR(CDR(CAR(n)))))) #define CDAADDDR(n) CDR(CAR(CAR(CDR(CDR(CDR(n)))))) #define CDADAAAR(n) CDR(CAR(CDR(CAR(CAR(CAR(n)))))) #define CDADAADR(n) CDR(CAR(CDR(CAR(CAR(CDR(n)))))) #define CDADADAR(n) CDR(CAR(CDR(CAR(CDR(CAR(n)))))) #define CDADADDR(n) CDR(CAR(CDR(CAR(CDR(CDR(n)))))) #define CDADDAAR(n) CDR(CAR(CDR(CDR(CAR(CAR(n)))))) #define CDADDADR(n) CDR(CAR(CDR(CDR(CAR(CDR(n)))))) #define CDADDDAR(n) CDR(CAR(CDR(CDR(CDR(CAR(n)))))) #define CDADDDDR(n) CDR(CAR(CDR(CDR(CDR(CDR(n)))))) #define CDDAAAAR(n) CDR(CDR(CAR(CAR(CAR(CAR(n)))))) #define CDDAAADR(n) CDR(CDR(CAR(CAR(CAR(CDR(n)))))) #define CDDAADAR(n) CDR(CDR(CAR(CAR(CDR(CAR(n)))))) #define CDDAADDR(n) CDR(CDR(CAR(CAR(CDR(CDR(n)))))) #define CDDADAAR(n) CDR(CDR(CAR(CDR(CAR(CAR(n)))))) #define CDDADADR(n) CDR(CDR(CAR(CDR(CAR(CDR(n)))))) #define CDDADDAR(n) CDR(CDR(CAR(CDR(CDR(CAR(n)))))) #define CDDADDDR(n) CDR(CDR(CAR(CDR(CDR(CDR(n)))))) #define CDDDAAAR(n) CDR(CDR(CDR(CAR(CAR(CAR(n)))))) #define CDDDAADR(n) CDR(CDR(CDR(CAR(CAR(CDR(n)))))) #define CDDDADAR(n) CDR(CDR(CDR(CAR(CDR(CAR(n)))))) #define CDDDADDR(n) CDR(CDR(CDR(CAR(CDR(CDR(n)))))) #define CDDDDAAR(n) CDR(CDR(CDR(CDR(CAR(CAR(n)))))) #define CDDDDADR(n) CDR(CDR(CDR(CDR(CAR(CDR(n)))))) #define CDDDDDAR(n) CDR(CDR(CDR(CDR(CDR(CAR(n)))))) #define CDDDDDDR(n) CDR(CDR(CDR(CDR(CDR(CDR(n))))))
5267b71995-08-09Fredrik Hübinette (Hubbe)  #define GAUGE_RUSAGE_INDEX 0
2d10fb2016-12-29Arne Goedeke #define add_to_mem_block(N,Data,Size) buffer_memcpy(areas+N, Data,Size)
bad5162000-06-23Fredrik Hübinette (Hubbe) #define IDENTIFIERP(i) (Pike_compiler->new_program->identifier_references+(i)) #define INHERIT(i) (Pike_compiler->new_program->inherits+(i))
1302b12001-08-14Martin Stjernholm #define PIKE_PC (Pike_compiler->new_program->num_program)
5267b71995-08-09Fredrik Hübinette (Hubbe) 
71f3a21998-11-22Fredrik Hübinette (Hubbe) #ifndef PIKE_DEBUG
3c0c281998-01-26Fredrik Hübinette (Hubbe) #define check_tree(X,Y) #endif
5267b71995-08-09Fredrik Hübinette (Hubbe) #endif