xref: /freebsd/contrib/llvm-project/clang/lib/Interpreter/Wasm.h (revision 71ac745d76c3ba442e753daff1870893f272b29d)
10fca6ea1SDimitry Andric //===------------------ Wasm.h - Wasm Interpreter ---------------*- C++ -*-===//
20fca6ea1SDimitry Andric //
30fca6ea1SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40fca6ea1SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50fca6ea1SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60fca6ea1SDimitry Andric //
70fca6ea1SDimitry Andric //===----------------------------------------------------------------------===//
80fca6ea1SDimitry Andric //
90fca6ea1SDimitry Andric // This file implements interpreter support for code execution in WebAssembly.
100fca6ea1SDimitry Andric //
110fca6ea1SDimitry Andric //===----------------------------------------------------------------------===//
120fca6ea1SDimitry Andric 
130fca6ea1SDimitry Andric #ifndef LLVM_CLANG_LIB_INTERPRETER_WASM_H
140fca6ea1SDimitry Andric #define LLVM_CLANG_LIB_INTERPRETER_WASM_H
150fca6ea1SDimitry Andric 
160fca6ea1SDimitry Andric #ifndef __EMSCRIPTEN__
170fca6ea1SDimitry Andric #error "This requires emscripten."
180fca6ea1SDimitry Andric #endif // __EMSCRIPTEN__
190fca6ea1SDimitry Andric 
200fca6ea1SDimitry Andric #include "IncrementalExecutor.h"
210fca6ea1SDimitry Andric 
220fca6ea1SDimitry Andric namespace clang {
230fca6ea1SDimitry Andric 
240fca6ea1SDimitry Andric class WasmIncrementalExecutor : public IncrementalExecutor {
250fca6ea1SDimitry Andric public:
260fca6ea1SDimitry Andric   WasmIncrementalExecutor(llvm::orc::ThreadSafeContext &TSC);
270fca6ea1SDimitry Andric 
280fca6ea1SDimitry Andric   llvm::Error addModule(PartialTranslationUnit &PTU) override;
290fca6ea1SDimitry Andric   llvm::Error removeModule(PartialTranslationUnit &PTU) override;
300fca6ea1SDimitry Andric   llvm::Error runCtors() const override;
31*71ac745dSDimitry Andric   llvm::Error cleanUp() override;
320fca6ea1SDimitry Andric 
330fca6ea1SDimitry Andric   ~WasmIncrementalExecutor() override;
340fca6ea1SDimitry Andric };
350fca6ea1SDimitry Andric 
360fca6ea1SDimitry Andric } // namespace clang
370fca6ea1SDimitry Andric 
380fca6ea1SDimitry Andric #endif // LLVM_CLANG_LIB_INTERPRETER_WASM_H
39