diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-11-08 19:50:46 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-11-08 19:50:46 +0000 |
commit | 67135ebaff6428757c108f5187a05948ea01a831 (patch) | |
tree | 3a479c2d5e90d9b64946450ea5b38e5c0013d07b /llvm/lib/Bitcode/Writer | |
parent | 34660fb75acd0d072434890d22ccabeb5fdd911f (diff) | |
download | bcm5719-llvm-67135ebaff6428757c108f5187a05948ea01a831.tar.gz bcm5719-llvm-67135ebaff6428757c108f5187a05948ea01a831.zip |
Added typedef "SerializedPtrID" to represent the pointer handle written to disk
instead of just using "unsigned". This gives us more flexibility in changing
the definition of the handle later, and is more self-documenting.
Added tracking of block stack in the Deserializer. Now clients can query
if they are still within a block using the methods GetCurrentBlockLocation()
and FinishedBlock().
llvm-svn: 43903
Diffstat (limited to 'llvm/lib/Bitcode/Writer')
-rw-r--r-- | llvm/lib/Bitcode/Writer/Serialize.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/llvm/lib/Bitcode/Writer/Serialize.cpp b/llvm/lib/Bitcode/Writer/Serialize.cpp index b97462b629e..3baf9ad59aa 100644 --- a/llvm/lib/Bitcode/Writer/Serialize.cpp +++ b/llvm/lib/Bitcode/Writer/Serialize.cpp @@ -14,6 +14,10 @@ #include "llvm/Bitcode/Serialize.h" #include "string.h" +#ifdef DEBUG_BACKPATCH +#include "llvm/Support/Streams.h" +#endif + using namespace llvm; Serializer::Serializer(BitstreamWriter& stream) @@ -67,15 +71,13 @@ void Serializer::EmitCStr(const char* s, const char* end) { Record.push_back(*s); ++s; } - - EmitRecord(); } void Serializer::EmitCStr(const char* s) { EmitCStr(s,s+strlen(s)); } -unsigned Serializer::getPtrId(const void* ptr) { +SerializedPtrID Serializer::getPtrId(const void* ptr) { if (!ptr) return 0; @@ -83,12 +85,20 @@ unsigned Serializer::getPtrId(const void* ptr) { if (I == PtrMap.end()) { unsigned id = PtrMap.size()+1; +#ifdef DEBUG_BACKPATCH + llvm::cerr << "Registered PTR: " << ptr << " => " << id << "\n"; +#endif PtrMap[ptr] = id; return id; } else return I->second; } +bool Serializer::isRegistered(const void* ptr) const { + MapTy::const_iterator I = PtrMap.find(ptr); + return I != PtrMap.end(); +} + #define INT_EMIT(TYPE)\ void SerializeTrait<TYPE>::Emit(Serializer&S, TYPE X) { S.EmitInt(X); } |