From eb1a8453f9571cea2dc0a79374351db78f31bc28 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Sun, 19 May 2002 15:59:25 +0000 Subject: [PATCH] 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 --- .../Interpreter/ExternalFunctions.cpp | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp index 5bc46faf3c2..efe2e8fe328 100644 --- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp +++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp @@ -12,6 +12,7 @@ #include "Interpreter.h" #include "llvm/DerivedTypes.h" +#include "../test/Libraries/libinstr/tracelib.h" #include #include #include @@ -21,6 +22,7 @@ using std::vector; using std::cout; + typedef GenericValue (*ExFunc)(FunctionType *, const vector &); static std::map Functions; static std::map FuncNames; @@ -457,6 +459,43 @@ GenericValue lle_X_fflush(FunctionType *M, const vector &Args) { return GV; } +// unsigned int HashPointerToSeqNum(char* ptr) +GenericValue lle_X_HashPointerToSeqNum(FunctionType *M, const vector &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 &Args) { + assert(Args.size() == 1); + ReleasePointerSeqNum((char*) Args[0].PointerVal); + return GenericValue(); +} + +// void RecordPointer(char* ptr); +GenericValue lle_X_RecordPointer(FunctionType *M, const vector &Args) { + assert(Args.size() == 1); + RecordPointer((char*) Args[0].PointerVal); + return GenericValue(); +} + +// void PushPointerSet(); +GenericValue lle_X_PushPointerSet(FunctionType *M, const vector &Args) { + assert(Args.size() == 0); + PushPointerSet(); + return GenericValue(); +} + +// void ReleaseRecordedPointers(); +GenericValue lle_X_ReleasePointersPopSet(FunctionType *M, const vector &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; }