diff -ruN klic-3.003-2002-03-20/ChangeLog klic-3.003-2002-03-21/ChangeLog
--- klic-3.003-2002-03-20/ChangeLog	Sat Feb 16 10:44:20 2002
+++ klic-3.003-2002-03-21/ChangeLog	Thu Mar 21 20:01:25 2002
@@ -1,3 +1,156 @@
+2002-03-20 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* runtime/random.c: change random_numbers to consumer object.
+
+2002-03-19 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* remove shared memory implementation (SHM).
+
+2002-03-16 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* compiler/{generate.kl1, normalize.kl1}:
+	change gen_code/14 to gen_code/6.
+
+2002-03-15 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* {compiler, runtime}/*.kl1: comments.
+
+2002-03-12 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* compiler/{obj.kl1, write.kl1},
+	include/klic/{control.h, g_vector.h, gb.h, gd_methtab.h, generic.h},
+	runtime/{asyncio.h, cntlmsg.c, config/pvm-tcp/distpkt.c,
+	datamsg.c, ge_exref.c, generic.c, gfloat.c, gg_shvar.c,
+	ggoal.c, gmvv.c, gstring.c, intrpt.c, itimer.kl1, kmain.c,
+	ktimer.c, profile.c, sched.c, sendrecv.c, shm.h, shm_obj.c,
+	signal.c, step.c, step.h, trace.c, trace.h, unify.c}:
+	not to pass allocp to some functions.
+
+2002-03-11 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/{g_basic.h, g_methtab.h, gc_macro.h,
+	gc_methtab.h, gd_macro.h, gg_macro.h, gg_methtab.h},
+	runtime/{gcode.c, ge_exref.c, ge_readhook.c,
+	ge_replyhook.c, generic.c, gfloat.c, gg_shbusy.c, gg_shvar.c,
+	ggoal.c, gio.c, gmerge.c, gmodule.c, gmvv.c, gpointer.c,
+	gstring.c, gtermarray.c, random.c, unify.c, wakeup.c}:
+	generator_unify returns success or fail, not g_allocp.
+
+2002-03-09 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/{g_methtab.h, gc_macro.h, gd_macro.h, gg_macro.h},
+	runtime/{faisus.c, gcode.c, ge_exref.c, ge_readhook.c,
+	ge_replyhook.c, generic.c, gfloat.c, gg_shbusy.c, gg_shvar.c,
+	ggoal.c, gio.c, gmerge.c, gmodule.c, gmvv.c, gobj.h, gpointer.c,
+	gstring.c, gtermarray.c, random.c, unify.c, uterms.kl1, wakeup.c}:
+	not to pass g_allocp to some generic methods.
+
+2002-03-08 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* Configure, MANIFEST, include/klic/{susp.h, unify.h},
+	runtime/{Makefile.head, Makefile.tail, asyncio.c, cntlmsg.c,
+	config/???/*.mk.sh, faisus.c, generic.c, gg_shbusy.c, gg_shvar.c,
+	ktimer.c, shm_obj.c, signal.c, step.c, unify.c}:
+	not to pass allocp to some functions.
+
+2002-03-05 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/{g_basic.h, g_extern.h,
+	g_methtab.h, gc_macro.h, gd_macro.h, gg_macro.h},
+	runtime/{export_table.c, gc.c, gcode.c, ge_exref.c,
+	ge_readhook.c, ge_replyhook.c, generic.c, gfloat.c,
+	ggoal.c, gio.c, gmerge.c, gmodule.c, gmvv.c, gpointer.c,
+	gstring.c, gtermarray.c, random.c, sendrecv.c, wakeup.c}:
+	not to pass sp to functions.
+
+2002-03-04 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* Configure, include/klic/alloc.h,
+	runtime/{Makefile.tail, alloc.c, cntlmsg.c, config/???/runtime.mk.sh,
+	datamsg.c, debug.c, export_table.c, faisus.c, gc.c, intrpt.c,
+	kmain.c, print.c, sched.c, shm_throw.c, unify.c}:
+	remove DEBUGLIB.
+	new function klic_alloc.
+
+2002-03-02 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* runtime/config/*/*: clean.
+
+2002-02-26 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/struct.h,
+	runtime/{asyncio.c, bb.c, cmphsh.c, cntlmsg.c,
+	config/pvm/distproc.h, config/pvm-tcp/distpkt.c, faisus.c,
+	ge_exref.c, ge_exref.h, intrpt.c, kmain.c, sched.c, unify.c}:
+	change some globals to static.
+
+2002-02-25 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/{alloc.h, control.h, g_basic.h, gb.h,
+	gc_macro.h, gd_macro.h, gg_macro.h, sighndl.h, struct.h},
+	runtime/{alloc.c, asyncio.c, asyncio.h, bodyblt.kl1, cntlmsg.c,
+	config/pvm-tcp/distpkt.c, datamsg.c, debug.c, export_table.c, faisus.c,
+	gc.c, ge_exref.c, generic.c, gg_shvar.c, gio.c, gmvv.c, gstring.c,
+	gunix.kl1, intrpt.c, kmain.c, random.c, sched.c, sendrecv.c, shm_gc.c,
+	shm_obj.c, shm_throw.c, signal.c, step.c, sysc.kl1, trace.c, unify.c}:
+	change some members of global_variables to static.
+
+2002-02-24 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/{control.h, g_methtab.h, gc_macro.h, gc_methtab.h,
+	gd_macro.h, gd_methtab.h, gg_macro.h, gg_methtab.h},
+	runtime/{gcode.c, ge_exref.c, ge_readhook.c, ge_replyhook.c,
+	generic.c, gfloat.c, ggoal.c, gio.c, gmerge.c, gmodule.c, gmvv.c,
+	gpointer.c, gstring.c, gtermarray.c, shm_obj.c, wakeup.c}:
+	assert heapp.
+
+2002-02-22 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/{bb.h, g_basic.h,
+	gc_macro.h, gd_macro.h, gg_macro.h, unify.h},
+	runtime/{*.kl1, asyncio.c, gcode.c, generic.c, gfloat.c,
+	gmerge.c, gmvv.c, gpointer.c, gstring.c, gtermarray.c}:
+	public declarations.
+
+2002-02-20 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* compiler/obj.kl1,
+	include/klic/{g_basic.h, gc.macro.h, gd_macro.h,
+	gg_macro.h, index.h, sighndl.h, struct.h},
+	runtime/{gc.c, generic.c, gobj.h, gunix.kl1,
+	intrpt.c, kmain.c, signal.c, unify.c}:
+	remove unused code.
+
+2002-02-19 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/klic/{alloc.h, struct.h},
+	runtime/{alloc.c, asyncio.c, export_table.c, gc.c, kmain.c, ktimer.c,
+	print.c, random.c, sendrecv.c, signal.c, sysc.kl1, var.kl1}:
+	not to pass globals to GCing functions.
+
+2002-02-18 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* compiler/write.kl1,
+	include/klic/{alloc.h, control.h, g_basic.h, g_extern.h,
+	g_methtab.h, gb.h, gc_macro.h, gc_methtab.h, gd_macro.h,
+	gd_methtab.h, gg_macro.h, gg_methtab.h},
+	runtime/{alloc.c, config/*/distpkt.c, export_table.c,
+	faisus.c, gc.c, generic.c, gmvv.c, gstring.c,
+	import_table.c, intrpt.c, kmain.c, ktimer.c, otbl.c,
+	print.c, sched.c, sendrecv.c, step.c, step.h, unify.c}:
+	not to pass allocp to some functions.
+
+2002-02-16 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
+
+	* include/Makefile.tail, include/klic/{control.h, gb.h,
+	gc_macro.h, gd_macro.h, generic.h, gg_macro.h, struct.h},
+	runtime/{alloc.c, asyncio.c, config/*/distpkt.c,
+	expoprt_table.c, faisus.c, gc.c, ge_exref.c, gen.kl1, generic.c,
+	gfloat.c, gg_shvar.c, ggoal.c, gio.c, gunix.kl1, intrpt.c,
+	io.kl1, kmain.c, ktimer.c, profile.c, random.c, sched.c,
+	sendrecv.c, shm_obj.c, signal.c, step.c, trace.c, unify.c}:
+	change heapp from macro to functions.
+
 2002-02-08 TAKAGI Yusuke <takagi@ueda.info.waseda.ac.jp>
 
 	* compiler/klicdb.c,
diff -ruN klic-3.003-2002-03-20/include/klic/g_basic.h klic-3.003-2002-03-21/include/klic/g_basic.h
--- klic-3.003-2002-03-20/include/klic/g_basic.h	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/include/klic/g_basic.h	Thu Mar 21 21:58:37 2002
@@ -58,6 +58,63 @@
 
 #define G_CLASS_NAME_STRING  G_stringify(CLASS_NAME)
 
+#define	G_ERROR_IN_NEW(errmsg) \
+  G_error((errmsg), "creation", "", G_CLASS_NAME_STRING)
+
+#define G_RETURN_FROM_PRINT()  do{ return 1L; }while(0)
+
+#define G_RETURN_FROM_GC(newgobj)  do{ return (q*) (newgobj); }while(0)
+
+#define G_UNIFY_VALUE(x, y) \
+do{ \
+  if( isref(x) && derefone(x) == (x) ){ \
+    derefone(x) = (y); \
+  }else{ \
+    do_shallow_unify_value((x), (y)); \
+  } \
+}while(0)
+
+#define G_SWITCH_ON_TERM(cons,atomic,funct,dobj,susp) \
+do{ \
+  for(;;){ \
+    q _temp; \
+    switch( ptagof(g_term) ){ \
+    case ATOMIC: goto atomic; \
+    case CONS:   goto cons; \
+    case FUNCTOR: \
+      if( isref(functor_of(g_term)) ) goto dobj; \
+      goto funct; \
+    case VARREF: \
+      _temp = derefone(g_term); \
+      if( isref(_temp) && g_term == derefone(_temp) ) goto susp; \
+      g_term = _temp; \
+      continue; \
+    } \
+  } \
+}while(0)
+
+#define G_DEF_NEW()  extern q G_rappend(new) (long g_argc, q* g_argv)
+
+#define G_STD_DECL_FOR_NEW() \
+  G_STD_DECL; \
+  q (*g_myself)() = G_rappend(new)
+
+#define G_DEREF_FOR_NEW(x) \
+do{ \
+  while( isref(x) ){ \
+    q _temp = derefone(x); \
+    if( isref(_temp) && (x) == derefone(_temp) ){ \
+      q _var; \
+      struct goalrec* _goal; \
+      G_MAKE_THE_NEW_GOAL(&_var, &_goal, g_myself, g_argc, g_argv); \
+      G_SUSPEND((x), _goal); \
+      return _var; \
+    }else{ \
+      (x) = _temp; \
+    } \
+  } \
+}while(0)
+
 
 /** G_HEAPALLOC: procedure
  * from: type&
@@ -139,12 +196,18 @@
 /* deta flag for Object Table */
 enum g_type { G_DATA, G_CONSUMER, G_GENERATOR };
 
-/*
-  external functions
-*/
+
+/* external functions */
+
 
 /* runtime/generic.c */
+
 extern NeverReturn void
 G_error(char* errmsg, char* where, char* object_kind, char* class);
+
+extern void
+G_MAKE_THE_NEW_GOAL(q* var, struct goalrec** goalp1,
+  q (*myself)(), unsigned long argc, q* argv );
+
 
 #endif /* _KLIC_G_BASIC_H_ */
diff -ruN klic-3.003-2002-03-20/include/klic/gc_macro.h klic-3.003-2002-03-21/include/klic/gc_macro.h
--- klic-3.003-2002-03-20/include/klic/gc_macro.h	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/include/klic/gc_macro.h	Thu Mar 21 21:57:07 2002
@@ -12,8 +12,6 @@
 #include <klic/basic.h>  /* fatal, debug_printf, klic_fprintf, klic_putc */
 #include <klic/g_basic.h>
 
-extern q GC_wakeup_g_new();
-
 /* runtime/unify.c */
 extern void do_shallow_unify(q x, q y);
 extern void do_shallow_unify_value(q x, q y);
@@ -21,16 +19,8 @@
 
 /* runtime/generic.c */
 extern void G_SUSPEND(q x, struct goalrec* goal);
-extern void G_MAKE_THE_NEW_GOAL(
-  q* var, struct goalrec** goalp1, q(*myself)(),
-  unsigned long argc, q argv[] );
-
-/* runtime/generic.c */
 extern q GC_MAKE_HOOK_VAR(struct consumer_object* obj);
 
-#define	   GC_ERROR_IN_NEW(errmsg) \
-  G_error((errmsg), "creation", "consumer", G_CLASS_NAME_STRING)
-
 #define    GC_RETURN_WITH_HOOK(x) \
 do{ \
   set_rest_of_stream(x); \
@@ -43,45 +33,6 @@
   return; \
 }while(0)
 
