/src/WasmEdge/include/common/errcode.h
Line | Count | Source |
1 | | // SPDX-License-Identifier: Apache-2.0 |
2 | | // SPDX-FileCopyrightText: Copyright The WasmEdge Authors |
3 | | |
4 | | //===-- wasmedge/common/errcode.h - Error code definition -----------------===// |
5 | | // |
6 | | // Part of the WasmEdge Project. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | /// |
10 | | /// \file |
11 | | /// This file contains the `Expected` wrappers. |
12 | | /// |
13 | | //===----------------------------------------------------------------------===// |
14 | | #pragma once |
15 | | |
16 | | #include "common/enum_errcode.hpp" |
17 | | #include "common/expected.h" |
18 | | #include "common/fmt.h" |
19 | | #include "common/hexstr.h" |
20 | | #include "common/spdlog.h" |
21 | | |
22 | | #include <cassert> |
23 | | #include <ostream> |
24 | | |
25 | | #if defined(_MSC_VER) && !defined(__clang__) |
26 | | #define __builtin_unreachable() __assume(0) |
27 | | #endif |
28 | | |
29 | | #ifdef NDEBUG |
30 | | #define assuming(R) \ |
31 | 2.36M | (static_cast<bool>(R) ? static_cast<void>(0) : __builtin_unreachable()) |
32 | 0 | #define assumingUnreachable() __builtin_unreachable() |
33 | | #else |
34 | | #define assuming(expr) assert(expr) |
35 | | #define assumingUnreachable() \ |
36 | | (assert(false && "unreachable"), __builtin_unreachable()) |
37 | | #endif |
38 | | |
39 | | namespace WasmEdge { |
40 | | |
41 | 208M | static inline constexpr bool likely(bool V) noexcept { |
42 | 208M | return __builtin_expect(V, true); |
43 | 208M | } Unexecuted instantiation: wasmedge.cpp:WasmEdge::likely(bool) Unexecuted instantiation: wasmedge_compat.cpp:WasmEdge::likely(bool) Unexecuted instantiation: fuzzTool.cpp:WasmEdge::likely(bool) Unexecuted instantiation: fuzzPO.cpp:WasmEdge::likely(bool) Unexecuted instantiation: uniTool.cpp:WasmEdge::likely(bool) Unexecuted instantiation: validateTool.cpp:WasmEdge::likely(bool) Unexecuted instantiation: parseTool.cpp:WasmEdge::likely(bool) Unexecuted instantiation: instantiateTool.cpp:WasmEdge::likely(bool) Unexecuted instantiation: toolConfig.cpp:WasmEdge::likely(bool) Unexecuted instantiation: compilerTool.cpp:WasmEdge::likely(bool) Unexecuted instantiation: runtimeTool.cpp:WasmEdge::likely(bool) Unexecuted instantiation: vm.cpp:WasmEdge::likely(bool) Unexecuted instantiation: plugin_modules.cpp:WasmEdge::likely(bool) Unexecuted instantiation: plugin.cpp:WasmEdge::likely(bool) module.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 72.7k | static inline constexpr bool likely(bool V) noexcept { | 42 | 72.7k | return __builtin_expect(V, true); | 43 | 72.7k | } |
Unexecuted instantiation: func.cpp:WasmEdge::likely(bool) Unexecuted instantiation: argument_parser.cpp:WasmEdge::likely(bool) section.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 524k | static inline constexpr bool likely(bool V) noexcept { | 42 | 524k | return __builtin_expect(V, true); | 43 | 524k | } |
description.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 105k | static inline constexpr bool likely(bool V) noexcept { | 42 | 105k | return __builtin_expect(V, true); | 43 | 105k | } |
segment.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 125k | static inline constexpr bool likely(bool V) noexcept { | 42 | 125k | return __builtin_expect(V, true); | 43 | 125k | } |
type.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 176k | static inline constexpr bool likely(bool V) noexcept { | 42 | 176k | return __builtin_expect(V, true); | 43 | 176k | } |
Unexecuted instantiation: expression.cpp:WasmEdge::likely(bool) instruction.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 39.5M | static inline constexpr bool likely(bool V) noexcept { | 42 | 39.5M | return __builtin_expect(V, true); | 43 | 39.5M | } |
loader.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 37.7k | static inline constexpr bool likely(bool V) noexcept { | 42 | 37.7k | return __builtin_expect(V, true); | 43 | 37.7k | } |
Unexecuted instantiation: component.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_section.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_instance.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_sort.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_alias.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_canonical.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_start.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_type.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_import.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_export.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_declarator.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_descriptor.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_valtype.cpp:WasmEdge::likely(bool) Unexecuted instantiation: serial_module.cpp:WasmEdge::likely(bool) Unexecuted instantiation: serial_section.cpp:WasmEdge::likely(bool) Unexecuted instantiation: serial_segment.cpp:WasmEdge::likely(bool) Unexecuted instantiation: serial_type.cpp:WasmEdge::likely(bool) Unexecuted instantiation: serial_description.cpp:WasmEdge::likely(bool) Unexecuted instantiation: serial_expression.cpp:WasmEdge::likely(bool) Unexecuted instantiation: serial_instruction.cpp:WasmEdge::likely(bool) filemgr.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 20.4M | static inline constexpr bool likely(bool V) noexcept { | 42 | 20.4M | return __builtin_expect(V, true); | 43 | 20.4M | } |
Unexecuted instantiation: shared_library.cpp:WasmEdge::likely(bool) Unexecuted instantiation: aot_section.cpp:WasmEdge::likely(bool) validator.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 138M | static inline constexpr bool likely(bool V) noexcept { | 42 | 138M | return __builtin_expect(V, true); | 43 | 138M | } |
Unexecuted instantiation: component_validator.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_name.cpp:WasmEdge::likely(bool) formchecker.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 6.89M | static inline constexpr bool likely(bool V) noexcept { | 42 | 6.89M | return __builtin_expect(V, true); | 43 | 6.89M | } |
Unexecuted instantiation: component_context.cpp:WasmEdge::likely(bool) Unexecuted instantiation: proxy.cpp:WasmEdge::likely(bool) Unexecuted instantiation: threadInstr.cpp:WasmEdge::likely(bool) Unexecuted instantiation: refInstr.cpp:WasmEdge::likely(bool) Unexecuted instantiation: engine.cpp:WasmEdge::likely(bool) Unexecuted instantiation: helper.cpp:WasmEdge::likely(bool) Unexecuted instantiation: executor.cpp:WasmEdge::likely(bool) Unexecuted instantiation: coredump.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_canon.cpp:WasmEdge::likely(bool) Unexecuted instantiation: component_module.cpp:WasmEdge::likely(bool) Unexecuted instantiation: controlInstr.cpp:WasmEdge::likely(bool) Unexecuted instantiation: tableInstr.cpp:WasmEdge::likely(bool) Unexecuted instantiation: memoryInstr.cpp:WasmEdge::likely(bool) Unexecuted instantiation: variableInstr.cpp:WasmEdge::likely(bool) Unexecuted instantiation: import.cpp:WasmEdge::likely(bool) Unexecuted instantiation: function.cpp:WasmEdge::likely(bool) Unexecuted instantiation: global.cpp:WasmEdge::likely(bool) Unexecuted instantiation: table.cpp:WasmEdge::likely(bool) Unexecuted instantiation: memory.cpp:WasmEdge::likely(bool) Unexecuted instantiation: elem.cpp:WasmEdge::likely(bool) Unexecuted instantiation: data.cpp:WasmEdge::likely(bool) Unexecuted instantiation: export.cpp:WasmEdge::likely(bool) Unexecuted instantiation: tag.cpp:WasmEdge::likely(bool) Unexecuted instantiation: environ.cpp:WasmEdge::likely(bool) Unexecuted instantiation: vinode.cpp:WasmEdge::likely(bool) Unexecuted instantiation: wasimodule.cpp:WasmEdge::likely(bool) Unexecuted instantiation: inode-linux.cpp:WasmEdge::likely(bool) Unexecuted instantiation: wasifunc.cpp:WasmEdge::likely(bool) Unexecuted instantiation: clock-linux.cpp:WasmEdge::likely(bool) Unexecuted instantiation: environ-linux.cpp:WasmEdge::likely(bool) compiler.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 1.69M | static inline constexpr bool likely(bool V) noexcept { | 42 | 1.69M | return __builtin_expect(V, true); | 43 | 1.69M | } |
codegen.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 4.58k | static inline constexpr bool likely(bool V) noexcept { | 42 | 4.58k | return __builtin_expect(V, true); | 43 | 4.58k | } |
Unexecuted instantiation: jit.cpp:WasmEdge::likely(bool) Unexecuted instantiation: lazyjit.cpp:WasmEdge::likely(bool) Unexecuted instantiation: allocator.cpp:WasmEdge::likely(bool) Unexecuted instantiation: fault.cpp:WasmEdge::likely(bool) Unexecuted instantiation: stacktrace.cpp:WasmEdge::likely(bool) hash.cpp:WasmEdge::likely(bool) Line | Count | Source | 41 | 574k | static inline constexpr bool likely(bool V) noexcept { | 42 | 574k | return __builtin_expect(V, true); | 43 | 574k | } |
|
44 | 50.9M | static inline constexpr bool unlikely(bool V) noexcept { |
45 | 50.9M | return __builtin_expect(V, false); |
46 | 50.9M | } Unexecuted instantiation: wasmedge.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: wasmedge_compat.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: fuzzTool.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: fuzzPO.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: uniTool.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: validateTool.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: parseTool.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: instantiateTool.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: toolConfig.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: compilerTool.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: runtimeTool.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: vm.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: plugin_modules.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: plugin.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: module.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: func.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: argument_parser.cpp:WasmEdge::unlikely(bool) section.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 123k | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 123k | return __builtin_expect(V, false); | 46 | 123k | } |
description.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 787 | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 787 | return __builtin_expect(V, false); | 46 | 787 | } |
segment.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 8.53k | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 8.53k | return __builtin_expect(V, false); | 46 | 8.53k | } |
type.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 789k | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 789k | return __builtin_expect(V, false); | 46 | 789k | } |
Unexecuted instantiation: expression.cpp:WasmEdge::unlikely(bool) instruction.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 12.6M | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 12.6M | return __builtin_expect(V, false); | 46 | 12.6M | } |
Unexecuted instantiation: loader.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_section.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_instance.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_sort.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_alias.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_canonical.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_start.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_type.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_import.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_export.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_declarator.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_descriptor.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_valtype.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: serial_module.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: serial_section.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: serial_segment.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: serial_type.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: serial_description.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: serial_expression.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: serial_instruction.cpp:WasmEdge::unlikely(bool) filemgr.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 37.2M | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 37.2M | return __builtin_expect(V, false); | 46 | 37.2M | } |
Unexecuted instantiation: shared_library.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: aot_section.cpp:WasmEdge::unlikely(bool) validator.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 7.61k | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 7.61k | return __builtin_expect(V, false); | 46 | 7.61k | } |
Unexecuted instantiation: component_validator.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_name.cpp:WasmEdge::unlikely(bool) formchecker.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 67.1k | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 67.1k | return __builtin_expect(V, false); | 46 | 67.1k | } |
Unexecuted instantiation: component_context.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: proxy.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: threadInstr.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: refInstr.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: engine.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: helper.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: executor.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: coredump.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_canon.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: component_module.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: controlInstr.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: tableInstr.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: memoryInstr.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: variableInstr.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: import.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: function.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: global.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: table.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: memory.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: elem.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: data.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: export.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: tag.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: environ.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: vinode.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: wasimodule.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: inode-linux.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: wasifunc.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: clock-linux.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: environ-linux.cpp:WasmEdge::unlikely(bool) compiler.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 2.30k | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 2.30k | return __builtin_expect(V, false); | 46 | 2.30k | } |
codegen.cpp:WasmEdge::unlikely(bool) Line | Count | Source | 44 | 33.9k | static inline constexpr bool unlikely(bool V) noexcept { | 45 | 33.9k | return __builtin_expect(V, false); | 46 | 33.9k | } |
Unexecuted instantiation: jit.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: lazyjit.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: allocator.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: fault.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: stacktrace.cpp:WasmEdge::unlikely(bool) Unexecuted instantiation: hash.cpp:WasmEdge::unlikely(bool) |
47 | | |
48 | | /// Type aliasing for Expected<T, ErrCode>. |
49 | | template <typename T> using Expect = Expected<T, ErrCode>; |
50 | | |
51 | | /// Helper function for Unexpected<ErrCode>. |
52 | 5.56k | constexpr auto Unexpect(const ErrCode &Val) { return Unexpected<ErrCode>(Val); } |
53 | 9.93k | template <typename... ArgsT> constexpr auto Unexpect(ArgsT... Args) { |
54 | 9.93k | return Unexpected<ErrCode>(ErrCode(Args...)); |
55 | 9.93k | } auto WasmEdge::Unexpect<WasmEdge::ErrCode::Value>(WasmEdge::ErrCode::Value) Line | Count | Source | 53 | 9.93k | template <typename... ArgsT> constexpr auto Unexpect(ArgsT... Args) { | 54 | 9.93k | return Unexpected<ErrCode>(ErrCode(Args...)); | 55 | 9.93k | } |
Unexecuted instantiation: auto WasmEdge::Unexpect<WasmEdge::ErrCategory, unsigned int>(WasmEdge::ErrCategory, unsigned int) |
56 | 0 | template <typename T> constexpr auto Unexpect(const Expect<T> &Val) { |
57 | 0 | return Unexpected<ErrCode>(Val.error()); |
58 | 0 | } |
59 | | |
60 | | } // namespace WasmEdge |
61 | | |
62 | | template <> |
63 | | struct fmt::formatter<WasmEdge::ErrCode> : fmt::formatter<std::string_view> { |
64 | | template <typename FmtCtx> |
65 | | auto format(const WasmEdge::ErrCode &Code, |
66 | 0 | FmtCtx &Ctx) WASMEDGE_FMT_CONST noexcept -> decltype(Ctx.out()) { |
67 | 0 | using namespace std::literals; |
68 | 0 | std::string Output = |
69 | 0 | fmt::format("{} failed: {}, Code: 0x{:03x}"sv, Code.getErrCodePhase(), |
70 | 0 | WasmEdge::ErrCodeStr[Code.getEnum()], Code.getCode()); |
71 | 0 | return formatter<std::string_view>::format(Output, Ctx); |
72 | 0 | } |
73 | | }; |
74 | | |
75 | | template <> |
76 | | struct fmt::formatter<WasmEdge::ErrCode::Value> |
77 | | : fmt::formatter<WasmEdge::ErrCode> { |
78 | | template <typename FmtCtx> |
79 | | auto format(const WasmEdge::ErrCode::Value &Value, |
80 | 0 | FmtCtx &Ctx) WASMEDGE_FMT_CONST noexcept -> decltype(Ctx.out()) { |
81 | 0 | return formatter<WasmEdge::ErrCode>::format(WasmEdge::ErrCode(Value), Ctx); |
82 | 0 | } |
83 | | }; |