Main Page | Class List | Directories | File List | Class Members | File Members

program.h File Reference

#include <stdarg.h>
#include "global.h"
#include "pike_macros.h"
#include "pike_error.h"
#include "svalue.h"
#include "dmalloc.h"
#include "time_stuff.h"
#include "program_id.h"
#include "pike_rusage.h"
#include "block_alloc_h.h"
#include "compilation.h"
#include "program_areas.h"
#include "las.h"

Go to the source code of this file.

Classes

union  idptr
struct  identifier
struct  program_constant
struct  reference
struct  inherit
struct  pike_trampoline
struct  parent_info
struct  program
struct  Supporter

Defines

#define COMPILATION_CHECK_FINAL   0x01
#define COMPILATION_FORCE_RESOLVE   0x02
#define DO_IF_FRD(X)
#define SET_FORCE_RESOLVE(OLD)
#define UNSET_FORCE_RESOLVE(OLD)
#define LFUN___INIT   0
#define LFUN_CREATE   1
#define LFUN_DESTROY   2
#define LFUN_ADD   3
#define LFUN_SUBTRACT   4
#define LFUN_AND   5
#define LFUN_OR   6
#define LFUN_XOR   7
#define LFUN_LSH   8
#define LFUN_RSH   9
#define LFUN_MULTIPLY   10
#define LFUN_DIVIDE   11
#define LFUN_MOD   12
#define LFUN_COMPL   13
#define LFUN_EQ   14
#define LFUN_LT   15
#define LFUN_GT   16
#define LFUN___HASH   17
#define LFUN_CAST   18
#define LFUN_NOT   19
#define LFUN_INDEX   20
#define LFUN_ASSIGN_INDEX   21
#define LFUN_ARROW   22
#define LFUN_ASSIGN_ARROW   23
#define LFUN__SIZEOF   24
#define LFUN__INDICES   25
#define LFUN__VALUES   26
#define LFUN_CALL   27
#define LFUN_RADD   28
#define LFUN_RSUBTRACT   29
#define LFUN_RAND   30
#define LFUN_ROR   31
#define LFUN_RXOR   32
#define LFUN_RLSH   33
#define LFUN_RRSH   34
#define LFUN_RMULTIPLY   35
#define LFUN_RDIVIDE   36
#define LFUN_RMOD   37
#define LFUN_ADD_EQ   38
#define LFUN__IS_TYPE   39
#define LFUN__SPRINTF   40
#define LFUN__EQUAL   41
#define LFUN__M_DELETE   42
#define LFUN__GET_ITERATOR   43
#define LFUN_RANGE   44
#define NUM_LFUNS   45
#define LFUN__SEARCH   45
#define STRUCT
#define EXTERN
#define PIKE_BYTECODE_PORTABLE   -1
#define PIKE_BYTECODE_DEFAULT   0
#define PIKE_BYTECODE_GOTO   1
#define PIKE_BYTECODE_SPARC   2
#define PIKE_BYTECODE_IA32   3
#define PIKE_BYTECODE_PPC32   4
#define PIKE_OPCODE_T   unsigned INT8
#define PIKE_INSTR_T   unsigned int
#define IDENTIFIER_VARIABLE   0
#define IDENTIFIER_PIKE_FUNCTION   1
#define IDENTIFIER_C_FUNCTION   2
#define IDENTIFIER_FUNCTION   3
#define IDENTIFIER_CONSTANT   4
#define IDENTIFIER_TYPE_MASK   7
#define IDENTIFIER_VARARGS   8
#define IDENTIFIER_NO_THIS_REF   8
#define IDENTIFIER_HAS_BODY   16
#define IDENTIFIER_SCOPED   32
#define IDENTIFIER_SCOPE_USED   64
#define IDENTIFIER_ALIAS   128
#define IDENTIFIER_IS_FUNCTION(X)   ((X) & IDENTIFIER_FUNCTION)
#define IDENTIFIER_IS_PIKE_FUNCTION(X)   ((X) & IDENTIFIER_PIKE_FUNCTION)
#define IDENTIFIER_IS_C_FUNCTION(X)   ((X) & IDENTIFIER_C_FUNCTION)
#define IDENTIFIER_IS_CONSTANT(X)   ((X) & IDENTIFIER_CONSTANT)
#define IDENTIFIER_IS_VARIABLE(X)   (!((X) & IDENTIFIER_TYPE_MASK))
#define IDENTIFIER_IS_ALIAS(X)   ((X) & IDENTIFIER_ALIAS)
#define IDENTIFIER_MASK   255
#define ID_STATIC   0x01
#define ID_PRIVATE   0x02
#define ID_NOMASK   0x04
#define ID_PUBLIC   0x08
#define ID_PROTECTED   0x10
#define ID_INLINE   0x20
#define ID_HIDDEN   0x40
#define ID_INHERITED   0x80
#define ID_OPTIONAL   0x100
#define ID_EXTERN   0x200
#define ID_VARIANT   0x400
#define ID_ALIAS   0x800
#define ID_MODIFIER_MASK   0x0fff
#define ID_STRICT_TYPES   0x8000
#define ID_SAVE_PARENT   0x10000
#define ID_DONT_SAVE_PARENT   0x20000
#define IDREF_MAGIC_THIS   -1
#define OBJECT_PARENT   -18
#define INHERIT_PARENT   -17
#define PROGRAM_OPTIMIZED   1
#define PROGRAM_FIXED   2
#define PROGRAM_FINISHED   4
#define PROGRAM_PASS_1_DONE   8
#define PROGRAM_DESTRUCT_IMMEDIATE   0x10
#define PROGRAM_HAS_C_METHODS   0x20
#define PROGRAM_CONSTANT   0x40
#define PROGRAM_USES_PARENT   0x80
#define PROGRAM_NO_WEAK_FREE   0x100
#define PROGRAM_NO_EXPLICIT_DESTRUCT   0x200
#define PROGRAM_AVOID_CHECK   0x400
#define PROGRAM_VIRGIN   0x800
#define PROGRAM_NEEDS_PARENT   0x1000
#define PROGRAM_IS_FACET_CLASS   0x1
#define PROGRAM_IS_PRODUCT_CLASS   0x2
#define PROG_EVENT_INIT   0
#define PROG_EVENT_EXIT   1
#define PROG_EVENT_GC_RECURSE   2
#define PROG_EVENT_GC_CHECK   3
#define NUM_PROG_EVENTS   4
#define LOW_PARENT_INFO(O, P)   ((struct parent_info *)(PIKE_OBJ_STORAGE((O)) + (P)->parent_info_storage))
#define PARENT_INFO(O)   LOW_PARENT_INFO( (O), (O)->prog)
#define FOO(NUMTYPE, TYPE, ARGTYPE, NAME)   TYPE * NAME ;
#define FOO(NUMTYPE, TYPE, ARGTYPE, NAME)   NUMTYPE PIKE_CONCAT(num_,NAME) ;
#define CHECK_IDREF_RANGE(X, P)   (X)
#define PTR_FROM_INT(P, X)
#define INHERIT_FROM_PTR(P, X)   (dmalloc_touch(struct program *,(P))->inherits + (X)->inherit_offset)
#define PROG_FROM_PTR(P, X)   (dmalloc_touch(struct program *,INHERIT_FROM_PTR(P,X)->prog))
#define ID_FROM_PTR(P, X)   (PROG_FROM_PTR(P,X)->identifiers+(X)->identifier_offset)
#define INHERIT_FROM_INT(P, X)   INHERIT_FROM_PTR(P, PTR_FROM_INT(P, X))
#define PROG_FROM_INT(P, X)   PROG_FROM_PTR(P, PTR_FROM_INT(P, X))
#define ID_FROM_INT(P, X)   ID_FROM_PTR(P, PTR_FROM_INT(P, X))
#define FIND_LFUN(P, N)   ( dmalloc_touch(struct program *,(P))->flags & PROGRAM_FIXED?((P)->lfuns[(N)]):low_find_lfun((P), (N)) )
#define QUICK_FIND_LFUN(P, N)   (dmalloc_touch(struct program *,(P))->lfuns[N])
#define free_program(p)
#define SEE_STATIC   1
#define SEE_PRIVATE   2
#define COMPILER_IN_CATCH   1
#define ADD_STORAGE(X)   low_add_storage(sizeof(X), ALIGNOF(X),0)
#define STORAGE_NEEDED(X)   ((X)->storage_needed - (X)->inherits[0].storage_offset)
#define FOO(NUMTYPE, TYPE, ARGTYPE, NAME)   void PIKE_CONCAT(add_to_,NAME(ARGTYPE ARG));
#define make_program_executable(X)
#define ADD_FUNCTION(NAME, FUNC, TYPE, FLAGS)
#define ADD_PROTOTYPE(NAME, TYPE, FLAGS)   ADD_FUNCTION(NAME, 0, TYPE, FLAGS)
#define ADD_FUNCTION2(NAME, FUNC, TYPE, FLAGS, OPT_FLAGS)
#define ADD_PROTOTYPE2(NAME, TYPE, FLAGS, OPT_FLAGS)   ADD_FUNCTION2(NAME, 0, TYPE, FLAGS, OPT_FLAGS)
#define ADD_INT_CONSTANT(NAME, CONST, FLAGS)   quick_add_integer_constant(NAME, CONSTANT_STRLEN(NAME), CONST, FLAGS)
#define ADD_FLOAT_CONSTANT(NAME, CONST, FLAGS)   quick_add_float_constant(NAME, CONSTANT_STRLEN(NAME), CONST, FLAGS)
#define PIKE_MAP_VARIABLE(NAME, OFFSET, TYPE, RTTYPE, FLAGS)
#define MAP_VARIABLE(NAME, TYPE, FLAGS, OFFSET, RTYPE)   PIKE_MAP_VARIABLE(NAME, OFFSET, TYPE, RTYPE, FLAGS)
#define ADD_FUNCTION_DTYPE(NAME, FUN, DTYPE, FLAGS)
#define pike_add_function(NAME, CFUN, TYPE, FLAGS)
#define add_function   pike_add_function
#define ADD_INHERIT(PROGRAM, FLAGS)   low_inherit((PROGRAM), 0, 0, 0, (FLAGS), 0)
#define START_NEW_PROGRAM_ID(ID)
#define end_class(NAME, FLAGS)   debug_end_class(NAME, CONSTANT_STRLEN(NAME), FLAGS)
#define end_program   debug_end_program
#define start_new_program()   debug_start_new_program(__LINE__,__FILE__)
#define gc_cycle_check_program(X, WEAK)   gc_cycle_enqueue((gc_cycle_check_cb *) real_gc_cycle_check_program, (X), (WEAK))
#define Pike_new_program   Pike_compiler->new_program
#define TEST_COMPAT(MAJOR, MINOR)

