forked from OSchip/llvm-project
Added support for processing abbreviations in the Deserializer.
Added some #ifdef-controlled messages for debugging backpatching. llvm-svn: 43771
This commit is contained in:
parent
2d8aaa7d74
commit
d015c7b4fd
|
@ -156,9 +156,9 @@ public:
|
|||
|
||||
bool AtEnd();
|
||||
|
||||
bool inRecord();
|
||||
private:
|
||||
void ReadRecord();
|
||||
bool inRecord();
|
||||
uintptr_t ReadInternalRefPtr();
|
||||
|
||||
static inline bool HasFinalPtr(MapTy::value_type& V) {
|
||||
|
|
|
@ -13,6 +13,10 @@
|
|||
|
||||
#include "llvm/Bitcode/Deserialize.h"
|
||||
|
||||
#ifdef DEBUG_BACKPATCH
|
||||
#include "llvm/Support/Streams.h"
|
||||
#endif
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
Deserializer::Deserializer(BitstreamReader& stream)
|
||||
|
@ -71,6 +75,11 @@ void Deserializer::ReadRecord() {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (Code == bitc::DEFINE_ABBREV) {
|
||||
Stream.ReadAbbrevRecord();
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -136,6 +145,10 @@ void Deserializer::RegisterPtr(unsigned PtrId, const void* Ptr) {
|
|||
|
||||
assert (!HasFinalPtr(E) && "Pointer already registered.");
|
||||
|
||||
#ifdef DEBUG_BACKPATCH
|
||||
llvm::cerr << "RegisterPtr: " << PtrId << " => " << Ptr << "\n";
|
||||
#endif
|
||||
|
||||
SetPtr(E,Ptr);
|
||||
}
|
||||
|
||||
|
@ -145,8 +158,12 @@ void Deserializer::ReadUIntPtr(uintptr_t& PtrRef) {
|
|||
if (PtrId == 0) {
|
||||
PtrRef = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#ifdef DEBUG_BACKPATCH
|
||||
llvm::cerr << "ReadUintPtr: " << PtrId << "\n";
|
||||
#endif
|
||||
|
||||
MapTy::value_type& E = BPatchMap.FindAndConstruct(BPKey(PtrId));
|
||||
|
||||
if (HasFinalPtr(E))
|
||||
|
|
Loading…
Reference in New Issue