
This adds very basic support for module instantiation/allocation, as well as a stub for an interpreter (and executions APIs). The 'wasm' utility is further expanded to instantiate, and attempt executing the first non-imported function in the module. Note that as the execution is a stub, the expected result is a zero. Regardless, this will allow future commits to implement the JS WebAssembly API. :^)
23 lines
595 B
C++
23 lines
595 B
C++
/*
|
|
* Copyright (c) 2021, Ali Mohammad Pur <mpfard@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibWasm/AbstractMachine/AbstractMachine.h>
|
|
#include <LibWasm/AbstractMachine/Configuration.h>
|
|
#include <LibWasm/AbstractMachine/Interpreter.h>
|
|
#include <LibWasm/Opcode.h>
|
|
|
|
namespace Wasm {
|
|
|
|
void Interpreter::interpret(Configuration& configuration)
|
|
{
|
|
// FIXME: Interpret stuff
|
|
dbgln("FIXME: Interpret stuff!");
|
|
// Push some dummy values
|
|
for (size_t i = 0; i < configuration.frame()->arity(); ++i)
|
|
configuration.stack().push(make<Value>(0));
|
|
}
|
|
|
|
}
|