Typedefs

typedef int supporter_callback (void *, int)

Functions

 BLOCK_ALLOC_FILL_PAGES (program, n/a)
void ins_int (INT32 i, void(*func)(char tmp))
void ins_short (int i, void(*func)(char tmp))
void add_relocated_int_to_program (INT32 i)
void use_module (struct svalue *s)
void unuse_modules (INT32 howmany)
nodefind_module_identifier (struct pike_string *ident, int see_inherit)
noderesolve_identifier (struct pike_string *ident)
nodeprogram_magic_identifier (struct program_state *state, int state_depth, int inherit_num, struct pike_string *ident, int colon_colon_ref)
programparent_compilation (int level)
programid_to_program (INT32 id)
void optimize_program (struct program *p)
void fsort_program_identifier_index (unsigned short *start, unsigned short *end, struct program *p)
pike_stringfind_program_name (struct program *p, INT32 *line)
int override_identifier (struct reference *ref, struct pike_string *name)
void fixate_program (void)
programlow_allocate_program (void)
void low_start_new_program (struct program *p, int pass, struct pike_string *name, int flags, int *idp)
PMOD_EXPORT void debug_start_new_program (int line, const char *file)
void dump_program_desc (struct program *p)
int sizeof_variable (int run_time_type)
void dump_program_tables (struct program *p, int indent)
void check_program (struct program *p)
programend_first_pass (int finish)
PMOD_EXPORT struct programdebug_end_program (void)
PMOD_EXPORT size_t low_add_storage (size_t size, size_t alignment, ptrdiff_t modulo_orig)
PMOD_EXPORT void set_init_callback (void(*init_callback)(struct object *))
PMOD_EXPORT void set_exit_callback (void(*exit_callback)(struct object *))
PMOD_EXPORT void set_gc_recurse_callback (void(*m)(struct object *))
PMOD_EXPORT void set_gc_check_callback (void(*m)(struct object *))
void pike_set_prog_event_callback (void(*cb)(int))
void pike_set_prog_optimize_callback (node *(*opt)(node *))
int really_low_reference_inherited_identifier (struct program_state *q, int e, int i)
int low_reference_inherited_identifier (struct program_state *q, int e, struct pike_string *name, int flags)
int find_inherit (struct program *p, struct pike_string *name)
nodereference_inherited_identifier (struct pike_string *super_name, struct pike_string *function_name)
void rename_last_inherit (struct pike_string *n)
void low_inherit (struct program *p, struct object *parent, int parent_identifier, int parent_offset, INT32 flags, struct pike_string *name)
PMOD_EXPORT void do_inherit (struct svalue *s, INT32 flags, struct pike_string *name)
void compiler_do_inherit (node *n, INT32 flags, struct pike_string *name)
int call_handle_inherit (struct pike_string *s)
void simple_do_inherit (struct pike_string *s, INT32 flags, struct pike_string *name)
int isidentifier (struct pike_string *s)
int low_define_variable (struct pike_string *name, struct pike_type *type, INT32 flags, size_t offset, INT32 run_time_type)
PMOD_EXPORT int map_variable (const char *name, const char *type, INT32 flags, size_t offset, INT32 run_time_type)
PMOD_EXPORT int quick_map_variable (const char *name, int name_length, size_t offset, const char *type, int type_length, INT32 run_time_type, INT32 flags)
int define_variable (struct pike_string *name, struct pike_type *type, INT32 flags)
PMOD_EXPORT int simple_add_variable (const char *name, const char *type, INT32 flags)
PMOD_EXPORT int add_constant (struct pike_string *name, struct svalue *c, INT32 flags)
PMOD_EXPORT int simple_add_constant (const char *name, struct svalue *c, INT32 flags)
PMOD_EXPORT int add_integer_constant (const char *name, INT_ARG_TYPE i, INT32 flags)
PMOD_EXPORT int quick_add_integer_constant (const char *name, int name_length, INT_ARG_TYPE i, INT32 flags)
PMOD_EXPORT int add_float_constant (const char *name, FLOAT_ARG_TYPE f, INT32 flags)
PMOD_EXPORT int quick_add_float_constant (const char *name, int name_length, FLOAT_ARG_TYPE f, INT32 flags)
PMOD_EXPORT int add_string_constant (const char *name, const char *str, INT32 flags)
PMOD_EXPORT int add_program_constant (const char *name, struct program *p, INT32 flags)
PMOD_EXPORT int add_object_constant (const char *name, struct object *o, INT32 flags)
PMOD_EXPORT int add_function_constant (const char *name, void(*cfun)(INT32), const char *type, int flags)
PMOD_EXPORT int debug_end_class (const char *name, ptrdiff_t namelen, INT32 flags)
INT32 define_function (struct pike_string *name, struct pike_type *type, unsigned flags, unsigned function_flags, union idptr *func, unsigned opt_flags)
int really_low_find_shared_string_identifier (struct pike_string *name, struct program *prog, int flags)
int low_find_lfun (struct program *p, ptrdiff_t lfun)
int lfun_lookup_id (struct pike_string *lfun_name)
int low_find_shared_string_identifier (struct pike_string *name, struct program *prog)
int find_shared_string_identifier (struct pike_string *name, struct program *prog)
PMOD_EXPORT int find_identifier (const char *name, struct program *prog)
int store_prog_string (struct pike_string *str)
int store_constant (struct svalue *foo, int equal, struct pike_string *constant_name)
arrayprogram_indices (struct program *p)
arrayprogram_values (struct program *p)
void program_index_no_free (struct svalue *to, struct program *p, struct svalue *ind)
int get_small_number (char **q)
void ext_store_program_line (struct program *prog, INT32 line, struct pike_string *file)
void start_line_numbering (void)
void store_linenumber (INT32 current_line, struct pike_string *current_file)
PMOD_EXPORT struct pike_stringlow_get_program_line (struct program *prog, INT32 *linep)
PMOD_EXPORT struct pike_stringget_program_line (struct program *prog, INT32 *linep)
PMOD_EXPORT char * low_get_program_line_plain (struct program *prog, INT32 *linep, int malloced)
PMOD_EXPORT struct pike_stringlow_get_line (PIKE_OPCODE_T *pc, struct program *prog, INT32 *linep)
PMOD_EXPORT char * low_get_line_plain (PIKE_OPCODE_T *pc, struct program *prog, INT32 *linep, int malloced)
PMOD_EXPORT struct pike_stringget_line (PIKE_OPCODE_T *pc, struct program *prog, INT32 *linep)
PMOD_EXPORT struct pike_stringlow_get_function_line (struct object *o, int fun, INT32 *linep)
void va_yyerror (const char *fmt, va_list args)
void my_yyerror (const char *fmt,...)
pike_stringformat_exception_for_error_msg (struct svalue *thrown)
void handle_compile_exception (const char *yyerror_fmt,...)
void verify_supporters (void)
void init_supporter (struct Supporter *s, supporter_callback *fun, void *data)
int unlink_current_supporter (struct Supporter *c)
int call_dependants (struct Supporter *s, int finish)
int report_compiler_dependency (struct program *p)
void run_pass2 (struct compilation *c)
programcompile (struct pike_string *aprog, struct object *ahandler, int amajor, int aminor, struct program *atarget, struct object *aplaceholder)
PMOD_EXPORT int pike_add_function2 (const char *name, void(*cfun)(INT32), const char *type, unsigned flags, unsigned opt_flags)
PMOD_EXPORT int quick_add_function (const char *name, int name_length, void(*cfun)(INT32), const char *type, int type_length, unsigned flags, unsigned opt_flags)
void check_all_programs (void)
void placeholder_index (INT32 args)
void init_program (void)
void cleanup_program (void)
void gc_mark_program_as_referenced (struct program *p)
void real_gc_cycle_check_program (struct program *p, int weak)
unsigned gc_touch_all_programs (void)
void gc_check_all_programs (void)
void gc_mark_all_programs (void)
void gc_cycle_check_all_programs (void)
void gc_zap_ext_weak_refs_in_programs (void)
size_t gc_free_all_unreferenced_programs (void)
void push_compiler_frame (int lexical_scope)
void low_pop_local_variables (int level)
void pop_local_variables (int level)
void pop_compiler_frame (void)
ptrdiff_t low_get_storage (struct program *o, struct program *p)
PMOD_EXPORT char * get_storage (struct object *o, struct program *p)
programlow_program_from_function (struct program *p, INT32 i)
PMOD_EXPORT struct programprogram_from_function (const struct svalue *f)
PMOD_EXPORT struct programprogram_from_svalue (const struct svalue *s)
int find_child (struct program *parent, struct program *child)
void yywarning (char *fmt,...)
PMOD_EXPORT int implements (struct program *a, struct program *b)
PMOD_EXPORT int is_compatible (struct program *a, struct program *b)
void yyexplain_not_compatible (struct program *a, struct program *b, int flags)
void yyexplain_not_implements (struct program *a, struct program *b, int flags)
PMOD_EXPORT void * parent_storage (int depth)
PMOD_EXPORT void change_compiler_compatibility (int major, int minor)
void make_program_executable (struct program *p)
void really_free_program (struct program *)
void count_memory_in_programs (INT32 *, INT32 *)

