//
// The LLVM Compiler Infrastructure
//
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
#include "llvm/Function.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/ExecutionEngine/GenericValue.h"
-#include "llvm/ADT/APInt.h"
#include "llvm/Support/InstVisitor.h"
#include "llvm/Support/CallSite.h"
#include "llvm/Target/TargetData.h"
CallSite Caller; // Holds the call that called subframes.
// NULL if main func or debugger invoked fn
AllocaHolderHandle Allocas; // Track memory allocated by alloca
- std::vector<APInt*> APInts; // Track memory allocated for APInts
- APInt* getAPInt(uint32_t BitWidth) {
- APInt* Result = new APInt(BitWidth, 0);
- APInts.push_back(Result);
- return Result;
- }
- ~ExecutionContext() {
- while (!APInts.empty()) {
- delete APInts.back();
- APInts.pop_back();
- }
- }
};
// Interpreter - This class represents the entirety of the interpreter.
std::vector<Function*> AtExitHandlers;
public:
- Interpreter(Module *M);
+ explicit Interpreter(ModuleProvider *M);
~Interpreter();
/// runAtExitHandlers - Run any functions registered by the program's calls to
/// create - Create an interpreter ExecutionEngine. This can never fail.
///
- static ExecutionEngine *create(ModuleProvider *M, std::string *ErrorStr = 0);
+ static ExecutionEngine *create(ModuleProvider *M, std::string *ErrorStr = 0,
+ bool Fast /*unused*/ = 0);
/// run - Start execution with the specified function and arguments.
///