-#define GC_SUSPEND(var) \
-do{ \
-  q newvar, tmp; \
-  q argv[2]; \
-  G_MAKE_VAR(newvar); \
-  set_rest_of_stream(newvar); \
-  argv[0] = GC_TERM; \
-  argv[1] = newvar; \
-  tmp = GC_wakeup_g_new(2, argv); \
-  GC_KL1_UNIFY((var), tmp); \
-  return heapp(); \
-}while(0)
-
-/**************************************************/
-
-#define GC_SWITCH_ON_TERM(cons,atomic,funct,dobj,susp) \
-do{ \
-  while (1) { \
-    if (!isstruct(GC_TERM)) { \
-      if (atomicnotref(GC_TERM)) { \
-	goto atomic; \
-      } else { \
-	q temp0 = derefone(GC_TERM); \
-	if(isref(temp0) && (GC_TERM) == derefone(temp0)) { \
-	  goto susp; \
-	} else { \
-	  (GC_TERM) = temp0; \
-	} \
-      } \
-    } else if(functnotcons(GC_TERM)) {\
-	if(isref(functor_of(GC_TERM))) { \
-	  goto dobj; \
-	} else {\
-           goto funct; \
-        } \
-    } else goto cons; \
-  } \
-}while(0)
-
 /***************************************************************************/
 
 #define GC_TRY_TO_ALLOC(new, type, size, gc_request) \
@@ -91,57 +42,8 @@
   if (res == GENERIC_GCREQUEST) goto gc_request; \
 }while(0)
 
-
-#define GC_UNIFY(x,y) \
-  (do_shallow_unify((x), (y)))
-
-#define GC_UNIFY_VALUE(x, y)					\
-do{								\
-  if (!isref(x) || derefone(x) != (x)) {			\
-    do_shallow_unify_value((x), (y));	\
-  } else {							\
-    derefone(x) = (y);						\
-  }								\
-}while(0)
-
 /**************************************************************************/
 
-#define GCset_myself_for_new \
-  q (*g_myself)() = G_rappend(new)
-
-#define GC_STD_DECL_FOR_NEW \
-  G_STD_DECL; \
-  GCset_myself_for_new
-
-
-#define GCDEF_NEW() \
-extern q G_rappend(new) (long GC_ARGC, q* GC_ARGV)
-
-#define GC_DEREF_FOR_NEW(x) \
-do{ \
-  while (1) { \
-    if (!isstruct(x)) { \
-      if (atomicnotref(x)) { \
-	break; \
-      } else { \
-	q temp0 = derefone(x); \
-	if(isref(temp0) && (x) == derefone(temp0)) { \
-          q var; \
-          struct goalrec *goal; \
-	  G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, GC_ARGC, GC_ARGV); \
-          G_SUSPEND((x), goal); \
-          GC_RETURN_FROM_NEW(var); \
-	} else { \
-	  (x) = temp0; \
-	} \
-      } \
-    } else { \
-      break; \
-    } \
-  } \
-}while(0)
-
-
 #define GCSET_NEWOBJ_FOR_NEW(newgobj,size) \
 do{ \
   q res; \
@@ -149,28 +51,21 @@
   if(res == GENERIC_GCREQUEST){ \
     q var; \
     struct goalrec *goal; \
-    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, GC_ARGC, GC_ARGV); \
+    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, g_argc, g_argv); \
     G_PUSH_GOAL_TO_SPECIAL_QUEUE(goal); \
-    GC_RETURN_FROM_NEW(var); \
+    return var; \
   } \
   (newgobj)->method_table = &G_method_table; \
 }while(0)
 
-#define GC_RETURN_FROM_NEW(x) \
-do{ \
-  return (x); \
-}while(0)
-
 
 /**********************************************************************/
 
 #define GCDEF_UNIFY() \
-static void G_rappend(active_unify) (GC_OBJ_TYPE* GC_SELF, q GC_TERM)
+static void G_rappend(active_unify) (GC_OBJ_TYPE* GC_SELF, q g_term)
 
 #define GC_PRINT(x) klic_fprintf(g_fp, (x))
 
-#define GC_RETURN_FROM_PRINT  do{ return 1L; }while(0)
-
 #define GCDEF_PRINT() \
   static \
   long \
@@ -193,11 +88,6 @@
   if(heapp() > real_heaplimit()) fatal("not enough space collected"); \
 }while(0)
 
-#define GC_RETURN_FROM_GC(newgobj) \
-do{ \
-  return (q *) (newgobj); \
-}while(0)
-
 #define GCDEF_DEALLOCATE() \
   static void \
   G_rappend(deallocate) (GC_SELF) \
@@ -207,13 +97,13 @@
 
 #define GCSET_MESSAGE(message)					\
 do{								\
-  (message) = G_CAR_OF(GC_TERM);				\
+  (message) = G_CAR_OF(g_term);				\
   while (G_ISREF(message)) {					\
     q temp = G_DEREFONE(message);				\
     if (G_ISREF(temp) &&					\
 	(temp == (message) || G_DEREFONE(temp) == (message))) {	\
       reason = (message);					\
-      GC_SELF->stream = GC_TERM;				\
+      GC_SELF->stream = g_term;				\
       goto suspend;						\
     } else {							\
       (message) = temp;						\
@@ -229,7 +119,7 @@
       q temp1 = G_DEREFONE(temp);				\
       if (G_ISREF(temp1) && G_DEREFONE(temp1) == temp) {	\
 	reason = temp1;						\
-	GC_SELF->stream = GC_TERM;				\
+	GC_SELF->stream = g_term;				\
 	goto suspend;						\
       }								\
       temp = temp1;						\
@@ -251,7 +141,7 @@
       q temp1 = G_DEREFONE(temp);				\
       if (G_ISREF(temp1) && G_DEREFONE(temp1) == temp) {	\
 	reason = temp1;						\
-	GC_SELF->stream = GC_TERM;				\
+	GC_SELF->stream = g_term;				\
 	goto suspend;						\
       }								\
       temp = temp1;						\
diff -ruN klic-3.003-2002-03-20/include/klic/gd_macro.h klic-3.003-2002-03-21/include/klic/gd_macro.h
--- klic-3.003-2002-03-20/include/klic/gd_macro.h	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/include/klic/gd_macro.h	Thu Mar 21 21:58:58 2002
@@ -27,10 +27,6 @@
   struct goalrec** goalp1, q var,
   unsigned long method_functor, q argv[] );
 
-extern void G_MAKE_THE_NEW_GOAL(
-  q* var, struct goalrec** goalp1, q(*myself)(),
-  unsigned long argc, q argv[] );
-
 extern void G_SUSPEND(q x, struct goalrec* goal);
 
 
@@ -44,8 +40,6 @@
 
 #define GD_UNIFY_FAIL \
   G_error("Failure", "active unification", "data", G_CLASS_NAME_STRING)
-#define GD_ERROR_IN_NEW(errmsg) \
-  G_error((errmsg), "creation", "data", G_CLASS_NAME_STRING)
 #define GD_ERROR_IN_METHOD(errmsg, methodname) \
   G_error((errmsg), (methodname), "data", G_CLASS_NAME_STRING)
 
@@ -63,7 +57,7 @@
   if(res == GENERIC_GCREQUEST){ \
     struct goalrec *goal; \
     GD_MAKE_GENERIC_GOAL(&goal, makefunctor(GD_SELF), g_method_functor, \
-			   GD_ARGV); \
+			 g_argv ); \
     G_PUSH_GOAL(goal); \
     return; \
   } \
@@ -76,9 +70,9 @@
   if(res == GENERIC_GCREQUEST){ \
     q var; \
     struct goalrec *goal; \
-    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, GD_ARGC, GD_ARGV); \
+    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, g_argc, g_argv); \
     G_PUSH_GOAL_TO_SPECIAL_QUEUE(goal); \
-    GD_SUSPEND_NEW(var); \
+    return var; \
   } \
 }while(0)
 
@@ -91,9 +85,9 @@
   if(res == GENERIC_GCREQUEST){ \
     q var; \
     struct goalrec *goal; \
-    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, GD_ARGC, GD_ARGV); \
+    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, g_argc, g_argv); \
     G_PUSH_GOAL_TO_SPECIAL_QUEUE(goal); \
-    GD_SUSPEND_NEW(var); \
+    return var; \
   } \
   (newgobj)->method_table = &G_method_table; \
 }while(0)
@@ -106,7 +100,7 @@
   if (res == GENERIC_GCREQUEST) { \
     struct goalrec *goal; \
     GD_MAKE_GENERIC_GOAL(&goal, makefunctor(GD_SELF), \
-			   g_method_functor, GD_ARGV ); \
+			 g_method_functor, g_argv ); \
     G_PUSH_GOAL(goal); \
     return; \
   } \
@@ -153,7 +147,7 @@
 	if(isref(temp0) && (x) == derefone(temp0)) { \
           struct goalrec *goal; \
 	  GD_MAKE_GENERIC_GOAL(&goal, makefunctor(GD_SELF), \
-				 g_method_functor, GD_ARGV ); \
+				g_method_functor, g_argv ); \
           G_SUSPEND((x), goal); \
           return; \
 	} else { \
@@ -166,71 +160,16 @@
   } \
 }while(0)
 
-
-
-#define GD_DEREF_FOR_NEW(x) \
-do{ \
-  while (1) { \
-    if (!isstruct(x)) { \
-      if (atomicnotref(x)) { \
-	break; \
-      } else { \
-	q temp0 = derefone(x); \
-	if(isref(temp0) && (x) == derefone(temp0)) { \
-          q var; \
-          struct goalrec *goal; \
-	  G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, GD_ARGC, GD_ARGV); \
-          G_SUSPEND((x), goal); \
-          GD_SUSPEND_NEW(var); \
-	} else { \
-	  (x) = temp0; \
-	} \
-      } \
-    } else { \
-      break; \
-    } \
-  } \
-}while(0)
-
-
 /**************************************************************************/
-#define GDDEF_NEW() \
-extern q G_rappend(new) (long GD_ARGC, q* GD_ARGV)
-
-#define GD_SUSPEND_NEW(v) \
-do{ \
-  return (v); \
-}while(0)
 
 #define GD_RETURN_FROM_NEW(x) \
 do{ \
   return makefunctor(x); \
 }while(0)
 
-#define GD_STD_DECL_FOR_NEW \
-  G_STD_DECL; \
-  GDset_myself_for_new
-
-#define GDset_myself_for_new \
-  q (*g_myself)() = G_rappend(new)
-
 /**************************************************************************/
 #define GD_GUNIFY(x,y) eq_terms_body(x,y)
 
-#define GD_UNIFY(x,y) \
-do{ \
-  do_shallow_unify((x), (y)); \
-}while(0)
-
-#define GD_UNIFY_VALUE(x,y) \
-do{								\
-  if (!isref(x) || derefone(x) != (x)) {			\
-    do_shallow_unify_value((x), (y));	\
-  } else {							\
-    derefone(x) = (y);						\
-  }								\
-}while(0)
-
 /****************************************************/
 #define GD_SWITCH_ON_METHOD switch(g_method_functor)
 #define GD_SWITCH_ON_ARITY switch (arities (g_method_functor))
@@ -240,7 +179,7 @@
 
 #define GD_METHOD_CASE(fa) \
    case (long) G_functor(fa): \
-  GD_body(fa) (GD_SELF, g_method_functor, GD_ARGV); \
+  GD_body(fa) (GD_SELF, g_method_functor, g_argv); \
   break
 
 #define GD_METHOD_CASE_DEFAULT \
@@ -251,14 +190,14 @@
 
 #define GD_METHOD_NAME_CASE(sym) \
  case ((long)(G_atom(sym))) : \
-  GD_body(sym)(GD_SELF, g_method_functor, GD_ARGV); \
+  GD_body(sym)(GD_SELF, g_method_functor, g_argv); \
   break
 
 #define GD_METHOD_NAME_CASE_DEFAULT default: fatal("undefined method")
 
 #define GDDEF_METHOD(fa) \
 static void \
-GD_body(fa) (GD_OBJ_TYPE* GD_SELF, long g_method_functor, q* GD_ARGV)
+GD_body(fa) (GD_OBJ_TYPE* GD_SELF, long g_method_functor, q* g_argv)
 
 /**********************************************************************/
 #define GDDEF_GUNIFY() \
@@ -273,8 +212,6 @@
 
 #define GD_PUTC(x)  klic_putc((x), g_fp)
 
-#define GD_RETURN_FROM_PRINT  do{ return 1L; }while(0)
-
 #define GDDEF_PRINT() \
   static long \
   G_rappend(print) (GD_SELF,g_fp,g_depth,g_length) \
@@ -317,11 +254,6 @@
 #define GDDEF_GC() \
 static q* G_rappend(gc) (GD_OBJ_TYPE* GD_SELF)
 
-#define GD_RETURN_FROM_GC(newgobj) \
-do{ \
-  return(((q *)(newgobj))); \
-}while(0)
-
 #define GDDEF_DEALLOCATE() \
   static void \
   G_rappend(deallocate) (GD_SELF) \
@@ -329,32 +261,25 @@
 
 #define GDDEF_GENERIC() \
 static void \
-G_rappend(generic) (GD_OBJ_TYPE* GD_SELF, long g_method_functor, q* GD_ARGV)
+G_rappend(generic) (GD_OBJ_TYPE* GD_SELF, long g_method_functor, q* g_argv)
 
 /**********************************************************************/
 /*  guard utility */
 #define GDDEF_GGENERIC() \
-static q \
- G_rappend(guard_generic) (GD_SELF,g_method_functor,GD_ARGV) \
-    GD_OBJ_TYPE * GD_SELF; \
-    long g_method_functor; \
-    q GD_ARGV[];
+static q G_rappend(guard_generic) \
+  (GD_OBJ_TYPE* GD_SELF, long g_method_functor, q* g_argv)
 
