I had thought this field was being used, but it turns out to be irrelevant. I offer this patch so that no one else is fooled (and because I had to test it anyway to prove that this is the case).
-- Bob Rogers http://rgrjr.dyndns.org/
Index: include/parrot/interpreter.h =================================================================== --- include/parrot/interpreter.h (revision 11187) +++ include/parrot/interpreter.h (working copy) @@ -169,7 +169,7 @@ typedef struct Parrot_Context { /* common header with Interp_Context */ - struct Parrot_Context *prev; + struct Parrot_Context *unused1; /* placeholder */ Regs_ni bp; /* pointers to FLOATVAL & INTVAL */ Regs_ps bp_ps; /* pointers to PMC & STR */ /* end common header */ Index: src/register.c =================================================================== --- src/register.c (revision 11187) +++ src/register.c (working copy) @@ -416,7 +416,6 @@ } CONTEXT(interpreter->ctx) = ctx = ptr; ctx->regs_mem_size = reg_alloc; - ctx->prev = old; ctx->n_regs_used = old->n_regs_used; diff = (long*)ctx - (long*)old; interpreter->ctx.bp.regs_i += diff; @@ -471,7 +470,6 @@ fprintf(stderr, "alloc %p\n", ptr); #endif CONTEXT(interpreter->ctx) = ctx = ptr; - ctx->prev = old; ctx->regs_mem_size = reg_alloc; ctx->n_regs_used = n_regs_used; /* regs start past the context */ Index: src/debug.c =================================================================== --- src/debug.c (revision 11187) +++ src/debug.c (working copy) @@ -2823,7 +2823,7 @@ /* get the next Continuation */ ctx = PMC_cont(sub)->to_ctx; old = sub; - if (!ctx || !ctx->prev) + if (!ctx) break; } if (rec_level != 0) {