Added external functions for hashing pointers to sequence numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2659 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Vikram S. Adve 2002-05-19 15:59:25 +00:00
parent 2df1f74b97
commit eb1a8453f9

View File

@ -12,6 +12,7 @@
#include "Interpreter.h"
#include "llvm/DerivedTypes.h"
#include "../test/Libraries/libinstr/tracelib.h"
#include <map>
#include <dlfcn.h>
#include <iostream>
@ -21,6 +22,7 @@
using std::vector;
using std::cout;
typedef GenericValue (*ExFunc)(FunctionType *, const vector<GenericValue> &);
static std::map<const Function *, ExFunc> Functions;
static std::map<std::string, ExFunc> FuncNames;
@ -457,6 +459,43 @@ GenericValue lle_X_fflush(FunctionType *M, const vector<GenericValue> &Args) {
return GV;
}
// unsigned int HashPointerToSeqNum(char* ptr)
GenericValue lle_X_HashPointerToSeqNum(FunctionType *M, const vector<GenericValue> &Args) {
assert(Args.size() == 1);
GenericValue GV;
GV.UIntVal = HashPointerToSeqNum((char*) Args[0].PointerVal);
return GV;
}
// void ReleasePointerSeqNum(char* ptr);
GenericValue lle_X_ReleasePointerSeqNum(FunctionType *M, const vector<GenericValue> &Args) {
assert(Args.size() == 1);
ReleasePointerSeqNum((char*) Args[0].PointerVal);
return GenericValue();
}
// void RecordPointer(char* ptr);
GenericValue lle_X_RecordPointer(FunctionType *M, const vector<GenericValue> &Args) {
assert(Args.size() == 1);
RecordPointer((char*) Args[0].PointerVal);
return GenericValue();
}
// void PushPointerSet();
GenericValue lle_X_PushPointerSet(FunctionType *M, const vector<GenericValue> &Args) {
assert(Args.size() == 0);
PushPointerSet();
return GenericValue();
}
// void ReleaseRecordedPointers();
GenericValue lle_X_ReleasePointersPopSet(FunctionType *M, const vector<GenericValue> &Args) {
assert(Args.size() == 0);
ReleasePointersPopSet();
return GenericValue();
}
} // End extern "C"
@ -503,4 +542,9 @@ void Interpreter::initializeExternalMethods() {
FuncNames["lle_X_fwrite"] = lle_X_fwrite;
FuncNames["lle_X_fgets"] = lle_X_fgets;
FuncNames["lle_X_fflush"] = lle_X_fflush;
FuncNames["lle_X_HashPointerToSeqNum"] = lle_X_HashPointerToSeqNum;
FuncNames["lle_X_ReleasePointerSeqNum"] = lle_X_ReleasePointerSeqNum;
FuncNames["lle_X_RecordPointer"] = lle_X_RecordPointer;
FuncNames["lle_X_PushPointerSet"] = lle_X_PushPointerSet;
FuncNames["lle_X_ReleasePointersPopSet"] = lle_X_ReleasePointersPopSet;
}