//===-- Interpreter.h ------------------------------------------*- C++ -*--===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This header file defines the interpreter structure // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_EXECUTIONENGINE_INTERPRETER_INTERPRETER_H #define LLVM_LIB_EXECUTIONENGINE_INTERPRETER_INTERPRETER_H #include "llvm/ExecutionEngine/ExecutionEngine.h" #include "llvm/ExecutionEngine/GenericValue.h" #include "llvm/IR/DataLayout.h" #include "llvm/IR/Function.h" #include "llvm/IR/InstVisitor.h" #include "llvm/Support/DataTypes.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/raw_ostream.h" namespace llvm { class IntrinsicLowering; template<typename T> class generic_gep_type_iterator; class ConstantExpr; gep_type_iterator; // AllocaHolder - Object to track all of the blocks of memory allocated by // alloca. When the function returns, this object is popped off the execution // stack, which causes the dtor to be run, which frees all the alloca'd memory. // class AllocaHolder { … }; ValuePlaneTy; // ExecutionContext struct - This struct represents one stack frame currently // executing. // struct ExecutionContext { … }; // Interpreter - This class represents the entirety of the interpreter. // class Interpreter : public ExecutionEngine, public InstVisitor<Interpreter> { … }; } // End llvm namespace #endif