aboutsummaryrefslogtreecommitdiff
path: root/tools/jello/jello.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/jello/jello.cpp')
-rw-r--r--tools/jello/jello.cpp70
1 files changed, 0 insertions, 70 deletions
diff --git a/tools/jello/jello.cpp b/tools/jello/jello.cpp
deleted file mode 100644
index 73d40581e9..0000000000
--- a/tools/jello/jello.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//===-- jello.cpp - LLVM Just in Time Compiler ----------------------------===//
-//
-// This tool implements a just-in-time compiler for LLVM, allowing direct
-// execution of LLVM bytecode in an efficient manner.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Module.h"
-#include "llvm/Bytecode/Reader.h"
-#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetMachineImpls.h"
-#include "Support/CommandLine.h"
-#include "VM.h"
-#include <memory>
-
-namespace {
- cl::opt<std::string>
- InputFile(cl::desc("<input bytecode>"), cl::Positional, cl::init("-"));
-
- cl::list<std::string>
- InputArgv(cl::ConsumeAfter, cl::desc("<program arguments>..."));
-
- cl::opt<std::string>
- MainFunction("f", cl::desc("Function to execute"), cl::init("main"),
- cl::value_desc("function name"));
-}
-
-//===----------------------------------------------------------------------===//
-// main Driver function
-//
-int main(int argc, char **argv) {
- cl::ParseCommandLineOptions(argc, argv, " llvm just in time compiler\n");
-
- // Allocate a target... in the future this will be controllable on the
- // command line.
- std::auto_ptr<TargetMachine> Target(
- allocateX86TargetMachine(TM::PtrSize64 | TM::BigEndian));
- assert(Target.get() && "Could not allocate target machine!");
-
- // Parse the input bytecode file...
- std::string ErrorMsg;
- std::auto_ptr<Module> M(ParseBytecodeFile(InputFile, &ErrorMsg));
- if (M.get() == 0) {
- std::cerr << argv[0] << ": bytecode '" << InputFile
- << "' didn't read correctly: << " << ErrorMsg << "\n";
- return 1;
- }
-
- // Build an argv vector...
- InputArgv.insert(InputArgv.begin(), InputFile);
- char **Argv = new char*[InputArgv.size()+1];
- for (unsigned i = 0, e = InputArgv.size(); i != e; ++i) {
- Argv[i] = new char[InputArgv[i].size()+1];
- std::copy(InputArgv[i].begin(), InputArgv[i].end(), Argv[i]);
- Argv[i][InputArgv[i].size()] = 0;
- }
- Argv[InputArgv.size()] = 0;
-
- // Create the virtual machine object...
- VM TheVM(argv[0], Argv, *M.get(), *Target.get());
-
- Function *F = M.get()->getNamedFunction(MainFunction);
- if (F == 0) {
- std::cerr << "Could not find function '" << MainFunction <<"' in module!\n";
- return 1;
- }
-
- // Run the virtual machine...
- return TheVM.run(F);
-}