Skip to content

Commit

Permalink
wasm2c: Cleanup TLS: check for __thread and declare TLS vars only whe…
Browse files Browse the repository at this point in the history
…n needed
  • Loading branch information
shravanrn committed Oct 27, 2024
1 parent b8d82ac commit d90ce1a
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 0 deletions.
2 changes: 2 additions & 0 deletions wasm2c/wasm-rt-impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ WASM_RT_THREAD_LOCAL uint32_t wasm_rt_saved_call_stack_depth;
static WASM_RT_THREAD_LOCAL void* g_alt_stack = NULL;
#endif

#ifndef WASM_RT_TRAP_HANDLER
WASM_RT_THREAD_LOCAL wasm_rt_jmp_buf g_wasm_rt_jmp_buf;
#endif

#ifdef WASM_RT_TRAP_HANDLER
extern void WASM_RT_TRAP_HANDLER(wasm_rt_trap_t code);
Expand Down
2 changes: 2 additions & 0 deletions wasm2c/wasm-rt-impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@
extern "C" {
#endif

#ifndef WASM_RT_TRAP_HANDLER
/** A setjmp buffer used for handling traps. */
extern WASM_RT_THREAD_LOCAL wasm_rt_jmp_buf g_wasm_rt_jmp_buf;
#endif

#if WASM_RT_STACK_DEPTH_COUNT
/** Saved call stack depth that will be restored in case a trap occurs. */
Expand Down
4 changes: 4 additions & 0 deletions wasm2c/wasm-rt.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ extern "C" {

#ifdef _MSC_VER
#define WASM_RT_THREAD_LOCAL __declspec(thread)
// We use __thread on POSIXy systems. This is disabled on Apple systems right
// now due to sporadic test failures.
#elif (defined(__GNUC__) || defined(__clang__)) && !defined(__APPLE__)
#define WASM_RT_THREAD_LOCAL __thread
#elif defined(WASM_RT_C11_AVAILABLE)
#define WASM_RT_THREAD_LOCAL _Thread_local
#else
Expand Down

0 comments on commit d90ce1a

Please sign in to comment.