--- stack/stack.h 2002/03/08 16:09:30 1.5 +++ stack/stack.h 2002/03/10 10:06:36 1.9 @@ -35,7 +35,13 @@ list } type:4; /* Type of stack element */ - int gc_garb:1; + union { + struct { + unsigned int mark:1; + unsigned int protect:1; + } flag; + unsigned int no_gc:2; + } gc; union { void *ptr; /* Pointer to the content */ @@ -69,7 +75,6 @@ defined symbols */ typedef struct { stackitem *gc_ref; - stackitem *gc_protect; int gc_limit, gc_count; stackitem *head; /* Head of the stack */ @@ -92,6 +97,7 @@ symbol **hash(hashtbl, const char*); value* new_val(environment*); void gc_mark(value*); +void gc_maybe(environment *env); extern void gc_init(environment*); void push_val(environment*, value*); void push_int(environment*, int); @@ -139,8 +145,8 @@ extern void readline(environment*); extern void sx_72656164(environment*); extern void foreach(environment*); -void protect(environment*, value*); -void unprotect(environment*); +void protect(value*); +void unprotect(value*); extern void copying(environment*); extern void warranty(environment*); extern void sx_2a(environment*); @@ -149,3 +155,4 @@ extern void sx_3c(environment*); extern void sx_3c3d(environment*); extern void sx_3e3d(environment*); +extern void sx_646976(environment*);