/* * nanowasm, a tiny WebAssembly/Wasm interpreter * Copyright (C) 2023-2024 Xavier Del Campo Romero * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include enum nw_state nw_run(struct nw_inst *const i) { struct nw_interp *const in = &i->interp; union nw_inst_state *const s = &i->state; if (interp_run(in)) { LOG("%s: interp_run failed\n", __func__); if (in->exception) { s->exception = in->exception; return NW_STATE_EXCEPTION; } return NW_STATE_FATAL; } else if (in->exit) { s->retval = in->retval; return NW_STATE_RETURNED; } return NW_STATE_AGAIN; }