arudradey's picture
download
raw
2.33 kB
#ifdef __wasm64__
#define PTR i64
#else
#define PTR i32
#endif
.section .globals,"",@
#ifndef __EMSCRIPTEN_WASM_WORKERS__
.globaltype thread_ptr, PTR
thread_ptr:
#endif
.globaltype is_main_thread, i32
is_main_thread:
.globaltype is_runtime_thread, i32
is_runtime_thread:
.globaltype supports_wait, i32
supports_wait:
#if __EMSCRIPTEN_WASM_WORKERS__
.globaltype done_init, i32
done_init:
#endif
.section .text,"",@
.globl __set_thread_state
__set_thread_state:
.functype __set_thread_state (PTR, i32, i32, i32) -> ()
#ifndef __EMSCRIPTEN_WASM_WORKERS__
local.get 0
global.set thread_ptr
#endif
local.get 1
global.set is_main_thread
local.get 2
global.set is_runtime_thread
local.get 3
global.set supports_wait
end_function
#if __EMSCRIPTEN_WASM_WORKERS__
// With Wasm Workers we do lazy initializtion of the thread
// state so that only workers that call these APIs actually
// initializes their state.
.functype __do_set_thread_state () -> ()
lazy_init_thread_state:
.functype lazy_init_thread_state () -> ()
block
global.get done_init
br_if 0
call __do_set_thread_state
i32.const 1
global.set done_init
end_block
end_function
#endif
#ifndef __EMSCRIPTEN_WASM_WORKERS__
.globl __get_tp
__get_tp:
.functype __get_tp () -> (PTR)
global.get thread_ptr
end_function
#endif
# Semantically the same as testing "!ENVIRONMENT_IS_PTHREAD" in JS
.globl emscripten_is_main_runtime_thread
emscripten_is_main_runtime_thread:
.functype emscripten_is_main_runtime_thread () -> (i32)
#if __EMSCRIPTEN_WASM_WORKERS__
call lazy_init_thread_state
#endif
global.get is_runtime_thread
end_function
# Semantically the same as testing "!ENVIRONMENT_IS_WORKER" in JS
.globl emscripten_is_main_browser_thread
emscripten_is_main_browser_thread:
.functype emscripten_is_main_browser_thread () -> (i32)
#if __EMSCRIPTEN_WASM_WORKERS__
call lazy_init_thread_state
#endif
global.get is_main_thread
end_function
# Semantically the same as testing "!ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_AUDIO_WORKLET" in JS
.globl _emscripten_thread_supports_atomics_wait
_emscripten_thread_supports_atomics_wait:
.functype _emscripten_thread_supports_atomics_wait () -> (i32)
#if __EMSCRIPTEN_WASM_WORKERS__
call lazy_init_thread_state
#endif
global.get supports_wait
end_function

Xet Storage Details

Size:
2.33 kB
·
Xet hash:
a1123c55c77443a85b9b7bc9ced56d9e467cdb5d7751b52cdfc90f30f8de663f

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.