-#define GD_SWITCH_ON_GMETHOD switch(g_method_functor)
 #define GD_GMETHOD_CASE(fa) \
   case (long) G_functor(fa): \
   { \
-    q retval = (q) GD_guard(fa) (GD_SELF,g_method_functor,GD_ARGV); \
+    q retval = (q) GD_guard(fa) (GD_SELF, g_method_functor, g_argv); \
     GD_GRETURN(retval); \
   } \
   break
 
 #define GDDEF_GMETHOD(fa) \
-  static q \
-  GD_guard(fa) (GD_SELF,g_method_functor,GD_ARGV) \
-    GD_OBJ_TYPE * GD_SELF; \
-    long g_method_functor; \
-    q GD_ARGV[];
+static q \
+GD_guard(fa) (GD_OBJ_TYPE* GD_SELF, long g_method_functor, q* g_argv)
 
 #define GD_GMETHOD_CASE_DEFAULT \
   default: \
@@ -366,9 +291,9 @@
 do{ \
   while (!G_ISINT(argv_i)) { \
     if (!G_ISREF(argv_i)) { \
-      GD_ERROR_IN_NEW("Non-integer parameter"); \
+      G_ERROR_IN_NEW("Non-integer parameter"); \
     } \
-    GD_DEREF_FOR_NEW(argv_i); \
+    G_DEREF_FOR_NEW(argv_i); \
   } \
   (var) = G_INTVAL(argv_i); \
 }while(0)
@@ -376,8 +301,8 @@
 #define GDSET_SYMARG_FOR_NEW(var, arg) \
 do{ \
   while (!G_ISSYM(arg)) { \
-    if (!G_ISREF(arg)) GD_ERROR_IN_NEW("Non-atom paramter"); \
-    GD_DEREF_FOR_NEW(arg); \
+    if (!G_ISREF(arg)) G_ERROR_IN_NEW("Non-atom paramter"); \
+    G_DEREF_FOR_NEW(arg); \
   } \
   (var) = (arg); \
 }while(0)
diff -ruN klic-3.003-2002-03-20/include/klic/gd_methtab.h klic-3.003-2002-03-21/include/klic/gd_methtab.h
--- klic-3.003-2002-03-20/include/klic/gd_methtab.h	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/include/klic/gd_methtab.h	Thu Mar 21 21:02:43 2002
@@ -25,9 +25,9 @@
 extern void GD_STD_DEALLOCATE(struct data_object* GD_SELF);
 
 extern q* GD_STD_GENERIC(
-  struct data_object* GD_SELF, long g_method_functor, q GD_ARGV[] );
+  struct data_object* GD_SELF, long g_method_functor, q* g_argv );
 extern q GD_STD_GGENERIC(
-  struct data_object* GD_SELF, long g_method_functor, q GD_ARGV[] );
+  struct data_object* GD_SELF, long g_method_functor, q* g_argv );
 
 extern q GD_STD_COMPARE(
   struct data_object* GD_SELF, struct data_object* GD_OTHER );
diff -ruN klic-3.003-2002-03-20/include/klic/gg_macro.h klic-3.003-2002-03-21/include/klic/gg_macro.h
--- klic-3.003-2002-03-20/include/klic/gg_macro.h	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/include/klic/gg_macro.h	Thu Mar 21 21:59:35 2002
@@ -16,17 +16,10 @@
 /* runtime/unify.c */
 extern void do_shallow_unify(q x, q y);
 
-
 /* runtime/generic.c */
-
-extern void G_MAKE_THE_NEW_GOAL(
-  q* var, struct goalrec** goalp1, q(*myself)(),
-  unsigned long argc, q argv[] );
-
 extern void G_SUSPEND(q x, struct goalrec* goal);
 extern q GG_MAKE_HOOK_VAR(struct generator_object* obj);
 
-
 #define GG_OBJ_SIZE G_SIZE_IN_Q(GG_OBJ_TYPE)
 
 #define GG_TERMINATE  do{ return !0; }while(0)
@@ -36,37 +29,13 @@
   q newvar, tmp; \
   q argv[2]; \
   G_MAKE_VAR(newvar); \
-  argv[0] = GG_TERM; \
+  argv[0] = g_term; \
   argv[1] = newvar; \
   tmp = GC_wakeup_g_new(2, argv); \
   GG_KL1_UNIFY((var), tmp); \
   return heapp(); \
 }while(0)
 
-#define GG_SWITCH_ON_TERM(cons,atomic,funct,dobj,susp) \
-do{ \
-  while (1) { \
-    if (!isstruct(GG_TERM)) { \
-      if (atomicnotref(GG_TERM)) { \
-	goto atomic; \
-      } else { \
-	q temp0 = derefone(GG_TERM); \
-	if(isref(temp0) && (GG_TERM) == derefone(temp0)) { \
-	  goto susp; \
-	} else { \
-	  (GG_TERM) = temp0; \
-	} \
-      } \
-    } else if(functnotcons(GG_TERM)) {\
-	if(isref(functor_of(GG_TERM))) { \
-	  goto dobj; \
-	} else {\
-           goto funct; \
-        } \
-    } else goto cons; \
-  } \
-}while(0)
-
 /***************************************************************************/
 
 #define GG_DEREF(x) \
@@ -79,7 +48,6 @@
 	q temp0 = derefone(x); \
 	if(isref(temp0) && (x) == derefone(temp0)) { \
 	  GG_SUSPEND(x); \
-	  return heapp(); \
 	} else { \
 	  (x) = temp0; \
 	} \
@@ -90,49 +58,8 @@
   } \
 }while(0)
 
-#define GG_TRY_TO_ALLOC(new,type,size,label) \
-do{ \
-  G_HEAPALLOC((new), (size), type); \
-  if((long) real_heaplimit() <= (long) heapp()) { \
-    goto label; \
-  } \
-}while(0)
-
 /**************************************************************************/
 
-#define GGset_myself_for_new \
-  q (*g_myself)() = G_rappend(new)
-
-#define GG_STD_DECL_FOR_NEW \
-  G_STD_DECL; GGset_myself_for_new
-
-#define GGDEF_NEW() \
-extern q G_rappend(new) (long GG_ARGC, q* GG_ARGV)
-
-#define GG_DEREF_FOR_NEW(x) \
-do{ \
-  while (1) { \
-    if (!isstruct(x)) { \
-      if (atomicnotref(x)) { \
-	break; \
-      } else { \
-	q temp0 = derefone(x); \
-	if(isref(temp0) && (x) == derefone(temp0)) { \
-          q var; \
-          struct goalrec *goal; \
-	  G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, GG_ARGC, GG_ARGV); \
-          G_SUSPEND((x), goal); \
-          GG_RETURN_FROM_NEW(var); \
-	} else { \
-	  (x) = temp0; \
-	} \
-      } \
-    } else { \
-      break; \
-    } \
-  } \
-}while(0)
-
 #define GGSET_NEWOBJ_FOR_NEW(newgobj, type) \
 do{ \
   q res; \
@@ -140,22 +67,17 @@
   if(res == GENERIC_GCREQUEST) { \
     q var; \
     struct goalrec *goal; \
-    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, GG_ARGC, GG_ARGV); \
+    G_MAKE_THE_NEW_GOAL(&var, &goal, g_myself, g_argc, g_argv); \
     G_PUSH_GOAL_TO_SPECIAL_QUEUE(goal); \
-    GG_RETURN_FROM_NEW(var); \
+    return var; \
   } \
   (newgobj)->method_table = &G_method_table; \
 }while(0)
 
-#define GG_RETURN_FROM_NEW(var) \
-do{ \
-  return (var); \
-}while(0)
-
 /**********************************************************************/
 
 #define GGDEF_UNIFY() \
-static int G_rappend(active_unify) (q GG_SELF, q GG_TERM)
+static int G_rappend(active_unify) (q GG_SELF, q g_term)
 
 #define GGDEF_SUSPEND() \
 static q \
@@ -189,11 +111,6 @@
   if(heapp() > real_heaplimit()) fatal("not enough space collected"); \
 }while(0)
 
-#define GG_RETURN_FROM_GC(newgobj) \
-do{ \
-  return(((q *)(newgobj))); \
-}while(0)
-
 #define GGDEF_DEALLOCATE() \
   static void \
   G_rappend(deallocate) (GG_SELF) \
@@ -203,7 +120,7 @@
 
 #define GGSET_INTARG_FOR_NEW(var,argv_i) \
 do{ \
-  GG_DEREF_FOR_NEW(argv_i); \
+  G_DEREF_FOR_NEW(argv_i); \
   if(!G_ISINT(argv_i)) fatal("not integer"); \
   (var) = G_INTVAL(argv_i); \
 }while(0)
diff -ruN klic-3.003-2002-03-20/runtime/clearmes.perl klic-3.003-2002-03-21/runtime/clearmes.perl
--- klic-3.003-2002-03-20/runtime/clearmes.perl	Thu Dec 27 19:15:57 2001
+++ klic-3.003-2002-03-21/runtime/clearmes.perl	Thu Mar 21 21:03:52 2002
@@ -10,9 +10,9 @@
     /_\d+_interrupt unused in function module_/ && next;
     /: warning: argument g_method_functor unused in function/ && next;
     /: warning: argument G[GCD]_SELF unused in function / && next;
-    /: warning: argument GD_ARGV unused in function / && next;
+    /: warning: argument g_argv unused in function / && next;
     /: warning: argument GD_LEVEL unused in function / && next;
-    /: warning: argument GC_TERM unused in function / && next;
+    /: warning: argument g_term unused in function / && next;
     /: warning: argument GD_OTHER unused in function / && next;
     /: warning: argument g_myself unused in function / && next;
     /: warning: g_myself unused in function / && next;
diff -ruN klic-3.003-2002-03-20/runtime/gcode.c klic-3.003-2002-03-21/runtime/gcode.c
--- klic-3.003-2002-03-20/runtime/gcode.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gcode.c	Thu Mar 21 21:48:50 2002
@@ -60,7 +60,7 @@
   newself->pdesc = GD_SELF->pdesc;
   G_COPY_KL1_TERM_TO_NEWGEN(GD_SELF->module_obj, newself->module_obj);
   newself->predicate_name = GD_SELF->predicate_name;
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 /* Generic method */
@@ -69,14 +69,14 @@
 {
   G_STD_DECL;
 
-  GD_UNIFY(GD_ARGV[0], GD_SELF->module_obj);
+  do_shallow_unify(g_argv[0], GD_SELF->module_obj);
 }
 
 GDDEF_METHOD(name_1)
 {
   G_STD_DECL;
 
-  GD_UNIFY(GD_ARGV[0], GD_SELF->predicate_name);
+  do_shallow_unify(g_argv[0], GD_SELF->predicate_name);
 }
 
 GDDEF_METHOD(arity_1)
@@ -84,7 +84,7 @@
   G_STD_DECL;
   const struct predicate* pred = GD_SELF->pdesc;
 
-  GD_UNIFY(GD_ARGV[0], makeint(pred->arity));
+  do_shallow_unify(g_argv[0], makeint(pred->arity));
 }
 
 #define GD_ALLOC_GOAL(goal, pdesc, size) \
@@ -104,8 +104,8 @@
   int i;
   q func;
 
-  GD_DEREF(GD_ARGV[0]);
-  func = GD_ARGV[0];
+  GD_DEREF(g_argv[0]);
+  func = g_argv[0];
   if( !G_ISFUNCTOR(func) || !GD_IS_CLASS(vector, func) ){
     GD_ERROR_IN_METHOD("Invalid argument specification", "apply");
   }
@@ -135,7 +135,7 @@
 
   GD_ALLOC_GOAL(goal, GD_SELF->pdesc, size);
   for( i=0; i<size; ++i ){
-    GD_GOAL_ARG(i, goal) = GD_ARGV[i];
+    GD_GOAL_ARG(i, goal) = g_argv[i];
   }
   G_PUSH_GOAL(goal);
 }
@@ -144,7 +144,7 @@
 {
   G_STD_DECL;
 
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_METHOD_CASE(module_1);
     GD_METHOD_CASE(name_1);
     GD_METHOD_CASE(arity_1);
@@ -166,7 +166,7 @@
   GD_PRINT(":");
   GD_PRINT_KL1_TERMS(GD_SELF->predicate_name, 0, 1);
   GD_PRINTF("/%d)", GD_SELF->pdesc->arity);
-  GD_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 GDDEF_GMETHOD(arity_1)
@@ -174,7 +174,7 @@
   G_STD_DECL;
   const struct predicate* pred = GD_SELF->pdesc;
 
-  GD_ARGV[0] =  makeint(pred->arity);
+  g_argv[0] =  makeint(pred->arity);
   GD_GSUCCEED;
 }
 
