unmarkable C stack (3rd stack)
The current machine (C) stack can get pretty big for some C functions
(rb_ensure, rb_f_select/rb_thread_fd_select/...). This is harmful when we stop
a fiber/thread and all that stack becomes eligible for marking.
We should experiment a bump allocator for temporary allocations which
behaves like the stack, but does not get marked by GC. VALUEs will continue
to be allocated on normal C stack, but non-VALUE stuff can go to the
unmarkable machine stack.
Maybe we call it "UMMS" for Un-Markable Machine Stack
We cannot remove marking of the current C stack for compatibility;
but we can transition existing C code to use UMMS.
I probably won't be around to work on it for 2.7, unfortunately.