Variables

PMOD_PROTO struct program_state * Pike_compiler
pike_stringthis_program_string
const char *const lfun_names []
pike_stringlfun_strings []
objecterror_handler
objectcompat_handler
programfirst_program
programnull_program
programpike_trampoline_program
programgc_internal_program
programplaceholder_program
objectplaceholder_object
int compilation_depth


Define Documentation

#define ADD_FLOAT_CONSTANT NAME,
CONST,
FLAGS   )     quick_add_float_constant(NAME, CONSTANT_STRLEN(NAME), CONST, FLAGS)
 

#define add_function   pike_add_function
 

#define ADD_FUNCTION NAME,
FUNC,
TYPE,
FLAGS   ) 
 

Value:

quick_add_function(NAME, CONSTANT_STRLEN(NAME), FUNC, TYPE,\
                     CONSTANT_STRLEN(TYPE), FLAGS, \
                     OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND)

#define ADD_FUNCTION2 NAME,
FUNC,
TYPE,
FLAGS,
OPT_FLAGS   ) 
 

Value:

quick_add_function(NAME, CONSTANT_STRLEN(NAME), FUNC, TYPE,\
                     CONSTANT_STRLEN(TYPE), FLAGS, OPT_FLAGS)

#define ADD_FUNCTION_DTYPE NAME,
FUN,
DTYPE,
FLAGS   ) 
 