@@ -189,7 +189,7 @@
 
 GDDEF_GGENERIC()
 {
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_GMETHOD_CASE(predicate_0);
     GD_GMETHOD_CASE(arity_1);
     GD_GMETHOD_CASE_DEFAULT;
@@ -232,27 +232,27 @@
   new predicate
 */
 
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GD_OBJ_TYPE* newpred;
   struct module_object* module_obj;
   const struct predicate* predaddr;
   q predname;
   int arity;
 
-  if( GD_ARGC != 3 ) GD_ERROR_IN_NEW("Too few or too many arguments");
+  if( g_argc != 3 ) G_ERROR_IN_NEW("Too few or too many arguments");
 
-  GD_DEREF_FOR_NEW(GD_ARGV[0]);
-  if( !G_ISFUNCTOR(GD_ARGV[0]) ||
-      (((struct module_object*) G_FUNCTORP(GD_ARGV[0]))->method_table
+  G_DEREF_FOR_NEW(g_argv[0]);
+  if( !G_ISFUNCTOR(g_argv[0]) ||
+      (((struct module_object*) G_FUNCTORP(g_argv[0]))->method_table
       != &G_method_table0(module) ) ){
-    GD_ERROR_IN_NEW("First parameter is not a module");
+    G_ERROR_IN_NEW("First parameter is not a module");
   }
-  module_obj = (struct module_object*) G_FUNCTORP(GD_ARGV[0]);
+  module_obj = (struct module_object*) G_FUNCTORP(g_argv[0]);
 
-  GDSET_SYMARG_FOR_NEW(predname, GD_ARGV[1]);
-  GDSET_INTARG_FOR_NEW(arity, GD_ARGV[2]);
+  GDSET_SYMARG_FOR_NEW(predname, g_argv[1]);
+  GDSET_INTARG_FOR_NEW(arity, g_argv[2]);
 
   predaddr = locate_predicate_in_module(module_obj->name, predname, arity);
   if( predaddr == 0 ){
@@ -262,7 +262,7 @@
 	    namestringof(module_obj->name),
 	    namestringof(predname),
 	    arity);
-    GD_ERROR_IN_NEW(message);
+    G_ERROR_IN_NEW(message);
   }
 
   GDSET_NEWOBJ_FOR_NEW(newpred, sizeof(struct predicate_object));
diff -ruN klic-3.003-2002-03-20/runtime/ge_exref.c klic-3.003-2002-03-21/runtime/ge_exref.c
--- klic-3.003-2002-03-20/runtime/ge_exref.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/ge_exref.c	Thu Mar 21 21:32:22 2002
@@ -65,15 +65,15 @@
   struct exref_object* GG_OBJ =
     (struct exref_object*) untag_generator_susp(gsusp->u.o);
 
-  GG_SWITCH_ON_TERM(list0, atomic0, functor0, generic_data0, susp0);
+  G_SWITCH_ON_TERM(list0, atomic0, functor0, generic_data0, susp0);
 
  list0:
  atomic0:
  functor0:
  generic_data0:
-  send_unify(GG_OBJ->node, GG_OBJ->index, GG_OBJ->wec, GG_TERM);
+  send_unify(GG_OBJ->node, GG_OBJ->index, GG_OBJ->wec, g_term);
 
-  derefone(GG_SELF) = GG_TERM;
+  derefone(GG_SELF) = g_term;
 
   GG_OBJ->method_table = NULL;
   GG_OBJ->gc_flag = IMPREC_RELEASED;
@@ -81,10 +81,10 @@
 
  susp0:
   {
-    struct susprec* gterm = (struct susprec*) derefone(GG_TERM);
+    struct susprec* gterm = (struct susprec*) derefone(g_term);
 
     if( is_generator_susp(gterm->u) ){
-      struct generator_susp* gsusp1 = generator_suspp(derefone(GG_TERM));
+      struct generator_susp* gsusp1 = generator_suspp(derefone(g_term));
       struct exref_object* dummy_obj =
 	(struct exref_object*) untag_generator_susp(gsusp1->u.o);
       /* fprintf(stderr, "Node:%d unify EXREF-GENERA", my_node); */
@@ -148,7 +148,7 @@
   GG_SELF->gc_flag = IMPREC_COPIED;
   newself->gc_flag = IMPREC_NOT_COPIED;
 
-  GG_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 GGDEF_PRINT()
@@ -162,16 +162,16 @@
 
 #include <klic/gg_methtab.h>
 
-GGDEF_NEW() /* node, index, wec */
+G_DEF_NEW() /* node, index, wec */
 {
-  GG_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GG_OBJ_TYPE* new_exref;
 
   GGSET_NEWOBJ_FOR_NEW(new_exref, (struct exref_object*));
 
-  new_exref->node  = (long) intval(GG_ARGV[0]);
-  new_exref->index = (long) intval(GG_ARGV[1]);
-  new_exref->wec   = (long) intval(GG_ARGV[2]);
+  new_exref->node  = (long) intval(g_argv[0]);
+  new_exref->index = (long) intval(g_argv[1]);
+  new_exref->wec   = (long) intval(g_argv[2]);
 
   new_exref->to_exref = GG_MAKE_HOOK_VAR((struct generator_object*) new_exref);
 
@@ -179,7 +179,7 @@
 
   regist_imp_entry(new_exref);
 
-  GG_RETURN_FROM_NEW(new_exref->to_exref);
+  return new_exref->to_exref;
 }
 
 extern struct generator_object_method_table*
diff -ruN klic-3.003-2002-03-20/runtime/ge_readhook.c klic-3.003-2002-03-21/runtime/ge_readhook.c
--- klic-3.003-2002-03-20/runtime/ge_readhook.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/ge_readhook.c	Thu Mar 21 21:32:39 2002
@@ -32,7 +32,7 @@
 {
   G_STD_DECL;
 
-  GC_SWITCH_ON_TERM(list0, atomic0, functor0, generic_data0, susp0);
+  G_SWITCH_ON_TERM(list0, atomic0, functor0, generic_data0, susp0);
 
  list0:
  atomic0:
@@ -46,11 +46,11 @@
     }else{
       INT_CL_DEBUG_X
 	(klic_fprintf(stdout, "rdhok receive answer value -> send_unify\n"));
-      send_unify(GC_SELF->node, GC_SELF->index, GC_SELF->wec, GC_TERM);
+      send_unify(GC_SELF->node, GC_SELF->index, GC_SELF->wec, g_term);
     }
   }else{
     INT_CL_DEBUG_X(klic_fprintf(stdout, "rdhok active unify -> send_unify\n"));
-    send_unify(GC_SELF->node, GC_SELF->index, GC_SELF->wec, GC_TERM);
+    send_unify(GC_SELF->node, GC_SELF->index, GC_SELF->wec, g_term);
     /* GC_SELF->method_table = NULL; */
   }
   GC_SELF->node = 0;
@@ -78,7 +78,7 @@
 
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->to_read_hook, newself->to_read_hook);
 
-  GC_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 GCDEF_PRINT()
@@ -90,15 +90,15 @@
 
 #include <klic/gc_methtab.h>
 
-GCDEF_NEW() /* node, index, wec */
+G_DEF_NEW() /* node, index, wec */
 {
-  GC_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GC_OBJ_TYPE* new_read_hook;
 
   GCSET_NEWOBJ_FOR_NEW(new_read_hook, GC_OBJ_SIZE(new_read_hook));
-  new_read_hook->node  = (long) intval(GC_ARGV[0]);
-  new_read_hook->index = (long) intval(GC_ARGV[1]);
-  new_read_hook->wec   = (long) intval(GC_ARGV[2]);
+  new_read_hook->node  = (long) intval(g_argv[0]);
+  new_read_hook->index = (long) intval(g_argv[1]);
+  new_read_hook->wec   = (long) intval(g_argv[2]);
 
   new_read_hook->to_read_hook =
     GC_MAKE_HOOK_VAR((struct consumer_object*) new_read_hook);
@@ -108,5 +108,5 @@
 					  new_read_hook->to_read_hook,
 					  TRANSFER_CNT );
   new_read_hook->wec--;     /* WEC of EXREF in %read is 1 */
-  GC_RETURN_FROM_NEW(new_read_hook->to_read_hook);
+  return new_read_hook->to_read_hook;
 }
diff -ruN klic-3.003-2002-03-20/runtime/ge_replyhook.c klic-3.003-2002-03-21/runtime/ge_replyhook.c
--- klic-3.003-2002-03-20/runtime/ge_replyhook.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/ge_replyhook.c	Thu Mar 21 21:32:47 2002
@@ -29,13 +29,13 @@
 
   /* INT_CL_DEBUG_X(printf("replyhook active unify\n")); */
 
-  GC_SWITCH_ON_TERM(list0, atomic0, functor0, generic_data0, susp0);
+  G_SWITCH_ON_TERM(list0, atomic0, functor0, generic_data0, susp0);
 
  list0:
  atomic0:
  functor0:
  generic_data0:
-  send_answer_value(GC_TERM, GC_SELF->node, GC_SELF->index, GC_SELF->wec);
+  send_answer_value(g_term, GC_SELF->node, GC_SELF->index, GC_SELF->wec);
   GC_TERMINATE;
 
  susp0:
@@ -52,7 +52,7 @@
   newself->index = GC_SELF->index;
   newself->wec = GC_SELF->wec;
 
-  GC_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 GCDEF_PRINT()
@@ -65,17 +65,17 @@
 
 #include <klic/gc_methtab.h>
 
-GCDEF_NEW() /* node, index, wec */
+G_DEF_NEW() /* node, index, wec */
 {
-  GC_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GC_OBJ_TYPE* new_reply_hook;
   q var;
 
   GCSET_NEWOBJ_FOR_NEW(new_reply_hook, GC_OBJ_SIZE(new_reply_hook));
-  new_reply_hook->node = intval(GC_ARGV[0]);
-  new_reply_hook->index  = intval(GC_ARGV[1]);
-  new_reply_hook->wec    = intval(GC_ARGV[2]);
+  new_reply_hook->node  = intval(g_argv[0]);
+  new_reply_hook->index = intval(g_argv[1]);
+  new_reply_hook->wec   = intval(g_argv[2]);
 
   var = GC_MAKE_HOOK_VAR((struct consumer_object*) new_reply_hook);
-  GC_RETURN_FROM_NEW(var);
+  return var;
 }
diff -ruN klic-3.003-2002-03-20/runtime/generic.c klic-3.003-2002-03-21/runtime/generic.c
--- klic-3.003-2002-03-20/runtime/generic.c	Tue Mar 19 18:21:24 2002
+++ klic-3.003-2002-03-21/runtime/generic.c	Thu Mar 21 21:10:39 2002
@@ -180,19 +180,13 @@
 
 
 extern q*
-GD_STD_GENERIC(GD_SELF, g_method_functor, GD_ARGV)
-  q* GD_SELF;
-  long g_method_functor;
-  q GD_ARGV[];
+GD_STD_GENERIC(struct data_object* GD_SELF, long g_method_functor, q* g_argv)
 {
   return heapp();
 }
 
 extern q
-GD_STD_GGENERIC(GD_SELF, g_method_functor, GD_ARGV)
-  struct data_object* GD_SELF;
-  long g_method_functor;
-  q GD_ARGV[];
+GD_STD_GGENERIC(struct data_object* GD_SELF, long g_method_functor, q* g_argv)
 {
   return GENERIC_SUCCEEDED;
 }
diff -ruN klic-3.003-2002-03-20/runtime/gfloat.c klic-3.003-2002-03-21/runtime/gfloat.c
--- klic-3.003-2002-03-20/runtime/gfloat.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gfloat.c	Thu Mar 21 21:49:03 2002
@@ -80,7 +80,7 @@
   ALIGN();
   GDSET_NEWOBJ_IN_NEWGEN(newself);
   newself->value = GD_SELF->value;
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 /* Generic method */
@@ -106,7 +106,7 @@
     }
   }
   str = convert_c_string_to_klic_string(buf);
-  GD_UNIFY_VALUE(GD_ARGV[0], str);
+  G_UNIFY_VALUE(g_argv[0], str);
 }
 
 GDDEF_METHOD(int_1)
@@ -114,7 +114,7 @@
   G_STD_DECL;
   double value = GD_SELF->value;
   q result = makeint((long) value);
-  GD_UNIFY_VALUE(GD_ARGV[0], result);
+  G_UNIFY_VALUE(g_argv[0], result);
 }
 
 static double
@@ -174,7 +174,7 @@
       }
     }
     case 2: {
-      q another = GD_ARGV[0];
+      q another = g_argv[0];
       double another_value;
       GD_DEREF(another);
       result_index = 1;
@@ -215,7 +215,7 @@
   result = func(self);
  apply_2:
   newobj->value = result;
-  GD_UNIFY(GD_ARGV[result_index], makefunctor(newobj));
+  do_shallow_unify(g_argv[result_index], makefunctor(newobj));
 }
 
 /* guard generic methods */
