diff options
author | Chris Lattner <sabre@nondot.org> | 2004-08-15 23:29:50 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-08-15 23:29:50 +0000 |
commit | b47130c580385a5a2c922c480a85438b2bb80293 (patch) | |
tree | f8e12bdbf74bc73e9c13620ddc709ef2171e21a2 /lib/ExecutionEngine/JIT/JIT.cpp | |
parent | e8bf58c17085f6110d7f757d2417d7a96e9d329f (diff) |
Simplify code a bit, print error message always instead of asserting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15793 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/JIT/JIT.cpp')
-rw-r--r-- | lib/ExecutionEngine/JIT/JIT.cpp | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp index e9efd67f7c..87331fb301 100644 --- a/lib/ExecutionEngine/JIT/JIT.cpp +++ b/lib/ExecutionEngine/JIT/JIT.cpp @@ -58,29 +58,32 @@ JIT::~JIT() { /// GenericValue JIT::runFunction(Function *F, const std::vector<GenericValue> &ArgValues) { - assert (F && "Function *F was null at entry to run()"); - GenericValue rv; + assert(F && "Function *F was null at entry to run()"); + GenericValue rv; + + void *FPtr = getPointerToFunction(F); + assert(PFtr && "Pointer to fn's code was null after getPointerToFunction"); if (ArgValues.size() == 3) { int (*PF)(int, char **, const char **) = - (int(*)(int, char **, const char **))getPointerToFunction(F); - assert(PF && "Pointer to fn's code was null after getPointerToFunction"); + (int(*)(int, char **, const char **))FPtr; // Call the function. - int ExitCode = PF(ArgValues[0].IntVal, (char **) GVTOP (ArgValues[1]), - (const char **) GVTOP (ArgValues[2])); - - rv.IntVal = ExitCode; - } else { - // FIXME: This code should handle a couple of common cases efficiently, but - // it should also implement the general case by code-gening a new anonymous - // nullary function to call. - assert(ArgValues.size() == 1); - void (*PF)(int) = (void(*)(int))getPointerToFunction(F); - assert(PF && "Pointer to fn's code was null after getPointerToFunction"); - PF(ArgValues[0].IntVal); + rv.IntVal = PF(ArgValues[0].IntVal, (char **)GVTOP(ArgValues[1]), + (const char **)GVTOP(ArgValues[2])); + return rv; + } else if (ArgValues.size() == 1) { + int (*PF)(int) = (int(*)(int))FPtr; + rv.IntVal = PF(ArgValues[0].IntVal); + return rv; } + // FIXME: This code should handle a couple of common cases efficiently, but + // it should also implement the general case by code-gening a new anonymous + // nullary function to call. + std::cerr << "Sorry, unimplemented feature in the LLVM JIT. See LLVM" + << " PR#419\n for details.\n"; + abort(); return rv; } |