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