diff -ruN klic-3.003-2002-03-09/include/klic/g_methtab.h klic-3.003-2002-03-09a/include/klic/g_methtab.h --- klic-3.003-2002-03-09/include/klic/g_methtab.h Sat Mar 9 12:02:52 2002 +++ klic-3.003-2002-03-09a/include/klic/g_methtab.h Sat Mar 9 14:02:05 2002 @@ -31,10 +31,9 @@ unsigned long length */ ); q* (*gc)( /* struct data_object* obj */ ); void (*deallocate)( /* struct data_object* obj */ ); - q *(*body_generic)( /* struct data_object *obj, + void (*body_generic)( /* struct data_object* obj, q method_functor, - q *argv, - q *allocp */ ); + q* argv */ ); q (*g_generic)( /* struct data_object *obj, q method_functor, q *args */ ); @@ -79,8 +78,7 @@ struct generator_object_method_table { void (*active_unify)(/* q self, q other */); - q (*generate)(/* struct generator_object* self, - q* allocp */); + q (*generate)(/* struct generator_object* self */); q (*suspend)(/* q reference, struct goalrec* goal */); long (*print)/* print what ? */ (/* struct generator_object* self, FILE* out_stream, diff -ruN klic-3.003-2002-03-09/include/klic/gd_macro.h klic-3.003-2002-03-09a/include/klic/gd_macro.h --- klic-3.003-2002-03-09/include/klic/gd_macro.h Sat Mar 9 13:30:50 2002 +++ klic-3.003-2002-03-09a/include/klic/gd_macro.h Sat Mar 9 14:07:45 2002 @@ -380,12 +380,8 @@ GD_OBJ_TYPE* GD_SELF; #define GDDEF_GENERIC() \ -static q * \ - GD_rappend(generic) (GD_SELF,g_method_functor,GD_ARGV,g_allocp) \ - GD_OBJ_TYPE * GD_SELF; \ - long g_method_functor; \ - q GD_ARGV[]; \ - q *g_allocp; +static void \ +GD_rappend(generic) (GD_OBJ_TYPE* GD_SELF, long g_method_functor, q* GD_ARGV) /**********************************************************************/ /* guard utility */ diff -ruN klic-3.003-2002-03-09/include/klic/gg_macro.h klic-3.003-2002-03-09a/include/klic/gg_macro.h --- klic-3.003-2002-03-09/include/klic/gg_macro.h Sat Mar 9 13:01:28 2002 +++ klic-3.003-2002-03-09a/include/klic/gg_macro.h Sat Mar 9 13:38:38 2002 @@ -187,10 +187,7 @@ struct goalrec* GG_GOAL; #define GGDEF_GENERATE() \ -static q \ -GG_rappend(generate) (GG_SELF, g_allocp) \ - GG_OBJ_TYPE *GG_SELF; \ - q *g_allocp; +static q GG_rappend(generate) (GG_OBJ_TYPE* GG_SELF) #define GGDEF_PRINT() \ static \ diff -ruN klic-3.003-2002-03-09/runtime/gcode.c klic-3.003-2002-03-09a/runtime/gcode.c --- klic-3.003-2002-03-09/runtime/gcode.c Sat Mar 9 12:16:17 2002 +++ klic-3.003-2002-03-09a/runtime/gcode.c Sat Mar 9 14:13:42 2002 @@ -155,6 +155,7 @@ GDDEF_GENERIC() { G_STD_DECL; + q* g_allocp = heapp(); GD_SWITCH_ON_GMETHOD { GD_METHOD_CASE(module_1); @@ -167,7 +168,7 @@ GD_METHOD_NAME_CASE_DEFAULT; } } - GD_RETURN; + set_heapp(g_allocp); } GDDEF_PRINT() diff -ruN klic-3.003-2002-03-09/runtime/ge_exref.c klic-3.003-2002-03-09a/runtime/ge_exref.c --- klic-3.003-2002-03-09/runtime/ge_exref.c Sat Mar 9 13:03:21 2002 +++ klic-3.003-2002-03-09a/runtime/ge_exref.c Sat Mar 9 13:40:34 2002 @@ -39,16 +39,14 @@ { G_STD_DECL; q rdhok; - q* allocp; + q* allocp = heapp(); generic_arg[0] = makeint(GG_SELF->node); generic_arg[1] = makeint(GG_SELF->index); generic_arg[2] = makeint(GG_SELF->wec); - allocp = g_allocp; /* Using allocp in 'new_generic' */ new_generic(read_hook_g_new, 3, rdhok, 0); assert(allocp == heapp()); - g_allocp = allocp; /* Using allocp in 'new_generic' */ GG_SELF->method_table = 0; @@ -58,7 +56,6 @@ GG_SELF->gc_flag = IMPREC_RELEASED; - set_heapp(g_allocp); return rdhok; } diff -ruN klic-3.003-2002-03-09/runtime/generic.c klic-3.003-2002-03-09a/runtime/generic.c --- klic-3.003-2002-03-09/runtime/generic.c Fri Mar 8 16:37:26 2002 +++ klic-3.003-2002-03-09a/runtime/generic.c Sat Mar 9 14:04:04 2002 @@ -129,8 +129,9 @@ fatal("Generic method issued to a non-object"); } g_obj = data_objectp(g_object); - g_allocp = (g_obj->method_table) - ->body_generic(g_obj, g_method_functor, g_argv, g_allocp); + set_heapp(g_allocp); + g_obj->method_table->body_generic(g_obj, g_method_functor, g_argv); + g_allocp = heapp(); GD_RETURN; } diff -ruN klic-3.003-2002-03-09/runtime/gfloat.c klic-3.003-2002-03-09a/runtime/gfloat.c --- klic-3.003-2002-03-09/runtime/gfloat.c Sat Mar 9 12:29:32 2002 +++ klic-3.003-2002-03-09a/runtime/gfloat.c Sat Mar 9 14:15:10 2002 @@ -177,6 +177,7 @@ unsigned long result_index; GD_OBJ_TYPE* newobj; double (*func)(); + q* g_allocp = heapp(); self = GD_SELF->value; GD_SWITCH_ON_METHOD { @@ -249,7 +250,8 @@ GD_METHOD_CASE_DEFAULT; } } - GD_RETURN; + set_heapp(g_allocp); + return; apply_1: result = func(self); @@ -258,7 +260,6 @@ set_heapp(g_allocp); GD_UNIFY(GD_ARGV[result_index], makefunctor(newobj)); assert(g_allocp == heapp()); - GD_RETURN; } /* guard generic methods */ diff -ruN klic-3.003-2002-03-09/runtime/ggoal.c klic-3.003-2002-03-09a/runtime/ggoal.c --- klic-3.003-2002-03-09/runtime/ggoal.c Tue Mar 5 22:14:03 2002 +++ klic-3.003-2002-03-09a/runtime/ggoal.c Sat Mar 9 14:15:26 2002 @@ -289,6 +289,7 @@ GDDEF_GENERIC() { G_STD_DECL; + q* g_allocp = heapp(); GD_SWITCH_ON_METHOD{ GD_METHOD_CASE(reduce_0); @@ -300,7 +301,7 @@ GD_METHOD_CASE(set__predicate_2); GD_METHOD_CASE_DEFAULT; } - GD_RETURN; + set_heapp(g_allocp); } /* Guard Methods */ diff -ruN klic-3.003-2002-03-09/runtime/gmodule.c klic-3.003-2002-03-09a/runtime/gmodule.c --- klic-3.003-2002-03-09/runtime/gmodule.c Sat Mar 9 12:51:01 2002 +++ klic-3.003-2002-03-09a/runtime/gmodule.c Sat Mar 9 14:15:40 2002 @@ -79,12 +79,13 @@ GDDEF_GENERIC() { G_STD_DECL; + q* g_allocp = heapp(); GD_SWITCH_ON_GMETHOD { GD_METHOD_CASE(name_1); GD_METHOD_CASE_DEFAULT; } - GD_RETURN; + set_heapp(g_allocp); } GDDEF_PRINT() diff -ruN klic-3.003-2002-03-09/runtime/gmvv.c klic-3.003-2002-03-09a/runtime/gmvv.c --- klic-3.003-2002-03-09/runtime/gmvv.c Sat Mar 9 12:51:38 2002 +++ klic-3.003-2002-03-09a/runtime/gmvv.c Sat Mar 9 14:15:55 2002 @@ -419,6 +419,7 @@ GDDEF_GENERIC() { G_STD_DECL; + q* g_allocp = heapp(); GD_SWITCH_ON_METHOD{ GD_METHOD_CASE(element_2); @@ -429,7 +430,7 @@ GD_METHOD_CASE(join_2); GD_METHOD_CASE_DEFAULT; } - GD_RETURN; + set_heapp(g_allocp); } /* guard generic methods */ diff -ruN klic-3.003-2002-03-09/runtime/gobj.h klic-3.003-2002-03-09a/runtime/gobj.h --- klic-3.003-2002-03-09/runtime/gobj.h Sat Mar 9 12:09:10 2002 +++ klic-3.003-2002-03-09a/runtime/gobj.h Sat Mar 9 13:42:24 2002 @@ -21,7 +21,7 @@ method_table_of(obj)->active_unify((obj), (anothor)); \ }while(0) -#define generic_generate(obj) (method_table_of(obj)->generate((obj), heapp())) +#define generic_generate(obj) (method_table_of(obj)->generate(obj)) /*** for Shared-memory KLIC system ***/ #define generic_shmcopy(obj) \ diff -ruN klic-3.003-2002-03-09/runtime/gstring.c klic-3.003-2002-03-09a/runtime/gstring.c --- klic-3.003-2002-03-09/runtime/gstring.c Sat Mar 9 12:53:02 2002 +++ klic-3.003-2002-03-09a/runtime/gstring.c Sat Mar 9 14:16:18 2002 @@ -396,6 +396,7 @@ GDDEF_GENERIC() { G_STD_DECL; + q* g_allocp = heapp(); GD_SWITCH_ON_METHOD{ GD_METHOD_CASE(string_2); @@ -408,7 +409,7 @@ GD_METHOD_CASE(search__character_4); GD_METHOD_CASE_DEFAULT; } - GD_RETURN; + set_heapp(g_allocp); } /* guard generic methods */ diff -ruN klic-3.003-2002-03-09/runtime/random.c klic-3.003-2002-03-09a/runtime/random.c --- klic-3.003-2002-03-09/runtime/random.c Sat Mar 9 13:06:11 2002 +++ klic-3.003-2002-03-09a/runtime/random.c Sat Mar 9 13:42:13 2002 @@ -42,6 +42,7 @@ q var; long one_random; struct generator_susp* s; + q* g_allocp = heapp(); GG_TRY_TO_ALLOC(cons, makecons, 2, gc_request); GG_TRY_TO_ALLOC(var, makeref, 1, gc_request);