summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-05-27 15:46:15 +0000
committerLibravatar GitHub <noreply@github.com>2024-05-27 17:46:15 +0200
commit1e7b32490dfdccddd04f46d4b0416b48d749d51b (patch)
tree62a11365933a5a11e0800af64cbdf9172e5e6e7a /vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go
parent[chore] Small styling + link issues (#2933) (diff)
downloadgotosocial-1e7b32490dfdccddd04f46d4b0416b48d749d51b.tar.xz
[experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863)
This allows for building GoToSocial with [SQLite transpiled to WASM](https://github.com/ncruces/go-sqlite3) and accessed through [Wazero](https://wazero.io/).
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go')
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go109
1 files changed, 109 insertions, 0 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go
new file mode 100644
index 000000000..5ad594982
--- /dev/null
+++ b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go
@@ -0,0 +1,109 @@
+package wazevoapi
+
+// ExitCode is an exit code of an execution of a function.
+type ExitCode uint32
+
+const (
+ ExitCodeOK ExitCode = iota
+ ExitCodeGrowStack
+ ExitCodeGrowMemory
+ ExitCodeUnreachable
+ ExitCodeMemoryOutOfBounds
+ // ExitCodeCallGoModuleFunction is an exit code for a call to an api.GoModuleFunction.
+ ExitCodeCallGoModuleFunction
+ // ExitCodeCallGoFunction is an exit code for a call to an api.GoFunction.
+ ExitCodeCallGoFunction
+ ExitCodeTableOutOfBounds
+ ExitCodeIndirectCallNullPointer
+ ExitCodeIndirectCallTypeMismatch
+ ExitCodeIntegerDivisionByZero
+ ExitCodeIntegerOverflow
+ ExitCodeInvalidConversionToInteger
+ ExitCodeCheckModuleExitCode
+ ExitCodeCallListenerBefore
+ ExitCodeCallListenerAfter
+ ExitCodeCallGoModuleFunctionWithListener
+ ExitCodeCallGoFunctionWithListener
+ ExitCodeTableGrow
+ ExitCodeRefFunc
+ ExitCodeMemoryWait32
+ ExitCodeMemoryWait64
+ ExitCodeMemoryNotify
+ ExitCodeUnalignedAtomic
+ exitCodeMax
+)
+
+const ExitCodeMask = 0xff
+
+// String implements fmt.Stringer.
+func (e ExitCode) String() string {
+ switch e {
+ case ExitCodeOK:
+ return "ok"
+ case ExitCodeGrowStack:
+ return "grow_stack"
+ case ExitCodeCallGoModuleFunction:
+ return "call_go_module_function"
+ case ExitCodeCallGoFunction:
+ return "call_go_function"
+ case ExitCodeUnreachable:
+ return "unreachable"
+ case ExitCodeMemoryOutOfBounds:
+ return "memory_out_of_bounds"
+ case ExitCodeUnalignedAtomic:
+ return "unaligned_atomic"
+ case ExitCodeTableOutOfBounds:
+ return "table_out_of_bounds"
+ case ExitCodeIndirectCallNullPointer:
+ return "indirect_call_null_pointer"
+ case ExitCodeIndirectCallTypeMismatch:
+ return "indirect_call_type_mismatch"
+ case ExitCodeIntegerDivisionByZero:
+ return "integer_division_by_zero"
+ case ExitCodeIntegerOverflow:
+ return "integer_overflow"
+ case ExitCodeInvalidConversionToInteger:
+ return "invalid_conversion_to_integer"
+ case ExitCodeCheckModuleExitCode:
+ return "check_module_exit_code"
+ case ExitCodeCallListenerBefore:
+ return "call_listener_before"
+ case ExitCodeCallListenerAfter:
+ return "call_listener_after"
+ case ExitCodeCallGoModuleFunctionWithListener:
+ return "call_go_module_function_with_listener"
+ case ExitCodeCallGoFunctionWithListener:
+ return "call_go_function_with_listener"
+ case ExitCodeGrowMemory:
+ return "grow_memory"
+ case ExitCodeTableGrow:
+ return "table_grow"
+ case ExitCodeRefFunc:
+ return "ref_func"
+ case ExitCodeMemoryWait32:
+ return "memory_wait32"
+ case ExitCodeMemoryWait64:
+ return "memory_wait64"
+ case ExitCodeMemoryNotify:
+ return "memory_notify"
+ }
+ panic("TODO")
+}
+
+func ExitCodeCallGoModuleFunctionWithIndex(index int, withListener bool) ExitCode {
+ if withListener {
+ return ExitCodeCallGoModuleFunctionWithListener | ExitCode(index<<8)
+ }
+ return ExitCodeCallGoModuleFunction | ExitCode(index<<8)
+}
+
+func ExitCodeCallGoFunctionWithIndex(index int, withListener bool) ExitCode {
+ if withListener {
+ return ExitCodeCallGoFunctionWithListener | ExitCode(index<<8)
+ }
+ return ExitCodeCallGoFunction | ExitCode(index<<8)
+}
+
+func GoFunctionIndexFromExitCode(exitCode ExitCode) int {
+ return int(exitCode >> 8)
+}