Revision 9a07c7d4c5945a7fa4329ee6376cc92dad5f7589 authored by Andrew Adams on 06 July 2020, 21:58:37 UTC, committed by Andrew Adams on 06 July 2020, 21:58:37 UTC
1 parent a1cfd8e
WasmExecutor.h
#ifndef HALIDE_WASM_EXECUTOR_H
#define HALIDE_WASM_EXECUTOR_H
/** \file
*
* Support for running Halide-compiled Wasm code in-process.
* Bindings for parameters, extern calls, etc. are established and the
* Wasm code is executed. Allows calls to realize to work
* exactly as if native code had been run, but via a JavaScript/Wasm VM.
* Currently, V8 is supported, with SpiderMonkey intended to be included soon as well.
*/
#include "Argument.h"
#include "JITModule.h"
#include "Parameter.h"
#include "Target.h"
#include "Type.h"
namespace Halide {
namespace Internal {
struct WasmModuleContents;
/** Handle to compiled wasm code which can be called later. */
struct WasmModule {
Internal::IntrusivePtr<WasmModuleContents> contents;
/** If the given target can be executed via the wasm executor, return true. */
static bool can_jit_target(const Target &target);
/** Compile generated wasm code with a set of externs. */
static WasmModule compile(
const Module &module,
const std::vector<Argument> &arguments,
const std::string &fn_name,
const std::map<std::string, JITExtern> &externs,
const std::vector<JITModule> &extern_deps);
/** Run generated previously compiled wasm code with a set of arguments. */
int run(const void **args);
};
} // namespace Internal
} // namespace Halide
#endif // HALIDE_WASM_EXECUTOR_H
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...