diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2019-06-19 17:07:15 +1200 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2019-06-19 20:39:10 +1200 |
commit | 714703805370767efb859078d5095a014417a692 (patch) | |
tree | 5f7145161ba2a0375490cb27f23799959c1630f0 /thread.c | |
parent | dee0cfbb4757ca954853de48814367c51f255933 (diff) |
Update `stack_start` and `stack_maxsize` according to stack direction.
Diffstat (limited to 'thread.c')
-rw-r--r-- | thread.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -715,6 +715,7 @@ rb_vm_push_frame(rb_execution_context_t *sec, static int thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_start) { + STACK_GROW_DIR_DETECTION; enum ruby_tag_type state; rb_thread_list_t *join_list; rb_thread_t *main_th; @@ -740,8 +741,8 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s ruby_thread_set_native(th); - th->ec->machine.stack_start = vm_stack; - th->ec->machine.stack_maxsize = th->ec->machine.stack_end - th->ec->machine.stack_start; + th->ec->machine.stack_start = STACK_DIR_UPPER(vm_stack + size, vm_stack); + th->ec->machine.stack_maxsize -= size * sizeof(VALUE); #ifdef __ia64 th->ec->machine.register_stack_start = register_stack_start; #endif |