diff options
author | Yuta Saito <kateinoigakukun@gmail.com> | 2023-11-12 07:18:01 +0900 |
---|---|---|
committer | Yuta Saito <kateinoigakukun@gmail.com> | 2023-11-13 19:17:16 +0900 |
commit | 50a5b76decf21f833da6c838e7acc7f991e47e00 (patch) | |
tree | a3c6aa29871902e44238ea244c7648a88f2ae2cb /vm.c | |
parent | f1b95095d6635567cc5820b3eb40d9618faa73ed (diff) |
[wasm] allocate Asyncify setjmp buffer in heap
`rb_jmpbuf_t` type is considerably large due to inline-allocated
Asyncify buffer, and it leads to stack overflow even with small number
of C-method call frames. This commit allocates the Asyncify buffer used
by `rb_wasm_setjmp` in heap to mitigate the issue.
This patch introduces a new type `rb_vm_tag_jmpbuf_t` to abstract the
representation of a jump buffer, and init/deinit hook points to manage
lifetime of the buffer. These changes are effectively NFC for non-wasm
platforms.
Diffstat (limited to 'vm.c')
-rw-r--r-- | vm.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -2462,7 +2462,7 @@ vm_exec(rb_execution_context_t *ec) rb_wasm_try_catch_init(&try_catch, vm_exec_bottom_main, vm_exec_bottom_rescue, &ctx); - rb_wasm_try_catch_loop_run(&try_catch, &_tag.buf); + rb_wasm_try_catch_loop_run(&try_catch, &RB_VM_TAG_JMPBUF_GET(_tag.buf)); result = ctx.result; #else |