void GC_setSavedThread (GC_state s, pointer p) { objptr op; assert(s->savedThread == BOGUS_OBJPTR); op = pointerToObjptr (p, s->heap.start); s->savedThread = op; }
void translateObjptr (GC_state s, objptr *opp) { pointer p; pointer from, to; from = s->translateState.from; to = s->translateState.to; p = objptrToPointer (*opp, from); p = (p - from) + to; *opp = pointerToObjptr (p, to); }
void growStackCurrent (GC_state s) { size_t reserved; GC_stack stack; reserved = sizeofStackGrowReserved (s, getStackCurrent(s)); if (DEBUG_STACKS or s->controls.messages) fprintf (stderr, "[GC: Growing stack of size %s bytes to size %s bytes, using %s bytes.]\n", uintmaxToCommaString(getStackCurrent(s)->reserved), uintmaxToCommaString(reserved), uintmaxToCommaString(getStackCurrent(s)->used)); assert (hasHeapBytesFree (s, sizeofStackWithHeader (s, reserved), 0)); stack = newStack (s, reserved, TRUE); copyStack (s, getStackCurrent(s), stack); getThreadCurrent(s)->stack = pointerToObjptr ((pointer)stack, s->heap.start); markCard (s, objptrToPointer (getThreadCurrentObjptr(s), s->heap.start)); }
void GC_setSignalHandlerThread (GC_state s, pointer p) { objptr op = pointerToObjptr (p, s->heap.start); s->signalHandlerThread = op; }
void GC_setCallFromCHandlerThread (GC_state s, pointer p) { objptr op = pointerToObjptr (p, s->heap.start); s->callFromCHandlerThread = op; }