From edf7400ce52a7cdf2f2a1accb48fb46ac3de2c14 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 18 Apr 2024 15:44:19 +0900 Subject: [PATCH] Add a comment on WASM_STACK_GUARD_SIZE --- core/config.h | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/core/config.h b/core/config.h index d84ed3f36..8fdca74fc 100644 --- a/core/config.h +++ b/core/config.h @@ -445,7 +445,29 @@ #endif /* Reserved bytes to the native thread stack boundary, throw native - stack overflow exception if the guard boudary is reached */ + * stack overflow exception if the guard boudary is reached + * + * 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. + * + * - aot runtime functions + * eg. aot_enlarge_memory. + * + * - w/o hw bound check, the intepreter loop + * + * - stack check wrapper functions generated by the aot compiler + * (--stack-bounds-checks=1) + * + * 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. + */ #ifndef WASM_STACK_GUARD_SIZE #if WASM_ENABLE_UVWASI != 0 /* UVWASI requires larger native stack */