42 lines · c
1//===------------------ Wasm.h - Wasm Interpreter ---------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file implements interpreter support for code execution in WebAssembly.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_CLANG_LIB_INTERPRETER_WASM_H14#define LLVM_CLANG_LIB_INTERPRETER_WASM_H15 16#ifndef __EMSCRIPTEN__17#error "This requires emscripten."18#endif // __EMSCRIPTEN__19 20#include "IncrementalExecutor.h"21 22namespace clang {23 24class WasmIncrementalExecutor : public IncrementalExecutor {25public:26 WasmIncrementalExecutor(llvm::orc::ThreadSafeContext &TSC);27 28 llvm::Error addModule(PartialTranslationUnit &PTU) override;29 llvm::Error removeModule(PartialTranslationUnit &PTU) override;30 llvm::Error runCtors() const override;31 llvm::Error cleanUp() override;32 llvm::Expected<llvm::orc::ExecutorAddr>33 getSymbolAddress(llvm::StringRef Name,34 SymbolNameKind NameKind) const override;35 36 ~WasmIncrementalExecutor() override;37};38 39} // namespace clang40 41#endif // LLVM_CLANG_LIB_INTERPRETER_WASM_H42