aboutsummaryrefslogtreecommitdiff
path: root/lib/ExecutionEngine/JIT/JIT.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-08-15 23:29:50 +0000
committerChris Lattner <sabre@nondot.org>2004-08-15 23:29:50 +0000
commitb47130c580385a5a2c922c480a85438b2bb80293 (patch)
treef8e12bdbf74bc73e9c13620ddc709ef2171e21a2 /lib/ExecutionEngine/JIT/JIT.cpp
parente8bf58c17085f6110d7f757d2417d7a96e9d329f (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.cpp35
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;
}