gdb uses DW_AT_prototyped to identify K&R style in C based languages.
[oota-llvm.git] / lib / ExecutionEngine / Interpreter / Interpreter.h
index abc3e08336a109f6bcfc0c107b05b04c6b0a6560..f9555b7b0948bb36d89b3d737f1e1c62554babc3 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     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.
 //
 //===----------------------------------------------------------------------===//
 //
@@ -17,7 +17,6 @@
 #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"
@@ -76,18 +75,6 @@ struct ExecutionContext {
   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.
@@ -106,7 +93,7 @@ class Interpreter : public ExecutionEngine, public InstVisitor<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
@@ -120,7 +107,8 @@ public:
   
   /// create - Create an interpreter ExecutionEngine. This can never fail.
   ///
-  static ExecutionEngine *create(ModuleProvider *M);
+  static ExecutionEngine *create(ModuleProvider *M, std::string *ErrorStr = 0,
+                                 bool Fast /*unused*/ = 0);
 
   /// run - Start execution with the specified function and arguments.
   ///