Updated backpatching during object deserialization to support "smart"

pointers that employ unused bits in a pointer to store extra data.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43373 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ted Kremenek
2007-10-25 23:40:35 +00:00
parent 8df77a9e0f
commit 3bd9dcc08f
2 changed files with 9 additions and 3 deletions

View File

@@ -20,6 +20,7 @@
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/DataTypes.h"
#include <vector>
namespace llvm {
@@ -40,8 +41,11 @@ class Deserializer {
struct BPatchNode {
BPatchNode* const Next;
void*& PtrRef;
BPatchNode(BPatchNode* n, void*& pref) : Next(n), PtrRef(pref) {}
uintptr_t& PtrRef;
BPatchNode(BPatchNode* n, void*& pref)
: Next(n), PtrRef(reinterpret_cast<uintptr_t&>(pref)) {
PtrRef = 0;
}
};
struct BPatchEntry {