arudradey's picture
download
raw
2.04 kB
.globl emscripten_stack_init
.globl emscripten_stack_set_limits
.globl emscripten_stack_get_free
.globl emscripten_stack_get_base
.globl emscripten_stack_get_end
#ifdef __wasm64__
#define PTR i64
#define ALIGN 3
#define PTRSTORE .int64
#else
#define PTR i32
#define ALIGN 2
#define PTRSTORE .int32
#endif
.globaltype __stack_pointer, PTR
.section .globals,"",@
# TODO(sbc): It would be nice if these were initialized directly
# using PTR.const rather than using the `emscripten_stack_init`
.globaltype __stack_end, PTR
__stack_end:
.globaltype __stack_base, PTR
__stack_base:
.section .text,"",@
emscripten_stack_get_base:
.functype emscripten_stack_get_base () -> (PTR)
global.get __stack_base
end_function
emscripten_stack_get_end:
.functype emscripten_stack_get_end () -> (PTR)
global.get __stack_end
end_function
emscripten_stack_init:
# Initialize __stack_end and __stack_base.
# This must be called before emscripten_stack_get_end,
# emscripten_stack_get_base, or emscripten_stack_get_free are called
.functype emscripten_stack_init () -> ()
# What llvm calls __stack_high is the high address from where it grows
# downwards. We call this the stack base here in emscripten.
#ifdef __PIC__
global.get __stack_high@GOT
#else
PTR.const __stack_high
#endif
global.set __stack_base
# What llvm calls __stack_low is that end of the stack
#ifdef __PIC__
global.get __stack_low@GOT
#else
PTR.const __stack_low
#endif
# Align up to 16 bytes
PTR.const 0xf
PTR.add
PTR.const -0x10
PTR.and
global.set __stack_end
end_function
emscripten_stack_set_limits:
.functype emscripten_stack_set_limits (PTR, PTR) -> ()
local.get 0
global.set __stack_base
local.get 1
global.set __stack_end
end_function
emscripten_stack_get_free:
.functype emscripten_stack_get_free () -> (PTR)
global.get __stack_pointer
global.get __stack_end
PTR.sub
end_function
# Add emscripten_stack_init to static ctors
.section .init_array.1,"",@
.p2align ALIGN
PTRSTORE emscripten_stack_init

Xet Storage Details

Size:
2.04 kB
·
Xet hash:
f78fd50c68d62a6708b2df5d9568d7f94f437ab1a15b66ed133e758fbb5dc9e6

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