Value:

do {            \
  DTYPE_START;                                                  \
  {DTYPE}                                                       \
  {                                                             \
    struct pike_string *_t;                                     \
    DTYPE_END(_t);                                              \
    quick_add_function(NAME, CONSTANT_STRLEN(NAME), FUN,        \
                        _t->str, _t->len, FLAGS,                \
                       OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND);    \
    free_string(_t);                                            \
  }                                                             \
} while (0)

#define ADD_INHERIT PROGRAM,
FLAGS   )     low_inherit((PROGRAM), 0, 0, 0, (FLAGS), 0)
 

#define ADD_INT_CONSTANT NAME,
CONST,
FLAGS   )     quick_add_integer_constant(NAME, CONSTANT_STRLEN(NAME), CONST, FLAGS)
 

#define ADD_PROTOTYPE NAME,
TYPE,
FLAGS   )     ADD_FUNCTION(NAME, 0, TYPE, FLAGS)
 

#define ADD_PROTOTYPE2 NAME,
TYPE,
FLAGS,
OPT_FLAGS   )     ADD_FUNCTION2(NAME, 0, TYPE, FLAGS, OPT_FLAGS)
 

#define ADD_STORAGE  )     low_add_storage(sizeof(X), ALIGNOF(X),0)
 

#define CHECK_IDREF_RANGE X,
 )     (X)
 