@@ -223,7 +223,7 @@
 #define COMPARE_METHOD(comparison)				\
 {								\
   G_STD_DECL;							\
-  q otherq = GD_ARGV[0];					\
+  q otherq = g_argv[0];					\
   GD_OBJ_TYPE* other;						\
   double self, theother;					\
 								\
@@ -263,7 +263,7 @@
 GDDEF_GGENERIC()
 {
   G_STD_DECL;
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_GMETHOD_CASE(less__than_1);
     GD_GMETHOD_CASE(not__greater__than_1);
     GD_GMETHOD_CASE(not__less__than_1);
@@ -281,7 +281,7 @@
   char b[100];
   sprintf(b, "%f", GD_SELF->value);
   klic_fprintf(g_fp, "%s", b);
-  GD_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 GDDEF_COMPARE()
@@ -337,13 +337,13 @@
 #include <klic/gd_methtab.h>
 
 /*  new_float function */
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
-  q init = GD_ARGV[0];
+  G_STD_DECL_FOR_NEW();
+  q init = g_argv[0];
   GD_OBJ_TYPE* newobj;
 
-  GD_DEREF_FOR_NEW(init);
+  G_DEREF_FOR_NEW(init);
   ALIGN();
   GDSET_NEWOBJ_FOR_NEW(newobj, G_SIZE_IN_Q(GD_OBJ_TYPE));
   if( G_ISINT(init) ){
diff -ruN klic-3.003-2002-03-20/runtime/ggoal.c klic-3.003-2002-03-21/runtime/ggoal.c
--- klic-3.003-2002-03-20/runtime/ggoal.c	Wed Mar 20 15:39:22 2002
+++ klic-3.003-2002-03-21/runtime/ggoal.c	Thu Mar 21 21:49:16 2002
@@ -134,7 +134,7 @@
   GDSET_NEWOBJ_IN_NEWGEN(newself);
   newself->goal = newgoal;
   newself->id = GD_SELF->id;
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 /* Body Methods */
@@ -152,10 +152,10 @@
   GD_ALLOC_AREA(newgoal, (struct goalrec *), 2+5);
   newgoal->pred = &step_trigger_pred;
   newgoal->args[0] = makefunctor(GD_SELF);
-  newgoal->args[1] = GD_ARGV[0]; /* children info */
-  newgoal->args[2] = GD_ARGV[1]; /* woken-up info */
-  newgoal->args[3] = GD_ARGV[2]; /* failure info */
-  newgoal->args[4] = GD_ARGV[3]; /* suspension reason info */
+  newgoal->args[1] = g_argv[0]; /* children info */
+  newgoal->args[2] = g_argv[1]; /* woken-up info */
+  newgoal->args[3] = g_argv[2]; /* failure info */
+  newgoal->args[4] = g_argv[3]; /* suspension reason info */
   resume_same_prio(newgoal);
 }
 
@@ -168,10 +168,10 @@
 
   goal = GD_SELF->goal;
   size = goal->pred->arity;
-  GDSET_INTARG_WITHIN_RANGE(position, GD_ARGV[0], 1, size+1);
+  GDSET_INTARG_WITHIN_RANGE(position, g_argv[0], 1, size+1);
   the_arg = goal->args[position-1];
 
-  GD_UNIFY(GD_ARGV[1], the_arg);
+  do_shallow_unify(g_argv[1], the_arg);
 }
 
 GDDEF_METHOD(setarg_4)
@@ -184,7 +184,7 @@
   long k;
 
   size = GD_SELF->goal->pred->arity;
-  GDSET_INTARG_WITHIN_RANGE(position, GD_ARGV[0], 1, size+1);
+  GDSET_INTARG_WITHIN_RANGE(position, g_argv[0], 1, size+1);
   oldarg = GD_SELF->goal->args[position-1];
 
   /* Allocate and set up new goal record */
@@ -194,14 +194,14 @@
   for (k = 0; k < size; k++) {
     newgoal->args[k] = oldgoal->args[k];
   }
-  newgoal->args[position-1] = GD_ARGV[2];
+  newgoal->args[position-1] = g_argv[2];
 
   /* Allocate and set up new goal object */
   GDSET_NEWOBJ(newobj);
   newobj->goal = newgoal;
 
-  GD_UNIFY(GD_ARGV[1], oldarg);
-  GD_UNIFY_VALUE(GD_ARGV[3], GD_OBJ(newobj));
+  do_shallow_unify(g_argv[1], oldarg);
+  G_UNIFY_VALUE(g_argv[3], GD_OBJ(newobj));
 }
 
 GDDEF_METHOD(id_1)
@@ -210,7 +210,7 @@
   unsigned long id;
 
   id = GD_SELF->id;
-  GD_UNIFY_VALUE(GD_ARGV[0], makeint(id));
+  G_UNIFY_VALUE(g_argv[0], makeint(id));
 }
 
 GDDEF_METHOD(predicate_4)
@@ -219,10 +219,10 @@
   struct pred_tab_ent *pte;
 
   pte = find_pred_ent(GD_SELF->goal->pred);
-  GD_UNIFY_VALUE(GD_ARGV[0], pte->modname);
-  GD_UNIFY_VALUE(GD_ARGV[1], pte->name);
-  GD_UNIFY_VALUE(GD_ARGV[2], makeint(pte->pred->arity));
-  GD_UNIFY_VALUE(GD_ARGV[3], makeint((unsigned long)(pte->pred)>>2));
+  G_UNIFY_VALUE(g_argv[0], pte->modname);
+  G_UNIFY_VALUE(g_argv[1], pte->name);
+  G_UNIFY_VALUE(g_argv[2], makeint(pte->pred->arity));
+  G_UNIFY_VALUE(g_argv[3], makeint((unsigned long) pte->pred >> 2));
 }
 
 GDDEF_METHOD(set__predicate_2)
@@ -238,7 +238,7 @@
   oldgoal = GD_SELF->goal;
   arity = oldgoal->pred->arity;
 
-  predq = GD_ARGV[0];
+  predq = g_argv[0];
   GD_DEREF(predq);
   if (!G_ISGOBJ(predq) || !GD_IS_CLASS(predicate, predq)) {
     GD_ERROR_IN_METHOD("First argument is not a predicate object",
@@ -261,7 +261,7 @@
   GDSET_NEWOBJ(newobj);
   newobj->goal = newgoal;
 
-  GD_UNIFY_VALUE(GD_ARGV[1], GD_OBJ(newobj));
+  G_UNIFY_VALUE(g_argv[1], GD_OBJ(newobj));
 }
 
 /*  Generic Method Table */
@@ -286,7 +286,7 @@
 GDDEF_GGENERIC()
 {
   G_STD_DECL;
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_GMETHOD_CASE_DEFAULT;
   }
 }
@@ -323,9 +323,9 @@
   return makefunctor(obj);
 }
 
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GD_OBJ_TYPE *newobj;
   struct goalrec *newgoal;
   q predq, argvq;
@@ -333,26 +333,26 @@
   long pred_arity, argv_arity;
   long k;
 
-  if (GD_ARGC != 2) {
-    GD_ERROR_IN_NEW("Wrong number of arguments");
+  if (g_argc != 2) {
+    G_ERROR_IN_NEW("Wrong number of arguments");
   }
-  predq = GD_ARGV[0];
-  GD_DEREF_FOR_NEW(predq);
+  predq = g_argv[0];
+  G_DEREF_FOR_NEW(predq);
   if (!G_ISGOBJ(predq) || !GD_IS_CLASS(predicate, predq)) {
-    GD_ERROR_IN_NEW("First argument is not a predicate object");
+    G_ERROR_IN_NEW("First argument is not a predicate object");
   }
   pred = (struct predicate_object *)functorp(predq);
   pred_arity = pred->pdesc->arity;
 
-  argvq = GD_ARGV[1];
-  GD_DEREF_FOR_NEW(argvq);
+  argvq = g_argv[1];
+  G_DEREF_FOR_NEW(argvq);
   if (!G_ISGOBJ(argvq) || !GD_IS_CLASS(vector, argvq)) {
-    GD_ERROR_IN_NEW("Second argument is not a vector object");
+    G_ERROR_IN_NEW("Second argument is not a vector object");
   }
   argv_arity = intval(size_of_vector(argvq));
 
   if (pred_arity != argv_arity) {
-    GD_ERROR_IN_NEW("Number of args mismatch with the predicate");
+    G_ERROR_IN_NEW("Number of args mismatch with the predicate");
   }
 
   GD_ALLOC_AREA_FOR_NEW(newgoal, (struct goalrec *), pred_arity+2);
diff -ruN klic-3.003-2002-03-20/runtime/gio.c klic-3.003-2002-03-21/runtime/gio.c
--- klic-3.003-2002-03-20/runtime/gio.c	Wed Mar 20 15:39:39 2002
+++ klic-3.003-2002-03-21/runtime/gio.c	Thu Mar 21 21:49:41 2002
@@ -77,11 +77,11 @@
   q reason;
 
   if( GC_SELF->stream != 0 ){
-    GC_TERM = GC_SELF->stream;
+    g_term = GC_SELF->stream;
     GC_SELF->stream = 0;
   }
  top:
-  if( G_ISCONS(GC_TERM) ){
+  if( G_ISCONS(g_term) ){
     q message;
     GCSET_MESSAGE(message);
     if( G_ISINT(message) ){
@@ -113,7 +113,7 @@
 	  c = klic_getc(GC_SELF->infile);
 	}
 	if( c=='\n' ){ GC_SELF->linecount++; }
-	GC_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(c));
+	G_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(c));
 	break;
       }
 
@@ -165,13 +165,13 @@
 	  fatal("internal error: string allocation for fread");
 	}
 	free(buf);
-	GC_UNIFY_VALUE(G_ARG(message, 1), string);
+	G_UNIFY_VALUE(G_ARG(message, 1), string);
 	break;
       }
 
       case functor_linecount_1: {
 	CheckInput();
-	GC_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(GC_SELF->linecount));
+	G_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(GC_SELF->linecount));
 	break;
       }
 
@@ -212,7 +212,7 @@
 	  written = klic_fwrite(generic_string_body(str),
 				1, size, GC_SELF->outfile);
 	}
-	GC_UNIFY_VALUE(G_ARG(message, 1), G_MAKEINT(written));
+	G_UNIFY_VALUE(G_ARG(message, 1), G_MAKEINT(written));
 	break;
       }
 
@@ -259,7 +259,7 @@
 	    iseof = feof(GC_SELF->outfile);
 	  }
 	}
-	GC_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(iseof));
+	G_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(iseof));
 	break;
       }
 
@@ -278,7 +278,7 @@
 	    (GC_SELF->infile == NULL ? GC_SELF->outfile : GC_SELF->infile);
 	  result = fseek(file, offset, whence);
 	}
-	GC_UNIFY_VALUE(G_ARG(message, 2), G_MAKEINT(result));
+	G_UNIFY_VALUE(G_ARG(message, 2), G_MAKEINT(result));
 	break;
       }
 
@@ -295,13 +295,13 @@
 	    (GC_SELF->infile == NULL ? GC_SELF->outfile : GC_SELF->infile);
 	  result = ftell(file);
 	}
-	GC_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(result));
+	G_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(result));
 	break;
       }
 
       case functor_fflush_1: {
 	long result = do_flush(GC_SELF);
-	GC_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(result));
+	G_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(result));
 	break;
       }
 
@@ -330,12 +330,12 @@
 	    }
 	  }
 	}
-	GC_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(result));
+	G_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(result));
 	break;
       }
 
       case functor_sync_1: {
-	GC_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(0));
+	G_UNIFY_VALUE(G_ARG(message, 0), G_MAKEINT(0));
 	break;
       }
 
@@ -344,7 +344,7 @@
     }else{
       goto message_error;
     }
-    GC_TERM = G_CDR_OF(GC_TERM);
+    g_term = G_CDR_OF(g_term);
     goto top;
 
   message_error:
@@ -360,7 +360,7 @@
 		   outname);
       fatal("message error");
     }
-  }else if( GC_TERM==NILATOM ){
+  }else if( g_term==NILATOM ){
 #ifdef DIST
     if( GC_SELF->outfile == stdout ){
       UserFflush();
@@ -380,22 +380,22 @@
       }
     }
     GC_TERMINATE;
-  }else if( G_ISREF(GC_TERM) ){
-    q temp = G_DEREFONE(GC_TERM);
+  }else if( G_ISREF(g_term) ){
+    q temp = G_DEREFONE(g_term);
     if( G_ISREF(temp) &&
-	(temp == GC_TERM || G_DEREFONE(temp) == GC_TERM) ){
-      reason = GC_TERM;
+	(temp == g_term || G_DEREFONE(temp) == g_term) ){
+      reason = g_term;
       GC_SELF->stream = 0;
       goto suspend;
     }else{
-      GC_TERM = temp;
+      g_term = temp;
       goto top;
     }
   }
 
  gc_request:
   G_MAKE_VAR(newvar);
-  GC_KL1_UNIFY(GC_TERM, newvar);
+  GC_KL1_UNIFY(g_term, newvar);
   GC_RETURN_WITH_HOOK(newvar);
 
  suspend:
