int pushRecordSegStack(segstack *stack, Record r) { if ( stack->top + sizeof(r) <= stack->max ) { Record *rp = (Record*)stack->top; *rp++ = r; stack->top = (char*)rp; stack->count++; return TRUE; } else { int rc; PL_LOCK(L_AGC); rc = pushSegStack(stack, &r); PL_UNLOCK(L_AGC); return rc; } }
static int TrailCyclic(Word p ARG_LD) { return pushSegStack(&LD->cycle.lstack, p, Word); }
static int pushForMark(segstack *stack, Word p, int wr) { word w = ((word)p)|wr; return pushSegStack(stack, w, word); }