#define COMPILATION_CHECK_FINAL   0x01
 

#define COMPILATION_FORCE_RESOLVE   0x02
 

#define COMPILER_IN_CATCH   1
 

#define DO_IF_FRD  ) 
 

#define end_class NAME,
FLAGS   )     debug_end_class(NAME, CONSTANT_STRLEN(NAME), FLAGS)
 

#define end_program   debug_end_program
 

#define EXTERN
 

#define FIND_LFUN P,
 )     ( dmalloc_touch(struct program *,(P))->flags & PROGRAM_FIXED?((P)->lfuns[(N)]):low_find_lfun((P), (N)) )
 

#define FOO NUMTYPE,
TYPE,
ARGTYPE,
NAME   )     void PIKE_CONCAT(add_to_,NAME(ARGTYPE ARG));
 

#define FOO NUMTYPE,
TYPE,
ARGTYPE,
NAME   )     NUMTYPE PIKE_CONCAT(num_,NAME) ;
 

#define FOO NUMTYPE,
TYPE,
ARGTYPE,
NAME   )     TYPE * NAME ;
 

#define free_program  ) 
 

Value:

do{                                             \
    struct program *_=(p);                                              \
    debug_malloc_touch(_);                                              \
    DO_IF_DEBUG (                                                       \
      DO_IF_PIKE_CLEANUP (                                              \
        if (gc_external_refs_zapped)                                    \
          gc_check_zapped (_, PIKE_T_PROGRAM, __FILE__, __LINE__)));    \
    if(!sub_ref(_))                                                     \
      really_free_program(_);                                           \
  }while(0)

#define gc_cycle_check_program X,
WEAK   )     gc_cycle_enqueue((gc_cycle_check_cb *) real_gc_cycle_check_program, (X), (WEAK))
 

#define ID_ALIAS   0x800
 

#define ID_DONT_SAVE_PARENT   0x20000
 

#define ID_EXTERN   0x200
 

#define ID_FROM_INT P,
 )     ID_FROM_PTR(P, PTR_FROM_INT(P, X))
 

#define ID_FROM_PTR P,
 )     (PROG_FROM_PTR(P,X)->identifiers+(X)->identifier_offset)
 

#define ID_HIDDEN   0x40
 

#define ID_INHERITED   0x80
 

#define ID_INLINE   0x20
 

#define ID_MODIFIER_MASK   0x0fff
 

#define ID_NOMASK   0x04
 

#define ID_OPTIONAL   0x100
 

#define ID_PRIVATE   0x02
 

#define ID_PROTECTED   0x10
 

#define ID_PUBLIC   0x08
 

#define ID_SAVE_PARENT   0x10000
 

#define ID_STATIC   0x01
 

#define ID_STRICT_TYPES   0x8000
 

#define ID_VARIANT   0x400
 

#define IDENTIFIER_ALIAS   128
 

#define IDENTIFIER_C_FUNCTION   2
 

#define IDENTIFIER_CONSTANT   4
 

#define IDENTIFIER_FUNCTION   3
 

#define IDENTIFIER_HAS_BODY   16
 

#define IDENTIFIER_IS_ALIAS  )     ((X) & IDENTIFIER_ALIAS)
 

#define IDENTIFIER_IS_C_FUNCTION  )     ((X) & IDENTIFIER_C_FUNCTION)
 

#define IDENTIFIER_IS_CONSTANT  )     ((X) & IDENTIFIER_CONSTANT)
 

#define IDENTIFIER_IS_FUNCTION  )     ((X) & IDENTIFIER_FUNCTION)
 

#define IDENTIFIER_IS_PIKE_FUNCTION  )     ((X) & IDENTIFIER_PIKE_FUNCTION)
 

#define IDENTIFIER_IS_VARIABLE  )     (!((X) & IDENTIFIER_TYPE_MASK))
 

#define IDENTIFIER_MASK   255
 

#define IDENTIFIER_NO_THIS_REF   8
 

#define IDENTIFIER_PIKE_FUNCTION   1
 

#define IDENTIFIER_SCOPE_USED   64
 

#define IDENTIFIER_SCOPED   32
 

#define IDENTIFIER_TYPE_MASK   7
 

#define IDENTIFIER_VARARGS   8
 

#define IDENTIFIER_VARIABLE   0
 

#define IDREF_MAGIC_THIS   -1
 

#define INHERIT_FROM_INT P,
 )     INHERIT_FROM_PTR(P, PTR_FROM_INT(P, X))
 

#define INHERIT_FROM_PTR P,
 )     (dmalloc_touch(struct program *,(P))->inherits + (X)->inherit_offset)
 

#define INHERIT_PARENT   -17
 

#define LFUN___HASH   17
 

#define LFUN___INIT   0
 

#define LFUN__EQUAL   41
 

#define LFUN__GET_ITERATOR   43
 

#define LFUN__INDICES   25
 

#define LFUN__IS_TYPE   39
 

#define LFUN__M_DELETE   42
 

#define LFUN__SEARCH   45
 

#define LFUN__SIZEOF   24
 

#define LFUN__SPRINTF   40
 

#define LFUN__VALUES   26
 

#define LFUN_ADD   3
 

#define LFUN_ADD_EQ   38
 

#define LFUN_AND   5
 

#define LFUN_ARROW   22
 

#define LFUN_ASSIGN_ARROW   23
 

#define LFUN_ASSIGN_INDEX   21
 

#define LFUN_CALL   27
 

#define LFUN_CAST   18
 

#define LFUN_COMPL   13
 

#define LFUN_CREATE   1
 

#define LFUN_DESTROY   2
 

#define LFUN_DIVIDE   11
 

#define LFUN_EQ   14
 

