|
|
|
@ -18,7 +18,12 @@ INLINE float
|
|
|
|
|
get_f32(uint32_t offset)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(float) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(float)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *(float *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -26,7 +31,12 @@ INLINE double
|
|
|
|
|
get_f64(uint32_t offset)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(double) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(double)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *(double *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -34,7 +44,12 @@ INLINE int8_t
|
|
|
|
|
get_i8(uint32_t offset)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int8_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int8_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *(int8_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -42,7 +57,12 @@ INLINE int16_t
|
|
|
|
|
get_i16(uint32_t offset)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int16_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int16_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *(int16_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -50,7 +70,12 @@ INLINE int32_t
|
|
|
|
|
get_i32(uint32_t offset)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int32_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int32_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *(int32_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -58,7 +83,12 @@ INLINE int64_t
|
|
|
|
|
get_i64(uint32_t offset)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int64_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int64_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return *(int64_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -67,7 +97,12 @@ INLINE void
|
|
|
|
|
set_f32(uint32_t offset, float value)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(float) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(float)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*(float *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset] = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -75,7 +110,12 @@ INLINE void
|
|
|
|
|
set_f64(uint32_t offset, double value)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(double) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(double)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*(double *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset] = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -83,7 +123,12 @@ INLINE void
|
|
|
|
|
set_i8(uint32_t offset, int8_t value)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int8_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int8_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*(int8_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset] = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -91,7 +136,12 @@ INLINE void
|
|
|
|
|
set_i16(uint32_t offset, int16_t value)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int16_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int16_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*(int16_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset] = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -99,7 +149,12 @@ INLINE void
|
|
|
|
|
set_i32(uint32_t offset, int32_t value)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int32_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int32_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*(int32_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset] = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -107,10 +162,16 @@ INLINE void
|
|
|
|
|
set_i64(uint32_t offset, int64_t value)
|
|
|
|
|
{
|
|
|
|
|
assert(sledge_abi__current_wasm_module_instance.memory.buffer != NULL);
|
|
|
|
|
assert((uint64_t)offset + sizeof(int64_t) <= sledge_abi__current_wasm_module_instance.memory.size);
|
|
|
|
|
|
|
|
|
|
if (unlikely((uint64_t)offset + (uint64_t)sizeof(int64_t)
|
|
|
|
|
> sledge_abi__current_wasm_module_instance.memory.size)) {
|
|
|
|
|
sledge_abi__wasm_trap_raise(WASM_TRAP_OUT_OF_BOUNDS_LINEAR_MEMORY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
*(int64_t *)&sledge_abi__current_wasm_module_instance.memory.buffer[offset] = value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief Stub that implements the WebAssembly memory.grow instruction
|
|
|
|
|
*
|
|
|
|
|