@@ -416,14 +416,14 @@
   }
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->inname, newself->inname);
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->outname, newself->outname);
-  GC_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 GCDEF_PRINT()
 {
   G_STD_DECL;
   GC_PRINT("$$FILE I/O$");
-  GC_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 #define GCUSE_MY_UNIFY
@@ -433,9 +433,9 @@
 /* define the method table structure of the merger */
 #include <klic/gc_methtab.h>
 
-GCDEF_NEW()
+G_DEF_NEW()
 {
-  GC_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GC_OBJ_TYPE* newobj;
   q infile, outfile, inpath, outpath;
   q var;
@@ -449,29 +449,29 @@
    *   2: Output file object
    *   3: Its name
    */
-  if( GC_ARGC != 4 ) GC_ERROR_IN_NEW("Arity mismatch");
+  if( g_argc != 4 ) G_ERROR_IN_NEW("Arity mismatch");
 
-  infile = GC_ARGV[0];
-  GC_DEREF_FOR_NEW(infile);
+  infile = g_argv[0];
+  G_DEREF_FOR_NEW(infile);
   if( infile != NILATOM &&
       (!G_ISGOBJ(infile) ||
        (struct data_object_method_table*) G_FUNCTOR_OF(infile) !=
        &pointer_g_method_table) ){
     fatal("First argument for file creation is not a pointer object");
   }
-  inpath = GC_ARGV[1];
-  GC_DEREF_FOR_NEW(inpath);
+  inpath = g_argv[1];
+  G_DEREF_FOR_NEW(inpath);
 
-  outfile = GC_ARGV[2];
-  GC_DEREF_FOR_NEW(outfile);
+  outfile = g_argv[2];
+  G_DEREF_FOR_NEW(outfile);
   if( outfile != NILATOM &&
       (!G_ISGOBJ(outfile) ||
        (struct data_object_method_table*) G_FUNCTOR_OF(outfile) !=
        &pointer_g_method_table) ){
     fatal("Third argument for file creation is not a pointer object");
   }
-  outpath = GC_ARGV[3];
-  GC_DEREF_FOR_NEW(outpath);
+  outpath = g_argv[3];
+  G_DEREF_FOR_NEW(outpath);
 
   GCSET_NEWOBJ_FOR_NEW(newobj, GC_OBJ_SIZE(newobj));
   if( infile == NILATOM ){
@@ -491,5 +491,5 @@
   newobj->outname = outpath;
   newobj->stream = 0;
   var = GC_MAKE_HOOK_VAR((struct consumer_object*) newobj);
-  GC_RETURN_FROM_NEW(var);
+  return var;
 }
diff -ruN klic-3.003-2002-03-20/runtime/gmerge.c klic-3.003-2002-03-21/runtime/gmerge.c
--- klic-3.003-2002-03-20/runtime/gmerge.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gmerge.c	Thu Mar 21 21:33:14 2002
@@ -49,46 +49,46 @@
   q newvar;
 
  top:
-  GC_SWITCH_ON_TERM(list0,atomic0,functor0,generic_data0,susp0);
+  G_SWITCH_ON_TERM(list0, atomic0, functor0, generic_data0, susp0);
 
   list0:
     {
       struct cons *newout;
       GC_TRY_TO_ALLOC(newout,(struct cons *),2,gc_request);
-      newout->car = G_CAR_OF(GC_TERM);
+      newout->car = G_CAR_OF(g_term);
       GCSET_VAR(newout->cdr);
-      GC_UNIFY(GC_SELF->outstream,G_MAKECONS(newout));
+      do_shallow_unify(GC_SELF->outstream, G_MAKECONS(newout));
       GC_SELF->outstream = newout->cdr;
-      GC_TERM = G_CDR_OF(GC_TERM);
+      g_term = G_CDR_OF(g_term);
       goto top;
     }
   atomic0:
-    if (GC_TERM == NILATOM) {
+    if (g_term == NILATOM) {
       if (--(GC_SELF->count) == 0) {
-	GC_UNIFY(GC_SELF->outstream,NILATOM);
+	do_shallow_unify(GC_SELF->outstream, NILATOM);
       }
       GC_TERMINATE;
     } else goto invalid_data;
   functor0:
     goto invalid_data;
   generic_data0:
-    if (GD_IS_CLASS(vector,GC_TERM)) {
+    if (GD_IS_CLASS(vector, g_term)) {
       unsigned long size;
       unsigned long i;
       {
 	q argv[1];
-	GD_CALL_GMETHOD(GC_TERM,vector_1, argv);
+	GD_CALL_GMETHOD(g_term, vector_1, argv);
 	size = G_INTVAL(argv[0]);
       }
       GC_SELF->count += size - 1;
       if (GC_SELF->count == 0) {
-	GC_UNIFY(GC_SELF->outstream,NILATOM);
+	do_shallow_unify(GC_SELF->outstream, NILATOM);
       } else {
 	q argv[2];
 	q hook_var;
 	for (i=0; i<size; i++) {
 	  argv[0] = G_MAKEINT(i);
-	  GD_CALL_GMETHOD(GC_TERM,element_2,argv);
+	  GD_CALL_GMETHOD(g_term, element_2, argv);
 	  GC_TRY_TO_ALLOC(hook_var,(q),1,gc_request2);
 	  derefone(hook_var) =
 	    GC_MAKE_HOOK_VAR((struct consumer_object*) GC_SELF);
@@ -99,17 +99,17 @@
     gc_request2:
       GC_SELF->count -= size-i-1;
       G_MAKE_VAR(newvar);
-      GC_MAKE_MERGE_IN_GOAL(newvar,GC_TERM,i,size);
+      GC_MAKE_MERGE_IN_GOAL(newvar, g_term, i, size);
       GC_RETURN_WITH_HOOK(newvar);
     } else goto invalid_data;
  susp0: 
-    GC_RETURN_WITH_HOOK(GC_TERM);
+    GC_RETURN_WITH_HOOK(g_term);
  invalid_data:
-  debug_printf("### %k ###\n", GC_TERM);
+  debug_printf("### %k ###\n", g_term);
   fatal("Invalid data unified with merger");
  gc_request:
   G_MAKE_VAR(newvar);
-  GC_KL1_UNIFY(GC_TERM,newvar);
+  GC_KL1_UNIFY(g_term, newvar);
   GC_RETURN_WITH_HOOK(newvar);
 }
 
@@ -121,7 +121,7 @@
   GCSET_NEWOBJ_IN_NEWGEN(newself);
   newself->count = GC_SELF->count;
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->outstream, newself->outstream);
-  GC_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 
@@ -129,7 +129,7 @@
 {
   G_STD_DECL;
   GC_PRINT("$$MERGER$");
-  GC_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 #define GCUSE_MY_UNIFY
@@ -140,17 +140,17 @@
 #include <klic/gc_methtab.h>
 
 /*  new_vector function */
-GCDEF_NEW()
+G_DEF_NEW()
 {
-  GC_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GC_OBJ_TYPE *newmerger;
   q var;
 
-  if (GC_ARGC != 1) GC_ERROR_IN_NEW("Arity mismatch");
+  if (g_argc != 1) G_ERROR_IN_NEW("Arity mismatch");
 
   GCSET_NEWOBJ_FOR_NEW(newmerger,GC_OBJ_SIZE(newmerger));
   newmerger->count = 1;
-  newmerger->outstream = GC_ARGV[0];
+  newmerger->outstream = g_argv[0];
   var = GC_MAKE_HOOK_VAR((struct consumer_object*) newmerger);
-  GC_RETURN_FROM_NEW(var);
+  return var;
 }
diff -ruN klic-3.003-2002-03-20/runtime/gmodule.c klic-3.003-2002-03-21/runtime/gmodule.c
--- klic-3.003-2002-03-20/runtime/gmodule.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gmodule.c	Thu Mar 21 21:33:19 2002
@@ -61,7 +61,7 @@
 
   GDSET_NEWOBJ_IN_NEWGEN(newself);
   newself->name = GD_SELF->name;
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 /* Generic method */
@@ -69,7 +69,7 @@
 GDDEF_METHOD(name_1)
 {
   G_STD_DECL;
-  GD_UNIFY( GD_ARGV[0],GD_SELF->name);
+  do_shallow_unify(g_argv[0], GD_SELF->name);
 }
 
 
@@ -77,7 +77,7 @@
 {
   G_STD_DECL;
 
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_METHOD_CASE(name_1);
     GD_METHOD_CASE_DEFAULT;
   }
@@ -89,7 +89,7 @@
   GD_PRINT("<MODULE#");
   GD_PRINT_KL1_TERMS(GD_SELF->name, 0, 1);
   GD_PRINT(">");
-  GD_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 GDDEF_GMETHOD(module_0)
@@ -101,8 +101,8 @@
 GDDEF_GMETHOD(defined_2)
 {
  G_STD_DECL;
- q predname = GD_ARGV[0];
- q arity = GD_ARGV[1];
+ q predname = g_argv[0];
+ q arity = g_argv[1];
 
  GD_GDEREF(predname);
  if (!G_ISSYM(predname)) GD_GFAIL;
@@ -120,7 +120,7 @@
 {
   G_STD_DECL;
 
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_GMETHOD_CASE(module_0);
     GD_GMETHOD_CASE(defined_2);
     GD_GMETHOD_CASE_DEFAULT;
@@ -142,14 +142,14 @@
   The argument is only one and it's the name of the module
 */
 
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   q atom;
   const struct modinfo* mp;
   unsigned char *name;
 
-  GDSET_SYMARG_FOR_NEW(atom,GD_ARGV[0]);
+  GDSET_SYMARG_FOR_NEW(atom, g_argv[0]);
   name = namestringof(atom);
   for (mp = defined_modules; mp->name != 0; mp++) {
     if (strcmp((char *)mp->name, (char *)name) == 0) {
diff -ruN klic-3.003-2002-03-20/runtime/gmvv.c klic-3.003-2002-03-21/runtime/gmvv.c
--- klic-3.003-2002-03-20/runtime/gmvv.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gmvv.c	Thu Mar 21 21:49:55 2002
@@ -123,7 +123,7 @@
   for (k=0; k<size; k++) {
     q x = GD_OTHER->body[k];
     Shallow(GD_SELF);
-    GD_UNIFY(GD_SELF->body[k], x);
+    do_shallow_unify(GD_SELF->body[k], x);
     Shallow(GD_OTHER);
   }
 }
@@ -161,7 +161,7 @@
     newself->body = GD_SELF->body;
     push_gc_stack((q*) &(newself->body));
   }
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 #ifdef DIST
@@ -196,15 +196,15 @@
   G_STD_DECL;
   int position;
   Shallow(GD_SELF);
-  GDSET_INTARG_WITHIN_RANGE(position,GD_ARGV[0],0,GD_SELF->index);
-  GD_UNIFY(GD_ARGV[1], GD_SELF->body[position]);
+  GDSET_INTARG_WITHIN_RANGE(position, g_argv[0], 0, GD_SELF->index);
+  do_shallow_unify(g_argv[1], GD_SELF->body[position]);
 }
 
 GDDEF_METHOD(size_1)
 {
   G_STD_DECL;
   Shallow(GD_SELF);
-  GD_UNIFY_VALUE(GD_ARGV[0], G_MAKEINT(GD_SELF->index));
+  G_UNIFY_VALUE(g_argv[0], G_MAKEINT(GD_SELF->index));
 }
 
 GDDEF_METHOD(set__element_3)
@@ -220,14 +220,14 @@
   size = GD_SELF->index;
   iscnst = GD_SELF->iscnst;
   body = GD_SELF->body;
-  GDSET_INTARG_WITHIN_RANGE(position,GD_ARGV[0],0,size);
+  GDSET_INTARG_WITHIN_RANGE(position, g_argv[0], 0, size);
   GDSET_NEWOBJ(newvect);
   if (!iscnst) {
     q olddata = body[position];
 
     GD_SELF->index = position;
     GD_SELF->body = (q *)olddata;
-    body[position] = GD_ARGV[1];
+    body[position] = g_argv[1];
     GD_SELF->next = GD_OBJ(newvect);
     newvect->body = body;
   } else {
@@ -235,13 +235,13 @@
     q *newbody;
     GD_ALLOC_AREA(newbody,(q*),size);
     for (k=0; k<size; k++) newbody[k] = body[k];
-    newbody[position] = GD_ARGV[1];
+    newbody[position] = g_argv[1];
     newvect->body = newbody;
   }
   newvect->next = VECTOR_SHALLOW_MARK;
   newvect->index = size;
   newvect->iscnst = 0;
-  GD_UNIFY_VALUE(GD_ARGV[2], GD_OBJ(newvect));
+  G_UNIFY_VALUE(g_argv[2], GD_OBJ(newvect));
 }
 
 GDDEF_METHOD(set__element_4)
@@ -259,14 +259,14 @@
   body = GD_SELF->body;
   iscnst = GD_SELF->iscnst;
 
-  GDSET_INTARG_WITHIN_RANGE(position,GD_ARGV[0],0,size);
+  GDSET_INTARG_WITHIN_RANGE(position, g_argv[0], 0, size);
   GDSET_NEWOBJ(newvect);
   olddata = body[position];
-  GD_UNIFY(GD_ARGV[1], olddata);
+  do_shallow_unify(g_argv[1], olddata);
   if (!iscnst) {
     GD_SELF->index = position;
     GD_SELF->body = (q *)olddata;
-    body[position] = GD_ARGV[2];
+    body[position] = g_argv[2];
     GD_SELF->next = GD_OBJ(newvect);
     newvect->body = body;
   } else {
@@ -274,13 +274,13 @@
     q *newbody;
     GD_ALLOC_AREA(newbody,(q*),size);
     for (k=0; k<size; k++) newbody[k] = body[k];
-    newbody[position] = GD_ARGV[2];
+    newbody[position] = g_argv[2];
     newvect->body = newbody;
   }
   newvect->next = VECTOR_SHALLOW_MARK;
   newvect->index = size;
   newvect->iscnst = 0;
-  GD_UNIFY_VALUE(GD_ARGV[3], GD_OBJ(newvect));
+  G_UNIFY_VALUE(g_argv[3], GD_OBJ(newvect));
 }
 
 GDDEF_METHOD(split_3)
@@ -293,7 +293,7 @@
 
   Shallow(GD_SELF);
   size = GD_SELF->index;
-  GDSET_INTARG_WITHIN_RANGE(split_point,GD_ARGV[0],0,size+1);
+  GDSET_INTARG_WITHIN_RANGE(split_point, g_argv[0], 0, size + 1);
   lower_size = size-split_point;
   GD_ALLOC_AREA(upper_body, (q *), split_point);
   GD_ALLOC_AREA(lower_body, (q *), lower_size);
@@ -309,15 +309,15 @@
   upper->body = upper_body;
   lower->body = lower_body;
   upper->iscnst = lower->iscnst = 0;
-  GD_UNIFY_VALUE(GD_ARGV[1],G_MAKEFUNCTOR(upper));
-  GD_UNIFY_VALUE(GD_ARGV[2],G_MAKEFUNCTOR(lower));
+  G_UNIFY_VALUE(g_argv[1], G_MAKEFUNCTOR(upper));
+  G_UNIFY_VALUE(g_argv[2], G_MAKEFUNCTOR(lower));
 }
 
 GDDEF_METHOD(join_2)
 {
   G_STD_DECL;
   unsigned long size1, size2, newsize;
-  q anotherq = GD_ARGV[0];
+  q anotherq = g_argv[0];
   GD_OBJ_TYPE *another, *new;
   q *newbody;
 
@@ -344,7 +344,7 @@
   new->index = newsize;
   new->body = newbody;
   new->iscnst = 0;
-  GD_UNIFY_VALUE(GD_ARGV[1],G_MAKEFUNCTOR(new));
+  G_UNIFY_VALUE(g_argv[1], G_MAKEFUNCTOR(new));
 }
 
 /*  Generic Method Table */
@@ -371,8 +371,8 @@
   long position;
 
   Shallow(GD_SELF);
-  GDSET_GINTARG_WITHIN_RANGE(position,GD_ARGV[0],0,GD_SELF->index);
-  GD_ARGV[1] = GD_SELF->body[position];
+  GDSET_GINTARG_WITHIN_RANGE(position, g_argv[0], 0, GD_SELF->index);
+  g_argv[1] = GD_SELF->body[position];
   GD_GSUCCEED;
 }
 
@@ -380,14 +380,14 @@
 {
   G_STD_DECL;
   Shallow(GD_SELF);
-  GD_ARGV[0] = G_MAKEINT(GD_SELF->index);
+  g_argv[0] = G_MAKEINT(GD_SELF->index);
   GD_GSUCCEED;
 }
 
 GDDEF_GGENERIC()
 {
   G_STD_DECL;
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_GMETHOD_CASE(element_2);
     GD_GMETHOD_CASE(vector_1);
     GD_GMETHOD_CASE_DEFAULT;
@@ -409,7 +409,7 @@
   }
   if (size != limit) GD_PRINT(",..");
   GD_PRINT("}");
-  GD_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 GDDEF_COMPARE()
@@ -477,40 +477,40 @@
 #include <klic/gd_methtab.h>
 
 /*  new_vector function */
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GD_OBJ_TYPE *newvect;
   q *body;
   long size, k;
   q init;
 
-  if (GD_ARGC!=1) GD_ERROR_IN_NEW("Too few or too many arguments");
-  init = GD_ARGV[0];
-  GD_DEREF_FOR_NEW(init);
+  if( g_argc != 1 ) G_ERROR_IN_NEW("Too few or too many arguments");
+  init = g_argv[0];
+  G_DEREF_FOR_NEW(init);
   GDSET_NEWOBJ_FOR_NEW(newvect, G_SIZE_IN_Q(GD_OBJ_TYPE));
   if (G_ISINT(init)) {
     size = G_INTVAL(init);
-    if (size < 0) GD_ERROR_IN_NEW("Negative size specified");
+    if (size < 0) G_ERROR_IN_NEW("Negative size specified");
     GD_ALLOC_AREA_FOR_NEW(body, (q*), size);
     for (k=0; k<size; k++) body[k] = G_MAKEINT(0L);
   } else if (init==NILATOM || G_ISCONS(init)) {
     for (size=0; ; size++) {
       if (init == NILATOM) break;
       init = G_CDR_OF(init);
-      GD_DEREF_FOR_NEW(init);
+      G_DEREF_FOR_NEW(init);
       if (init!=NILATOM && !G_ISCONS(init))
-	GD_ERROR_IN_NEW("Invalid parameter");
+	G_ERROR_IN_NEW("Invalid parameter");
     }
-    init = GD_ARGV[0];
+    init = g_argv[0];
     GD_ALLOC_AREA_FOR_NEW(body, (q*), size);
     for (k=0; k<size; k++) {
-      GD_DEREF_FOR_NEW(init);
+      G_DEREF_FOR_NEW(init);
       body[k] = G_CAR_OF(init);
       init = G_CDR_OF(init);
     }
   } else {
-    GD_ERROR_IN_NEW("Invalid parameter");
+    G_ERROR_IN_NEW("Invalid parameter");
   }
   newvect->next = VECTOR_SHALLOW_MARK;
   newvect->iscnst = 0;
diff -ruN klic-3.003-2002-03-20/runtime/gpointer.c klic-3.003-2002-03-21/runtime/gpointer.c
--- klic-3.003-2002-03-20/runtime/gpointer.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gpointer.c	Thu Mar 21 21:33:33 2002
@@ -39,7 +39,7 @@
 
   GDSET_NEWOBJ_IN_NEWGEN(newself);
   newself->pointer = GD_SELF->pointer;
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 #define GDUSE_MY_GUNIFY
@@ -48,15 +48,15 @@
 
 #include <klic/gd_methtab.h>
 
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GD_OBJ_TYPE *newobj;
 
-  if (GD_ARGC != 1) fatal("Argument mismatch in pointer:new");
+  if (g_argc != 1) fatal("Argument mismatch in pointer:new");
   G_HEAPALLOC(newobj,GD_OBJ_SIZE(newobj),(GD_OBJ_TYPE *));
   newobj->method_table = &G_method_table;
-  newobj->pointer = (char *)GD_ARGV[0];
+  newobj->pointer = (char*) g_argv[0];
   GD_RETURN_FROM_NEW(newobj);
 }
 
diff -ruN klic-3.003-2002-03-20/runtime/gstring.c klic-3.003-2002-03-21/runtime/gstring.c
--- klic-3.003-2002-03-20/runtime/gstring.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gstring.c	Thu Mar 21 21:50:14 2002
@@ -145,7 +145,7 @@
     newself->body = GD_SELF->body;
     G_COPY_KL1_TERM_TO_NEWGEN(GD_SELF->next, newself->next);
   }
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 #ifdef DIST
@@ -177,8 +177,8 @@
 {
   G_STD_DECL;
   Shallow(GD_SELF);
-  GD_UNIFY_VALUE(GD_ARGV[0],G_MAKEINT(GD_SELF->index));
-  GD_UNIFY_VALUE(GD_ARGV[1],G_MAKEINT(ELEMSIZE));
+  G_UNIFY_VALUE(g_argv[0], G_MAKEINT(GD_SELF->index));
+  G_UNIFY_VALUE(g_argv[1], G_MAKEINT(ELEMSIZE));
 }
 
 GDDEF_METHOD(element_2)