#define LFUN_GT   16
 

#define LFUN_INDEX   20
 

#define LFUN_LSH   8
 

#define LFUN_LT   15
 

#define LFUN_MOD   12
 

#define LFUN_MULTIPLY   10
 

#define LFUN_NOT   19
 

#define LFUN_OR   6
 

#define LFUN_RADD   28
 

#define LFUN_RAND   30
 

#define LFUN_RANGE   44
 

#define LFUN_RDIVIDE   36
 

#define LFUN_RLSH   33
 

#define LFUN_RMOD   37
 

#define LFUN_RMULTIPLY   35
 

#define LFUN_ROR   31
 

#define LFUN_RRSH   34
 

#define LFUN_RSH   9
 

#define LFUN_RSUBTRACT   29
 

#define LFUN_RXOR   32
 

#define LFUN_SUBTRACT   4
 

#define LFUN_XOR   7
 

#define LOW_PARENT_INFO O,
 )     ((struct parent_info *)(PIKE_OBJ_STORAGE((O)) + (P)->parent_info_storage))
 

#define make_program_executable  ) 
 

#define MAP_VARIABLE NAME,
TYPE,
FLAGS,
OFFSET,
RTYPE   )     PIKE_MAP_VARIABLE(NAME, OFFSET, TYPE, RTYPE, FLAGS)
 

#define NUM_LFUNS   45
 

#define NUM_PROG_EVENTS   4
 

#define OBJECT_PARENT   -18
 

#define PARENT_INFO  )     LOW_PARENT_INFO( (O), (O)->prog)
 

#define pike_add_function NAME,
CFUN,
TYPE,
FLAGS   ) 
 

Value:

pike_add_function2(NAME, CFUN, TYPE, FLAGS,             \
                     OPT_SIDE_EFFECT|OPT_EXTERNAL_DEPEND)

#define PIKE_BYTECODE_DEFAULT   0
 

#define PIKE_BYTECODE_GOTO   1
 

#define PIKE_BYTECODE_IA32   3
 

#define PIKE_BYTECODE_PORTABLE   -1
 

#define PIKE_BYTECODE_PPC32   4
 

#define PIKE_BYTECODE_SPARC   2
 

#define PIKE_INSTR_T   unsigned int
 

#define PIKE_MAP_VARIABLE NAME,
OFFSET,
TYPE,
RTTYPE,
FLAGS   ) 
 

Value:

quick_map_variable(NAME, CONSTANT_STRLEN(NAME), OFFSET, \
                     TYPE, CONSTANT_STRLEN(TYPE), RTTYPE, FLAGS)

#define Pike_new_program   Pike_compiler->new_program
 

#define PIKE_OPCODE_T   unsigned INT8
 

#define PROG_EVENT_EXIT   1
 

#define PROG_EVENT_GC_CHECK   3
 

#define PROG_EVENT_GC_RECURSE   2
 

#define PROG_EVENT_INIT   0
 

#define PROG_FROM_INT P,
 )     PROG_FROM_PTR(P, PTR_FROM_INT(P, X))
 

#define PROG_FROM_PTR P,
 )     (dmalloc_touch(struct program *,INHERIT_FROM_PTR(P,X)->prog))
 

#define PROGRAM_AVOID_CHECK   0x400
 

#define PROGRAM_CONSTANT   0x40
 

#define PROGRAM_DESTRUCT_IMMEDIATE   0x10
 

#define PROGRAM_FINISHED   4
 

#define PROGRAM_FIXED   2
 

#define PROGRAM_HAS_C_METHODS   0x20
 

#define PROGRAM_IS_FACET_CLASS   0x1
 

#define PROGRAM_IS_PRODUCT_CLASS   0x2
 

#define PROGRAM_NEEDS_PARENT   0x1000
 

#define PROGRAM_NO_EXPLICIT_DESTRUCT   0x200
 

#define PROGRAM_NO_WEAK_FREE   0x100
 

#define PROGRAM_OPTIMIZED   1
 

#define PROGRAM_PASS_1_DONE   8
 

#define PROGRAM_USES_PARENT   0x80
 

#define PROGRAM_VIRGIN   0x800
 

#define PTR_FROM_INT P,
 ) 
 

Value:

((P)->identifier_references + \
                                 CHECK_IDREF_RANGE((X), (P)))

#define QUICK_FIND_LFUN P,
 )     (dmalloc_touch(struct program *,(P))->lfuns[N])
 

#define SEE_PRIVATE   2
 

#define SEE_STATIC   1
 

#define SET_FORCE_RESOLVE OLD   ) 
 

Value:

do {                                    \
    int tmp_ = (OLD) = Pike_compiler->flags;                            \
    Pike_compiler->flags |= COMPILATION_FORCE_RESOLVE;                  \
    DO_IF_FRD(fprintf(stderr,                                           \
                      "Force resolve on. Flags:0x%04x (0x%04x)\n",      \
                      Pike_compiler->flags, tmp_));                     \
  } while(0)

 
#define start_new_program  )     debug_start_new_program(__LINE__,__FILE__)
 

#define START_NEW_PROGRAM_ID ID   ) 
 

Value:

do { \
    start_new_program();  \
    Pike_compiler->new_program->id=PIKE_CONCAT3(PROG_,ID,_ID); \
  }while(0)

#define STORAGE_NEEDED  )     ((X)->storage_needed - (X)->inherits[0].storage_offset)
 

#define STRUCT
 

#define TEST_COMPAT MAJOR,
MINOR   ) 
 

Value:

(Pike_compiler->compat_major < (MAJOR) ||  \
    (Pike_compiler->compat_major == (MAJOR) && \
     Pike_compiler->compat_minor <= (MINOR)))

