diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-10-31 18:23:21 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-10-31 18:23:21 +0000 |
commit | e119266c19c97ab5128aa9c563b9db60a2a220c2 (patch) | |
tree | 35aca8424c007d6a979eb23db19a068c41bccb4a | |
parent | d2f7cc9f2bc83520995405c1527dc927257ab828 (diff) | |
download | bcm5719-llvm-e119266c19c97ab5128aa9c563b9db60a2a220c2.tar.gz bcm5719-llvm-e119266c19c97ab5128aa9c563b9db60a2a220c2.zip |
Added Serializer::EmitRef to deal with emitting arbitrary references.
Modified Serializer::EmitPtr to handle const pointers.
llvm-svn: 43565
-rw-r--r-- | llvm/include/llvm/Bitcode/Serialize.h | 9 | ||||
-rw-r--r-- | llvm/lib/Bitcode/Writer/Serialize.cpp | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/llvm/include/llvm/Bitcode/Serialize.h b/llvm/include/llvm/Bitcode/Serialize.h index 72aac9d0ba4..be5adb85eaa 100644 --- a/llvm/include/llvm/Bitcode/Serialize.h +++ b/llvm/include/llvm/Bitcode/Serialize.h @@ -27,7 +27,7 @@ class Serializer { SmallVector<uint64_t,10> Record; bool inBlock; - typedef DenseMap<void*,unsigned> MapTy; + typedef DenseMap<const void*,unsigned> MapTy; MapTy PtrMap; public: @@ -42,7 +42,10 @@ public: void EmitCStr(const char* beg, const char* end); void EmitCStr(const char* cstr); - void EmitPtr(void* ptr) { EmitInt(getPtrId(ptr)); } + void EmitPtr(const void* ptr) { EmitInt(getPtrId(ptr)); } + + template <typename T> + void EmitRef(const T& ref) { EmitPtr(&ref); } template <typename T> void EmitOwnedPtr(T* ptr) { @@ -55,7 +58,7 @@ public: private: void EmitRecord(); inline bool inRecord() { return Record.size() > 0; } - unsigned getPtrId(void* ptr); + unsigned getPtrId(const void* ptr); }; } // end namespace llvm diff --git a/llvm/lib/Bitcode/Writer/Serialize.cpp b/llvm/lib/Bitcode/Writer/Serialize.cpp index a1d732047a6..58baf104c7a 100644 --- a/llvm/lib/Bitcode/Writer/Serialize.cpp +++ b/llvm/lib/Bitcode/Writer/Serialize.cpp @@ -57,7 +57,7 @@ void Serializer::EmitCStr(const char* s) { EmitCStr(s,s+strlen(s)); } -unsigned Serializer::getPtrId(void* ptr) { +unsigned Serializer::getPtrId(const void* ptr) { if (!ptr) return 0; |