@@ -186,23 +186,22 @@
   G_STD_DECL;
   long position;
   Shallow(GD_SELF);
-  GDSET_INTARG_WITHIN_RANGE(position,GD_ARGV[0],0,(long)(GD_SELF->index));
-  GD_UNIFY_VALUE(GD_ARGV[1],
-		 G_MAKEINT((unsigned long)(GD_SELF->body[position])));
+  GDSET_INTARG_WITHIN_RANGE(position, g_argv[0], 0, (long) GD_SELF->index);
+  G_UNIFY_VALUE(g_argv[1], G_MAKEINT((unsigned long) GD_SELF->body[position]));
 }
 
 GDDEF_METHOD(size_1)
 {
   G_STD_DECL;
   Shallow(GD_SELF);
-  GD_UNIFY_VALUE(GD_ARGV[0],G_MAKEINT(GD_SELF->index));
+  G_UNIFY_VALUE(g_argv[0], G_MAKEINT(GD_SELF->index));
 }
 
 GDDEF_METHOD(element__size_1)
 {
   G_STD_DECL;
   Shallow(GD_SELF);
-  GD_UNIFY_VALUE(GD_ARGV[0],G_MAKEINT(ELEMSIZE));
+  G_UNIFY_VALUE(g_argv[0], G_MAKEINT(ELEMSIZE));
 }
 
 GDDEF_METHOD(set__element_3)
@@ -218,8 +217,8 @@
   size = GD_SELF->index;
   iscnst = GD_SELF->iscnst;
   body = GD_SELF->body;
-  GDSET_INTARG_WITHIN_RANGE(position,GD_ARGV[0],0,size);
-  GDSET_INTARG_WITHIN_RANGE(newelem,GD_ARGV[1],0,256);
+  GDSET_INTARG_WITHIN_RANGE(position, g_argv[0], 0, size);
+  GDSET_INTARG_WITHIN_RANGE(newelem, g_argv[1], 0, 256);
   GDSET_NEWOBJ(newstr);
   if (!iscnst) {
     unsigned char olddata = body[position];
@@ -240,7 +239,7 @@
   newstr->next = STRING_SHALLOW_MARK;
   newstr->index = size;
   newstr->iscnst = 0;
-  GD_UNIFY_VALUE(GD_ARGV[2], GD_OBJ(newstr));
+  G_UNIFY_VALUE(g_argv[2], GD_OBJ(newstr));
 }
 
 GDDEF_METHOD(split_3)
@@ -253,7 +252,7 @@
 
   Shallow(GD_SELF);
   size = GD_SELF->index;
-  GDSET_INTARG_WITHIN_RANGE(split_point,GD_ARGV[0],0,size+1);
+  GDSET_INTARG_WITHIN_RANGE(split_point, g_argv[0], 0, size + 1);
   lower_size = size-split_point;
   GD_ALLOC_AREA(upper_body, (unsigned char *), ROUND_UP(split_point));
   GD_ALLOC_AREA(lower_body, (unsigned char *), ROUND_UP(lower_size));
@@ -269,15 +268,15 @@
   upper->ismbdiff = lower->ismbdiff = 0;
   upper->body = upper_body;
   lower->body = lower_body;
-  GD_UNIFY_VALUE(GD_ARGV[1],G_MAKEFUNCTOR(upper));
-  GD_UNIFY_VALUE(GD_ARGV[2],G_MAKEFUNCTOR(lower));
+  G_UNIFY_VALUE(g_argv[1], G_MAKEFUNCTOR(upper));
+  G_UNIFY_VALUE(g_argv[2], G_MAKEFUNCTOR(lower));
 }
 
 GDDEF_METHOD(join_2)
 {
   G_STD_DECL;
   unsigned long size1, size2, newsize;
-  q anotherq = GD_ARGV[0];
+  q anotherq = g_argv[0];
   GD_OBJ_TYPE *another, *new;
   unsigned char *newbody;
 
@@ -305,7 +304,7 @@
   new->iscnst = 0;
   new->ismbdiff = 0;
   new->body = newbody;
-  GD_UNIFY_VALUE(GD_ARGV[1],G_MAKEFUNCTOR(new));
+  G_UNIFY_VALUE(g_argv[1], G_MAKEFUNCTOR(new));
 }
 
 GDDEF_METHOD(search__character_4)
@@ -315,9 +314,9 @@
   unsigned long k;
 
   Shallow(GD_SELF);
-  GDSET_INTARG_WITHIN_RANGE(start,GD_ARGV[0],0, (long)(GD_SELF->index));
-  GDSET_INTARG_WITHIN_RANGE(end,GD_ARGV[1],0, (long)(GD_SELF->index));
-  GDSET_INTARG_WITHIN_RANGE(code,GD_ARGV[2],0,256L);
+  GDSET_INTARG_WITHIN_RANGE(start, g_argv[0], 0, (long) GD_SELF->index);
+  GDSET_INTARG_WITHIN_RANGE(end,   g_argv[1], 0, (long) GD_SELF->index);
+  GDSET_INTARG_WITHIN_RANGE(code,  g_argv[2], 0, 256L);
   if (start <= end) {
     for (k=start; k<=end; k++) {
       if (((unsigned long) GD_SELF->body[k]) == code) goto done;
@@ -327,11 +326,11 @@
       if (((unsigned long) GD_SELF->body[k]) == code) goto done;
     }
   }
-  GD_UNIFY_VALUE(GD_ARGV[3],G_MAKEINT(-1L));
+  G_UNIFY_VALUE(g_argv[3], G_MAKEINT(-1L));
   return;
 
-  done:
-    GD_UNIFY_VALUE(GD_ARGV[3],G_MAKEINT(k));
+ done:
+  G_UNIFY_VALUE(g_argv[3], G_MAKEINT(k));
 }
 
 
@@ -361,8 +360,8 @@
   long position;
 
   Shallow(GD_SELF);
