ctx->callstack_bottom - 1 -- the fuck does that mean?!
Invoking a GC during a safepoint has some complications, so stuff the callstack samples in a vector instead.
Set up the state necessary to collect samples. We still need to add GC support for walking the sample set, and the compiler needs to register GC roots before safepoints as well. We also need primitives to expose the data to Factor for reporting.