Feature #10341 » 0003-Small-code-cleanup.patch
| cont.c | ||
|---|---|---|
|
cont_capture(volatile int *stat)
|
||
|
{
|
||
|
rb_context_t *cont;
|
||
|
rb_thread_t *th = GET_THREAD(), *sth;
|
||
|
rb_thread_t *th = GET_THREAD();
|
||
|
volatile VALUE contval;
|
||
|
THREAD_MUST_BE_RUNNING(th);
|
||
|
rb_vm_stack_to_heap(th);
|
||
|
cont = cont_new(rb_cContinuation);
|
||
|
contval = cont->self;
|
||
|
sth = &cont->saved_thread;
|
||
|
#ifdef CAPTURE_JUST_VALID_VM_STACK
|
||
|
cont->vm_stack_slen = th->cfp->sp + th->mark_stack_len - th->stack;
|
||
| ... | ... | |
|
cont->vm_stack = ALLOC_N(VALUE, th->stack_size);
|
||
|
MEMCPY(cont->vm_stack, th->stack, VALUE, th->stack_size);
|
||
|
#endif
|
||
|
sth->stack = 0;
|
||
|
cont->saved_thread.stack = 0;
|
||
|
cont_save_machine_stack(th, cont);
|
||