#define UNSET_FORCE_RESOLVE OLD   ) 
 

Value:

do {                                    \
    int tmp_ = (Pike_compiler->flags & ~COMPILATION_FORCE_RESOLVE) |    \
      ((OLD) & COMPILATION_FORCE_RESOLVE);                              \
    DO_IF_FRD(fprintf(stderr,                                           \
                      "Force resolve unset. Flags:0x%04x (0x%04x)\n",   \
                      tmp_, Pike_compiler->flags));                     \
    Pike_compiler->flags = tmp_;                                        \
  } while(0)


Typedef Documentation

typedef int supporter_callback(void *, int)
 


Function Documentation

PMOD_EXPORT int add_constant struct pike_string name,
struct svalue c,
INT32  flags
 

PMOD_EXPORT int add_float_constant const char *  name,
FLOAT_ARG_TYPE  f,
INT32  flags
 

PMOD_EXPORT int add_function_constant const char *  name,
void(*)(INT32)  cfun,
const char *  type,
int  flags
 

PMOD_EXPORT int add_integer_constant const char *  name,
INT_ARG_TYPE  i,
INT32  flags
 

PMOD_EXPORT int add_object_constant const char *  name,
struct object o,
INT32  flags
 

PMOD_EXPORT int add_program_constant const char *  name,
struct program p,
INT32  flags
 

void add_relocated_int_to_program INT32  i  ) 
 

PMOD_EXPORT int add_string_constant const char *  name,
const char *  str,
INT32  flags
 

BLOCK_ALLOC_FILL_PAGES program  ,
n/  a
 

int call_dependants struct Supporter s,
int  finish
 

int call_handle_inherit struct pike_string s  ) 
 

PMOD_EXPORT void change_compiler_compatibility int  major,
int  minor
 

void check_all_programs void   ) 
 

void check_program struct program p  ) 
 

void cleanup_program void   ) 
 

struct program* compile struct pike_string aprog,
struct object ahandler,
int  amajor,
int  aminor,
struct program atarget,
struct object aplaceholder
 

void compiler_do_inherit node n,
INT32  flags,
struct pike_string name
 

void count_memory_in_programs INT32 *  ,
INT32 * 
 

PMOD_EXPORT int debug_end_class const char *  name,
ptrdiff_t  namelen,
INT32  flags
 

PMOD_EXPORT struct program* debug_end_program void   ) 
 

PMOD_EXPORT void debug_start_new_program int  line,
const char *  file
 

INT32 define_function struct pike_string name,
struct pike_type type,
unsigned  flags,
unsigned  function_flags,
union idptr func,
unsigned  opt_flags
 

int define_variable struct pike_string name,
struct pike_type type,
INT32  flags
 

PMOD_EXPORT void do_inherit struct svalue s,
INT32  flags,
struct pike_string name
 

void dump_program_desc struct program p  ) 
 

void dump_program_tables struct program p,
int  indent
 

struct program* end_first_pass int  finish  ) 
 

void ext_store_program_line struct program prog,
INT32  line,
struct pike_string file
 

int find_child struct program parent,
struct program child
 

PMOD_EXPORT int find_identifier const char *  name,
struct program prog
 

int find_inherit struct program p,
struct pike_string name
 

node* find_module_identifier struct pike_string ident,
int  see_inherit
 

struct pike_string* find_program_name struct program p,
INT32 *  line
 

int find_shared_string_identifier struct pike_string name,
struct program prog
 

void fixate_program void   ) 
 

struct pike_string* format_exception_for_error_msg struct svalue thrown  ) 
 

void fsort_program_identifier_index unsigned short *  start,
unsigned short *  end,
struct program p
 

void gc_check_all_programs void   ) 
 

void gc_cycle_check_all_programs void   ) 
 

size_t gc_free_all_unreferenced_programs void   ) 
 

void gc_mark_all_programs void   ) 
 

void gc_mark_program_as_referenced struct program p  ) 
 

unsigned gc_touch_all_programs void   ) 
 

void gc_zap_ext_weak_refs_in_programs void   ) 
 

PMOD_EXPORT struct pike_string* get_line PIKE_OPCODE_T *  pc,
struct program prog,
INT32 *  linep
 

PMOD_EXPORT struct pike_string* get_program_line struct program prog,
INT32 *  linep
 

int get_small_number char **  q  ) 
 

PMOD_EXPORT char* get_storage struct object o,
struct program p
 

void handle_compile_exception const char *  yyerror_fmt,
  ...
 

struct program* id_to_program INT32  id  ) 
 

PMOD_EXPORT int implements struct program a,
struct program b
 

void init_program void   ) 
 

void init_supporter struct Supporter s,
supporter_callback fun,
void *  data
 

void ins_int INT32  i,
void(*)(char tmp)  func
 

void ins_short int  i,
void(*)(char tmp)  func
 

PMOD_EXPORT int is_compatible struct program a,
struct program b
 

int isidentifier struct pike_string s  ) 
 

int lfun_lookup_id struct pike_string lfun_name  ) 
 

PMOD_EXPORT size_t low_add_storage size_t  size,
size_t  alignment,
ptrdiff_t  modulo_orig
 

struct program* low_allocate_program void   ) 
 

int low_define_variable struct pike_string name,
struct pike_type type,
INT32  flags,
size_t  offset,
INT32  run_time_type
 

int low_find_lfun struct program p,
ptrdiff_t  lfun
 

int low_find_shared_string_identifier struct pike_string name,
struct program prog
 

PMOD_EXPORT struct pike_string* low_get_function_line struct object o,
int  fun,
INT32 *  linep
 

PMOD_EXPORT struct pike_string* low_get_line PIKE_OPCODE_T *  pc,
struct program prog,
INT32 *  linep
 

