Skip to content

Commit

Permalink
Add some more comments on WASM_STACK_GUARD_SIZE (#3341)
Browse files Browse the repository at this point in the history
  • Loading branch information
yamt authored Apr 22, 2024
1 parent 18d3630 commit 7bdea3c
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions core/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -450,9 +450,11 @@
* WASM_STACK_GUARD_SIZE needs to be large enough for:
*
* - native functions
*
* w/o hw bound check, the overhead (aot_call_function etc) + the native
* function itself. as of writing this, the former is about 1000 bytes
* on macOS amd64.
*
* with hw bound check, theoretically, only needs to cover the logic to
* set up the jmp_buf stack.
*
Expand All @@ -461,9 +463,20 @@
*
* - w/o hw bound check, the intepreter loop
*
* the classic interpreter wasm_interp_call_func_bytecode alone
* seems to consume about 2600 bytes stack.
* (with the default configuration for macOS/amd64)
*
* libc snprintf (used by eg. wasm_runtime_set_exception) consumes about
* 1600 bytes stack on macOS/amd64, about 2000 bytes on Ubuntu amd64 20.04.
*
* - stack check wrapper functions generated by the aot compiler
* (--stack-bounds-checks=1)
*
* wamrc issues a warning
* "precheck functions themselves consume relatively large amount of stack"
* when it detects wrapper functions requiring more than 1KB.
*
* Note: on platforms with lazy function binding, don't forget to consider
* the symbol resolution overhead on the first call. For example,
* on Ubuntu amd64 20.04, it seems to consume about 1500 bytes.
Expand Down

0 comments on commit 7bdea3c

Please sign in to comment.