diff options
author | Ted Kremenek <kremenek@apple.com> | 2007-10-25 00:10:21 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2007-10-25 00:10:21 +0000 |
commit | d5cb7b055d6a6f856677b0f112dd4b979406fdbe (patch) | |
tree | d3ac55736ca49b9fd6c6d08673905e40a0361901 /llvm/lib/Bitcode/Writer/Serialize.cpp | |
parent | ed763de6cb6c562c65a69f484ebe0d694a4c81a6 (diff) | |
download | bcm5719-llvm-d5cb7b055d6a6f856677b0f112dd4b979406fdbe.tar.gz bcm5719-llvm-d5cb7b055d6a6f856677b0f112dd4b979406fdbe.zip |
Implemented prototype serialization of pointers, including support
for backpatching.
Added Deserialize::ReadVal.
llvm-svn: 43319
Diffstat (limited to 'llvm/lib/Bitcode/Writer/Serialize.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Writer/Serialize.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Writer/Serialize.cpp b/llvm/lib/Bitcode/Writer/Serialize.cpp index 72939334bc2..fbe1d1007c9 100644 --- a/llvm/lib/Bitcode/Writer/Serialize.cpp +++ b/llvm/lib/Bitcode/Writer/Serialize.cpp @@ -57,6 +57,17 @@ void Serializer::EmitCStr(const char* s) { EmitCStr(s,s+strlen(s)); } +unsigned Serializer::getPtrId(void* ptr) { + MapTy::iterator I = PtrMap.find(ptr); + + if (I == PtrMap.end()) { + unsigned id = PtrMap.size(); + PtrMap[ptr] = id; + return id; + } + else return I->second; +} + #define INT_EMIT(TYPE)\ void SerializeTrait<TYPE>::Emit(Serializer&S, TYPE X) { S.EmitInt(X); } @@ -65,4 +76,3 @@ INT_EMIT(unsigned char) INT_EMIT(unsigned short) INT_EMIT(unsigned int) INT_EMIT(unsigned long) -INT_EMIT(unsigned long long) |