PMOD_EXPORT char* low_get_line_plain PIKE_OPCODE_T *  pc,
struct program prog,
INT32 *  linep,
int  malloced
 

PMOD_EXPORT struct pike_string* low_get_program_line struct program prog,
INT32 *  linep
 

PMOD_EXPORT char* low_get_program_line_plain struct program prog,
INT32 *  linep,
int  malloced
 

ptrdiff_t low_get_storage struct program o,
struct program p
 

void low_inherit struct program p,
struct object parent,
int  parent_identifier,
int  parent_offset,
INT32  flags,
struct pike_string name
 

void low_pop_local_variables int  level  ) 
 

struct program* low_program_from_function struct program p,
INT32  i
 

int low_reference_inherited_identifier struct program_state *  q,
int  e,
struct pike_string name,
int  flags
 

void low_start_new_program struct program p,
int  pass,
struct pike_string name,
int  flags,
int idp
 

void make_program_executable struct program p  ) 
 

PMOD_EXPORT int map_variable const char *  name,
const char *  type,
INT32  flags,
size_t  offset,
INT32  run_time_type
 

void my_yyerror const char *  fmt,
  ...
 

void optimize_program struct program p  ) 
 

int override_identifier struct reference ref,
struct pike_string name
 

struct program* parent_compilation int  level  ) 
 

PMOD_EXPORT void* parent_storage int  depth  ) 
 

PMOD_EXPORT int pike_add_function2 const char *  name,
void(*)(INT32)  cfun,
const char *  type,
unsigned  flags,
unsigned  opt_flags
 

void pike_set_prog_event_callback void(*)(int cb  ) 
 

void pike_set_prog_optimize_callback node *(*)(node *)  opt  ) 
 

void placeholder_index INT32  args  ) 
 

void pop_compiler_frame void   ) 
 

void pop_local_variables int  level  ) 
 

PMOD_EXPORT struct program* program_from_function const struct svalue f  ) 
 

PMOD_EXPORT struct program* program_from_svalue const struct svalue s  ) 
 

void program_index_no_free struct svalue to,
struct program p,
struct svalue ind
 

struct array* program_indices struct program p  ) 
 

node* program_magic_identifier struct program_state *  state,
int  state_depth,
int  inherit_num,
struct pike_string ident,
int  colon_colon_ref
 

struct array* program_values struct program p  ) 
 

void push_compiler_frame int  lexical_scope  ) 
 

PMOD_EXPORT int quick_add_float_constant const char *  name,
int  name_length,
FLOAT_ARG_TYPE  f,
INT32  flags
 

PMOD_EXPORT int quick_add_function const char *  name,
int  name_length,
void(*)(INT32)  cfun,
const char *  type,
int  type_length,
unsigned  flags,
unsigned  opt_flags
 

PMOD_EXPORT int quick_add_integer_constant const char *  name,
int  name_length,
INT_ARG_TYPE  i,
INT32  flags
 

PMOD_EXPORT int quick_map_variable const char *  name,
int  name_length,
size_t  offset,
const char *  type,
int  type_length,
INT32  run_time_type,
INT32  flags
 

void real_gc_cycle_check_program struct program p,
int  weak
 

void really_free_program struct program  ) 
 

int really_low_find_shared_string_identifier struct pike_string name,
struct program prog,
int  flags
 

int really_low_reference_inherited_identifier struct program_state *  q,
int  e,
int  i
 

node* reference_inherited_identifier struct pike_string super_name,
struct pike_string function_name
 

void rename_last_inherit struct pike_string n  ) 
 

int report_compiler_dependency struct program p  ) 
 

node* resolve_identifier struct pike_string ident  ) 
 

void run_pass2 struct compilation c  ) 
 

PMOD_EXPORT void set_exit_callback void(*)(struct object *)  exit_callback  ) 
 

PMOD_EXPORT void set_gc_check_callback void(*)(struct object *)  m  ) 
 

PMOD_EXPORT void set_gc_recurse_callback void(*)(struct object *)  m  ) 
 

PMOD_EXPORT void set_init_callback void(*)(struct object *)  init_callback  ) 
 

PMOD_EXPORT int simple_add_constant const char *  name,
struct svalue c,
INT32  flags
 

PMOD_EXPORT int simple_add_variable const char *  name,
const char *  type,
INT32  flags
 

void simple_do_inherit struct pike_string s,
INT32  flags,
struct pike_string name
 

int sizeof_variable int  run_time_type  ) 
 

void start_line_numbering void   ) 
 

int store_constant struct svalue foo,
int  equal,
struct pike_string constant_name
 

void store_linenumber INT32  current_line,
struct pike_string current_file
 

int store_prog_string struct pike_string str  ) 
 

int unlink_current_supporter struct Supporter c  ) 
 

void unuse_modules INT32  howmany  ) 
 

void use_module struct svalue s  ) 
 

void va_yyerror const char *  fmt,
va_list  args
 

void verify_supporters void   ) 
 

void yyexplain_not_compatible struct program a,
struct program b,
int  flags
 

void yyexplain_not_implements struct program a,
struct program b,
int  flags
 

void yywarning char *  fmt,
  ...
 


Variable Documentation

struct object* compat_handler
 

int compilation_depth
 

struct object* error_handler
 

struct program* first_program
 

struct program* gc_internal_program
 

const char* const lfun_names[]
 

struct pike_string* lfun_strings[]
 

struct program* null_program
 

PMOD_PROTO struct program_state* Pike_compiler
 

struct program* pike_trampoline_program
 

struct object* placeholder_object
 

struct program* placeholder_program
 

struct pike_string* this_program_string
 


Generated on Fri Jul 22 23:44:30 2005 for Pike by  doxygen 1.3.9.1