 -    allocate(hdr, new);
 -    while(p <= hdr) {
 -       new[p] = (pos == p && p) ? val : ob[p];
--@@ -605,7 +613,7 @@ static word prim_sys(int op, word a, word b, word c) {
+-@@ -605,7 +647,7 @@ static word prim_sys(int op, word a, word b, word c) {
 -          word *buff = (word *) b;
 -          int wrote, size, len = fixval(c);
 -          if (immediatep(buff)) return IFALSE;

-             regs = (word *) ((word)regs + adjust_heap(dec+MEMPAD*W));
-             heapsize = (word) memend - (word) memstart; 
-             nfree = (word) memend - (word) regs; 
-@@ -322,6 +329,7 @@ static word *gc(int size, word *regs) {
-    } else {
-       genstart = regs; /* start new generation */
-    }
-+   fprintf(stderr, "GC OVER\n");
-    return regs;
- }
- 
-@@ -543,7 +551,7 @@ static word prim_cast(word *ob, int type) {
-       word *new, *res; /* <- could also write directly using *fp++ */
-       allocate(size, new);
-       res = new;

-    this = nargs-1;
-    usegc = 1;
-    while(this >= 0) { /* build an owl string list to oargs at bottom of heap */
-@@ -914,6 +956,7 @@ word vm(word *ob, word *args) {
-    static word R[NR];
-    word load_imms[] = {F(0), INULL, ITRUE, IFALSE};  /* for ldi and jv */
-    usegc = 1; /* enble gc (later have if always evabled) */