-  GDSET_GINTARG_WITHIN_RANGE(position,GD_ARGV[0],0, (long)(GD_SELF->index));
-  GD_ARGV[1] = G_MAKEINT((long)(GD_SELF->body[position]));
+  GDSET_GINTARG_WITHIN_RANGE(position, g_argv[0], 0, (long) GD_SELF->index);
+  g_argv[1] = G_MAKEINT((long) GD_SELF->body[position]);
   GD_GSUCCEED;
 }
 
@@ -371,8 +370,8 @@
   G_STD_DECL;
 
   Shallow(GD_SELF);
-  GD_ARGV[0] = G_MAKEINT(GD_SELF->index);
-  GD_ARGV[1] = G_MAKEINT(ELEMSIZE);
+  g_argv[0] = G_MAKEINT(GD_SELF->index);
+  g_argv[1] = G_MAKEINT(ELEMSIZE);
   GD_GSUCCEED;
 }
 
@@ -413,7 +412,7 @@
 GDDEF_GMETHOD(less__than_1)
 {
   G_STD_DECL;
-  q otherq = GD_ARGV[0];
+  q otherq = g_argv[0];
   GD_OBJ_TYPE *other;
   int cmp;
 
@@ -427,7 +426,7 @@
 GDDEF_GMETHOD(not__less__than_1)
 {
   G_STD_DECL;
-  q otherq = GD_ARGV[0];
+  q otherq = g_argv[0];
   GD_OBJ_TYPE *other;
   int cmp;
 
@@ -446,9 +445,9 @@
 
   Shallow(GD_SELF);
   size = GD_SELF->index;
-  if (G_INTVAL(GD_ARGV[0])!= size) GD_GFAIL;
-  if (G_INTVAL(GD_ARGV[1])!= ELEMSIZE) GD_GFAIL;
-  tmp = GD_ARGV[2];
+  if( G_INTVAL(g_argv[0]) != size ) GD_GFAIL;
+  if( G_INTVAL(g_argv[1]) != ELEMSIZE ) GD_GFAIL;
+  tmp = g_argv[2];
   for(k=0; k<size; k++, tmp = G_CDR_OF(tmp)) {
     if(G_INTVAL(G_CAR_OF(tmp))!= GD_SELF->body[k]) GD_GFAIL;
   }
@@ -459,7 +458,7 @@
 {
   G_STD_DECL;
 
-  GD_SWITCH_ON_GMETHOD {
+  GD_SWITCH_ON_METHOD {
     GD_GMETHOD_CASE(element_2);
     GD_GMETHOD_CASE(string_2);
     GD_GMETHOD_CASE(less__than_1);
@@ -491,7 +490,7 @@
   }
   if (limit != size) GD_PRINT("..");
   GD_PUTC('"');
-  GD_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 GDDEF_COMPARE()
@@ -551,22 +550,22 @@
 #include <klic/gd_methtab.h>
 
 /*  new_string function */
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GD_OBJ_TYPE *newstr;
   unsigned char *body;
   long size;
   q init;
 
-  if (GD_ARGC!=1) GD_ERROR_IN_NEW("Too few or too many arguments");
-  init = GD_ARGV[0];
-  GD_DEREF_FOR_NEW(init);
+  if( g_argc != 1 ) G_ERROR_IN_NEW("Too few or too many arguments");
+  init = g_argv[0];
+  G_DEREF_FOR_NEW(init);
   GDSET_NEWOBJ_FOR_NEW(newstr, G_SIZE_IN_Q(GD_OBJ_TYPE));
   if (G_ISINT(init)) {
     unsigned long qsize;
     size = G_INTVAL(init);
-    if (size < 0) GD_ERROR_IN_NEW("Negative size specified");
+    if (size < 0) G_ERROR_IN_NEW("Negative size specified");
     qsize = ROUND_UP(size);
     GD_ALLOC_AREA_FOR_NEW(body, (unsigned char *), qsize);
     BZERO(body, qsize*sizeof(q));
@@ -576,28 +575,28 @@
       q elem;
       if (init == NILATOM) break;
       elem = G_CAR_OF(init);
-      GD_DEREF_FOR_NEW(elem);
+      G_DEREF_FOR_NEW(elem);
       if (!G_ISINT(elem) || G_INTVAL(elem) < 0 || 256 <= G_INTVAL(elem)) {
-	GD_ERROR_IN_NEW("Invalid parameter");
+	G_ERROR_IN_NEW("Invalid parameter");
       }
       init = G_CDR_OF(init);
-      GD_DEREF_FOR_NEW(init);
+      G_DEREF_FOR_NEW(init);
       if (init!=NILATOM && !G_ISCONS(init))
-	GD_ERROR_IN_NEW("Invalid parameter");
+	G_ERROR_IN_NEW("Invalid parameter");
     }
     qsize = ROUND_UP(size);
-    init = GD_ARGV[0];
+    init = g_argv[0];
     GD_ALLOC_AREA_FOR_NEW(body, (unsigned char *), qsize);
     for (k=0; k<size; k++) {
       q elem;
-      GD_DEREF_FOR_NEW(init);
+      G_DEREF_FOR_NEW(init);
       elem = G_CAR_OF(init);
-      GD_DEREF_FOR_NEW(elem);
+      G_DEREF_FOR_NEW(elem);
       body[k] = G_INTVAL(elem);
       init = G_CDR_OF(init);
     }
   } else {
-    GD_ERROR_IN_NEW("Invalid parameter");
+    G_ERROR_IN_NEW("Invalid parameter");
   }
   newstr->next = STRING_SHALLOW_MARK;
   newstr->iscnst = 0;
@@ -743,13 +742,13 @@
 #undef CLASS_NAME
 #define CLASS_NAME  string
 
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   long elemsize;
 
-  if (GD_ARGC!=2) GD_ERROR_IN_NEW("Too few or too many arguments");
-  GDSET_INTARG_FOR_NEW(elemsize, GD_ARGV[1]);
-  if (elemsize != 8) GD_ERROR_IN_NEW("Only byte strings are supported now");
-  return byte__string_g_new(1, GD_ARGV);
+  if( g_argc != 2 ) G_ERROR_IN_NEW("Too few or too many arguments");
+  GDSET_INTARG_FOR_NEW(elemsize, g_argv[1]);
+  if (elemsize != 8) G_ERROR_IN_NEW("Only byte strings are supported now");
+  return byte__string_g_new(1, g_argv);
 }
diff -ruN klic-3.003-2002-03-20/runtime/gtermarray.c klic-3.003-2002-03-21/runtime/gtermarray.c
--- klic-3.003-2002-03-20/runtime/gtermarray.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/gtermarray.c	Thu Mar 21 21:33:56 2002
@@ -45,7 +45,7 @@
   for (i=0; i < size; i++) {
     G_COPY_KL1_TERM_TO_NEWGEN(GD_SELF->terms[i],newself->terms[i]);
   }
-  GD_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 #define GDUSE_MY_GUNIFY
@@ -54,10 +54,10 @@
 
 #include <klic/gd_methtab.h>
 
-GDDEF_NEW()
+G_DEF_NEW()
 {
-  GD_STD_DECL_FOR_NEW;
-  unsigned long size = GD_ARGC;
+  G_STD_DECL_FOR_NEW();
+  unsigned long size = g_argc;
   GD_OBJ_TYPE *newobj;
   int i;
 
@@ -65,7 +65,7 @@
   newobj->method_table = &G_method_table;
   newobj->nterm = size;
   for (i=0; i<size; i++) {
-    newobj->terms[i] = GD_ARGV[i];
+    newobj->terms[i] = g_argv[i];
   }
   GD_RETURN_FROM_NEW(newobj);
 }
diff -ruN klic-3.003-2002-03-20/runtime/random.c klic-3.003-2002-03-21/runtime/random.c
--- klic-3.003-2002-03-20/runtime/random.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/random.c	Thu Mar 21 21:50:26 2002
@@ -34,28 +34,28 @@
   G_STD_DECL;
 
  top:
-  if( GC_TERM == NILATOM ){
+  if( g_term == NILATOM ){
     GC_TERMINATE;
-  }else if( isref(GC_TERM) ){
-    q temp = derefone(GC_TERM);
-    if( isref(temp) && (temp == GC_TERM || derefone(temp) == GC_TERM) ){
-      GC_RETURN_WITH_HOOK(GC_TERM);
+  }else if( isref(g_term) ){
+    q temp = derefone(g_term);
+    if( isref(temp) && (temp == g_term || derefone(temp) == g_term) ){
+      GC_RETURN_WITH_HOOK(g_term);
     }else{
-      GC_TERM = temp;
+      g_term = temp;
       goto top;
     }
-  }else if( iscons(GC_TERM) ){
+  }else if( iscons(g_term) ){
     long one_random;
 
     do{
       one_random = nrand48(GC_SELF->state);
     }while( one_random >= GC_SELF->max );
 
-    derefone(car_of(GC_TERM)) = makeint(one_random % GC_SELF->range);
-    GC_TERM = cdr_of(GC_TERM);
+    derefone(car_of(g_term)) = makeint(one_random % GC_SELF->range);
+    g_term = cdr_of(g_term);
     goto top;
   }else{
-    fatalf("random_numbers: does not support message %k", GC_TERM);
+    fatalf("random_numbers: does not support message %k", g_term);
   }
 }
 
@@ -81,30 +81,30 @@
 
 #include <klic/gc_methtab.h>
 
-GCDEF_NEW()
+G_DEF_NEW()
 {
-  GC_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GC_OBJ_TYPE* obj;
   long seed;
   long range;
 
-  if( GC_ARGC < 1 || 2 < GC_ARGC ){
-    debug_printf("Wrong number of arguments (%d)", GC_ARGC);
-    GC_ERROR_IN_NEW("");
+  if( g_argc < 1 || 2 < g_argc ){
+    debug_printf("Wrong number of arguments (%d)", g_argc);
+    G_ERROR_IN_NEW("");
   }
 
-  GC_DEREF_FOR_NEW(GC_ARGV[0]);
-  if( !isint(GC_ARGV[0]) ) GC_ERROR_IN_NEW("First argument is not integer");
-  range = intval(GC_ARGV[0]);
+  G_DEREF_FOR_NEW(g_argv[0]);
+  if( !isint(g_argv[0]) ) G_ERROR_IN_NEW("First argument is not integer");
+  range = intval(g_argv[0]);
   if( range < 1 ){
     debug_printf("Invalid first argument (%d)", range);
-    GC_ERROR_IN_NEW("");
+    G_ERROR_IN_NEW("");
   }
 
-  if( GC_ARGC > 1 ){
-    GC_DEREF_FOR_NEW(GC_ARGV[1]);
-    if( !isint(GC_ARGV[1]) ) GC_ERROR_IN_NEW("Second argument is not integer");
-    seed = intval(GC_ARGV[1]);
+  if( g_argc > 1 ){
+    G_DEREF_FOR_NEW(g_argv[1]);
+    if( !isint(g_argv[1]) ) G_ERROR_IN_NEW("Second argument is not integer");
+    seed = intval(g_argv[1]);
   }else{
     seed = 0;
   }
@@ -116,6 +116,6 @@
   obj->state[2] = seed >> (sizeof(seed)*0);
   obj->range = range;
   obj->max = ((~0LU << 1) >> 1) / range * range;
-  GC_RETURN_FROM_NEW(GC_MAKE_HOOK_VAR((struct consumer_object*) obj));
+  return GC_MAKE_HOOK_VAR((struct consumer_object*) obj);
 }
 #endif  /* NRAND48 */
diff -ruN klic-3.003-2002-03-20/runtime/wakeup.c klic-3.003-2002-03-21/runtime/wakeup.c
--- klic-3.003-2002-03-20/runtime/wakeup.c	Wed Mar 20 15:35:27 2002
+++ klic-3.003-2002-03-21/runtime/wakeup.c	Thu Mar 21 21:34:07 2002
@@ -39,7 +39,7 @@
   GCSET_NEWOBJ_IN_NEWGEN(newself);
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->x,newself->x);
   G_COPY_KL1_TERM_TO_NEWGEN(GC_SELF->y,newself->y);
-  GC_RETURN_FROM_GC(newself);
+  G_RETURN_FROM_GC(newself);
 }
 
 
@@ -47,7 +47,7 @@
 {
   G_STD_DECL;
   GC_PRINT("$$WAKEUP$");
-  GC_RETURN_FROM_PRINT;
+  G_RETURN_FROM_PRINT();
 }
 
 #define GCUSE_MY_UNIFY
@@ -58,17 +58,17 @@
 #include <klic/gc_methtab.h>
 
 /*  new_vector function */
-GCDEF_NEW()
+G_DEF_NEW()
 {
-  GC_STD_DECL_FOR_NEW;
+  G_STD_DECL_FOR_NEW();
   GC_OBJ_TYPE *wakeup;
   q var;
 
-  if (GC_ARGC != 2) fatal("arity mismatch in creation of a merger.");
+  if (g_argc != 2) fatal("arity mismatch in creation of a merger.");
 
   GCSET_NEWOBJ_FOR_NEW(wakeup,GC_OBJ_SIZE(wakeup));
-  wakeup->x = GC_ARGV[0];
-  wakeup->y = GC_ARGV[1];
+  wakeup->x = g_argv[0];
+  wakeup->y = g_argv[1];
   var = GC_MAKE_HOOK_VAR((struct consumer_object*) wakeup);
-  GC_RETURN_FROM_NEW(var);
+  return var;
 }
