pike.git
/
src
/
program.h
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/program.h:1:
/*\ ||| This file a part of Pike, and is copyright by Fredrik Hubinette ||| Pike is distributed as GPL (General Public License) ||| See the files COPYING and DISCLAIMER for more information. \*/ /*
-
* $Id: program.h,v 1.
89
2000/
05
/
23
21
:
12
:05
hubbe
Exp $
+
* $Id: program.h,v 1.
90
2000/
06
/
09
22
:
43
:05
mast
Exp $
*/ #ifndef PROGRAM_H #define PROGRAM_H #include <stdarg.h> #include "global.h" #include "pike_types.h" #include "pike_macros.h" #include "svalue.h" #include "time_stuff.h"
pike.git/src/program.h:297:
extern struct object *error_handler; extern struct object *fake_object; extern struct program *new_program; extern struct program *first_program; extern int compiler_pass; extern long local_class_counter; extern int catch_level; extern INT32 num_used_modules; extern struct program *pike_trampoline_program;
+
extern struct program *gc_internal_program;
/* Flags for identifier finding... */ #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)
pike.git/src/program.h:372:
int low_define_variable(struct pike_string *name, struct pike_string *type, INT32 flags, INT32 offset, INT32 run_time_type); int map_variable(char *name, char *type, INT32 flags, INT32 offset, INT32 run_time_type);
+
int quick_map_variable(char *name,
+
int name_length,
+
INT32 offset,
+
char *type,
+
int type_length,
+
INT32 run_time_type,
+
INT32 flags);
int define_variable(struct pike_string *name, struct pike_string *type, INT32 flags); int simple_add_variable(char *name, char *type, INT32 flags); int add_constant(struct pike_string *name, struct svalue *c, INT32 flags); int simple_add_constant(char *name,
pike.git/src/program.h:447:
int name_length, void (*cfun)(INT32), char *type, int type_length, INT16 flags, int opt_flags); void check_all_programs(void); void init_program(void); void cleanup_program(void); void gc_mark_program_as_referenced(struct program *p);
-
INT32
gc_touch_all_programs(void);
+
unsigned
gc_touch_all_programs(void);
void gc_check_all_programs(void); void gc_mark_all_programs(void);
-
+
void real_gc_cycle_check_program(struct program *p);
+
void real_gc_cycle_check_program_weak(struct program *p);
+
void gc_cycle_check_all_programs(void);
void gc_free_all_unreferenced_programs(void); void count_memory_in_programs(INT32 *num_, INT32 *size_); void push_compiler_frame(int lexical_scope); void pop_local_variables(int level); void pop_compiler_frame(void); int low_get_storage(struct program *o, struct program *p); char *get_storage(struct object *o, struct program *p); struct program *low_program_from_function(struct program *p, INT32 i); struct program *program_from_function(struct svalue *f);
pike.git/src/program.h:480:
#define ADD_FUNCTION(NAME,FUNC,TYPE,FLAGS) \ quick_add_function(NAME,CONSTANT_STRLEN(NAME),FUNC,TYPE,CONSTANT_STRLEN(TYPE),FLAGS,0) #define ADD_PROTOTYPE(NAME,TYPE,FLAGS) \ quick_add_function(NAME,CONSTANT_STRLEN(NAME),0,TYPE,CONSTANT_STRLEN(TYPE),FLAGS,0) #define ADD_INT_CONSTANT(NAME,CONST,FLAGS) \ quick_add_integer_constant(NAME,CONSTANT_STRLEN(NAME),CONST,FLAGS)
+
#define MAP_VARIABLE(NAME,OFFSET,TYPE,RTTYPE,FLAGS) \
+
quick_map_variable(NAME,CONSTANT_STRLEN(NAME),OFFSET,TYPE,CONSTANT_STRLEN(TYPE),RTTYPE,FLAGS)
+
#define ADD_FUNCTION_DTYPE(NAME,FUN,DTYPE,FLAGS) do { \ DTYPE_START; \ {DTYPE} \ { \ struct pike_string *_t; \ DTYPE_END(_t); \ quick_add_function(NAME,CONSTANT_STRLEN(NAME),FUN,_t->str,_t->len,FLAGS,0); \ free_string(_t); \ } \ } while (0) #ifndef NO_PIKE_SHORTHAND #define add_function pike_add_function #endif #define START_NEW_PROGRAM_ID(ID) do { \ start_new_program(); \ new_program->id=PIKE_CONCAT3(PROG_,ID,_ID); \ }while(0)
-
-
#endif /* PROGRAM_H */
-
+
#ifdef DEBUG_MALLOC #define end_program() ((struct program *)debug_malloc_pass(debug_end_program())) #define end_class(NAME, FLAGS) (debug_malloc_touch(new_program), debug_end_class(NAME, CONSTANT_STRLEN(NAME), FLAGS)) #else #define end_class(NAME,FLAGS) debug_end_class(NAME, CONSTANT_STRLEN(NAME), FLAGS) #define end_program debug_end_program #endif #ifdef PIKE_DEBUG #define start_new_program() debug_start_new_program(__LINE__,__FILE__) #else #define start_new_program() debug_start_new_program() #endif
-
+
#define gc_cycle_check_program(X) \
+
enqueue_lifo(&gc_mark_queue, (queue_call) real_gc_cycle_check_program, (X))
+
#define gc_cycle_check_program_weak(X) \
+
enqueue_lifo(&gc_mark_queue, (queue_call) real_gc_cycle_check_program_weak, (X))
+
+
+
#endif /* PROGRAM_H */