aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Bitcode/Deserialize.h86
-rw-r--r--include/llvm/Bitcode/Serialize.h70
2 files changed, 45 insertions, 111 deletions
diff --git a/include/llvm/Bitcode/Deserialize.h b/include/llvm/Bitcode/Deserialize.h
index ef25da7140..9b84c8ed45 100644
--- a/include/llvm/Bitcode/Deserialize.h
+++ b/include/llvm/Bitcode/Deserialize.h
@@ -137,13 +137,7 @@ public:
uint64_t ReadInt();
int64_t ReadSInt();
-
SerializedPtrID ReadPtrID() { return (SerializedPtrID) ReadInt(); }
-
- SerializedPtrID ReadDiffPtrID(SerializedPtrID& PrevID) {
- bool x = ReadBool();
- return (SerializedPtrID) (x ? (PrevID+1) : 0);
- }
bool ReadBool() {
@@ -189,7 +183,7 @@ public:
bool A1=true, bool A2=true) {
SerializedPtrID ID1 = ReadPtrID();
- SerializedPtrID ID2 = ReadDiffPtrID(ID2);
+ SerializedPtrID ID2 = ReadPtrID();
P1 = (ID1) ? SerializeTrait<T1>::Create(*this) : NULL;
if (ID1 && A1) RegisterPtr(ID1,P1);
@@ -203,27 +197,8 @@ public:
bool A1=true, bool A2=true, bool A3=true) {
SerializedPtrID ID1 = ReadPtrID();
- SerializedPtrID ID2 = ReadDiffPtrID(ID1);
- SerializedPtrID ID3 = ReadDiffPtrID(ID2);
-
- P1 = (ID1) ? SerializeTrait<T1>::Create(*this) : NULL;
- if (ID1 && A1) RegisterPtr(ID1,P1);
-
- P2 = (ID2) ? SerializeTrait<T2>::Create(*this) : NULL;
- if (ID2 && A2) RegisterPtr(ID2,P2);
-
- P3 = (ID3) ? SerializeTrait<T3>::Create(*this) : NULL;
- if (ID3 && A3) RegisterPtr(ID3,P3);
- }
-
- template <typename T1, typename T2, typename T3, typename T4>
- void BatchReadOwnedPtrs(T1*& P1, T2*& P2, T3*& P3, T4*& P4,
- bool A1=true, bool A2=true, bool A3=true, bool A4=true) {
-
- SerializedPtrID ID1 = ReadPtrID();
- SerializedPtrID ID2 = ReadDiffPtrID(ID1);
- SerializedPtrID ID3 = ReadDiffPtrID(ID2);
- SerializedPtrID ID4 = ReadDiffPtrID(ID3);
+ SerializedPtrID ID2 = ReadPtrID();
+ SerializedPtrID ID3 = ReadPtrID();
P1 = (ID1) ? SerializeTrait<T1>::Create(*this) : NULL;
if (ID1 && A1) RegisterPtr(ID1,P1);
@@ -233,20 +208,14 @@ public:
P3 = (ID3) ? SerializeTrait<T3>::Create(*this) : NULL;
if (ID3 && A3) RegisterPtr(ID3,P3);
-
- P4 = (ID4) ? SerializeTrait<T4>::Create(*this) : NULL;
- if (ID4 && A4) RegisterPtr(ID4,P4);
}
template <typename T>
void BatchReadOwnedPtrs(unsigned NumPtrs, T** Ptrs, bool AutoRegister=true) {
llvm::SmallVector<SerializedPtrID,10> BatchIDVec;
- SerializedPtrID TempPtrID;
- for (unsigned i = 0; i < NumPtrs; ++i) {
- TempPtrID = i ? ReadDiffPtrID(TempPtrID) : ReadPtrID();
- BatchIDVec.push_back(TempPtrID);
- }
+ for (unsigned i = 0; i < NumPtrs; ++i)
+ BatchIDVec.push_back(ReadPtrID());
for (unsigned i = 0; i < NumPtrs; ++i) {
SerializedPtrID& PtrID = BatchIDVec[i];
@@ -263,19 +232,13 @@ public:
template <typename T1, typename T2>
void BatchReadOwnedPtrs(unsigned NumT1Ptrs, T1** Ptrs, T2*& P2,
bool A1=true, bool A2=true) {
-
- SerializedPtrID ID2 = ReadPtrID();
- SerializedPtrID TempID = ID2;
-
- llvm::SmallVector<SerializedPtrID,10> BatchIDVec;
- for (unsigned i = 0; i < NumT1Ptrs; ++i) {
- TempID = ReadDiffPtrID(TempID);
- BatchIDVec.push_back(TempID);
- }
+ llvm::SmallVector<SerializedPtrID,10> BatchIDVec;
+
+ for (unsigned i = 0; i < NumT1Ptrs; ++i)
+ BatchIDVec.push_back(ReadPtrID());
- P2 = (ID2) ? SerializeTrait<T2>::Create(*this) : NULL;
- if (ID2 && A2) RegisterPtr(ID2,P2);
+ SerializedPtrID ID2 = ReadPtrID();
for (unsigned i = 0; i < NumT1Ptrs; ++i) {
SerializedPtrID& PtrID = BatchIDVec[i];
@@ -286,31 +249,24 @@ public:
RegisterPtr(PtrID,p);
Ptrs[i] = p;
- }
+ }
+
+ P2 = (ID2) ? SerializeTrait<T2>::Create(*this) : NULL;
+ if (ID2 && A2) RegisterPtr(ID2,P2);
}
template <typename T1, typename T2, typename T3>
void BatchReadOwnedPtrs(unsigned NumT1Ptrs, T1** Ptrs,
T2*& P2, T3*& P3,
bool A1=true, bool A2=true, bool A3=true) {
-
- SerializedPtrID ID2 = ReadPtrID();
- SerializedPtrID ID3 = ReadDiffPtrID(ID2);
-
- SerializedPtrID TempID = ID3;
llvm::SmallVector<SerializedPtrID,10> BatchIDVec;
- for (unsigned i = 0; i < NumT1Ptrs; ++i) {
- TempID = ReadDiffPtrID(TempID);
- BatchIDVec.push_back(TempID);
- }
-
- P2 = (ID2) ? SerializeTrait<T2>::Create(*this) : NULL;
- if (ID2 && A2) RegisterPtr(ID2,P2);
+ for (unsigned i = 0; i < NumT1Ptrs; ++i)
+ BatchIDVec.push_back(ReadPtrID());
- P3 = (ID3) ? SerializeTrait<T3>::Create(*this) : NULL;
- if (ID3 && A3) RegisterPtr(ID3,P3);
+ SerializedPtrID ID2 = ReadPtrID();
+ SerializedPtrID ID3 = ReadPtrID();
for (unsigned i = 0; i < NumT1Ptrs; ++i) {
SerializedPtrID& PtrID = BatchIDVec[i];
@@ -322,6 +278,12 @@ public:
Ptrs[i] = p;
}
+
+ P2 = (ID2) ? SerializeTrait<T2>::Create(*this) : NULL;
+ if (ID2 && A2) RegisterPtr(ID2,P2);
+
+ P3 = (ID3) ? SerializeTrait<T3>::Create(*this) : NULL;
+ if (ID3 && A3) RegisterPtr(ID3,P3);
}
template <typename T>
diff --git a/include/llvm/Bitcode/Serialize.h b/include/llvm/Bitcode/Serialize.h
index 9430bb10a4..60d9cb2c99 100644
--- a/include/llvm/Bitcode/Serialize.h
+++ b/include/llvm/Bitcode/Serialize.h
@@ -45,28 +45,6 @@ public:
void EmitCStr(const char* cstr);
void EmitPtr(const void* ptr) { EmitInt(getPtrId(ptr)); }
-
- SerializedPtrID EmitPtr(const void* ptr,bool) {
- SerializedPtrID ptr_id = getPtrId(ptr);
- EmitInt(ptr_id);
- return ptr_id;
- }
-
- SerializedPtrID EmitDiffPtrID(const void* ptr, SerializedPtrID PrevID) {
- assert (!isRegistered(ptr));
- SerializedPtrID ptr_id = getPtrId(ptr);
-
- if (ptr_id == 0)
- EmitBool(false);
- else {
- assert (ptr_id > PrevID);
- assert (PrevID == 0 || ptr_id - PrevID == 1);
- EmitBool(true);
- }
-
- return ptr_id;
- }
-
template <typename T>
void EmitRef(const T& ref) { EmitPtr(&ref); }
@@ -79,21 +57,17 @@ public:
template <typename T1, typename T2>
void BatchEmitOwnedPtrs(T1* p1, T2* p2) {
- // Optimization: Only emit the differences between the IDs. Most of
- // the time this difference will be "1", thus resulting in fewer bits.
- assert (!isRegistered(p1));
- assert (!isRegistered(p2));
-
- EmitDiffPtrID(p2,EmitPtr(p1,true));
-
+ EmitPtr(p1);
+ EmitPtr(p2);
if (p1) SerializeTrait<T1>::Emit(*this,*p1);
if (p2) SerializeTrait<T2>::Emit(*this,*p2);
}
template <typename T1, typename T2, typename T3>
void BatchEmitOwnedPtrs(T1* p1, T2* p2, T3* p3) {
- EmitDiffPtrID(p3,EmitDiffPtrID(p2,EmitPtr(p1)));
-
+ EmitPtr(p1);
+ EmitPtr(p2);
+ EmitPtr(p3);
if (p1) SerializeTrait<T1>::Emit(*this,*p1);
if (p2) SerializeTrait<T2>::Emit(*this,*p2);
if (p3) SerializeTrait<T3>::Emit(*this,*p3);
@@ -101,8 +75,10 @@ public:
template <typename T1, typename T2, typename T3, typename T4>
void BatchEmitOwnedPtrs(T1* p1, T2* p2, T3* p3, T4& p4) {
- EmitDiffPtrID(p4,EmitDiffPtrID(p3,EmitDiffPtrID(p2,EmitPtr(p1))));
-
+ EmitPtr(p1);
+ EmitPtr(p2);
+ EmitPtr(p3);
+ EmitPtr(p4);
if (p1) SerializeTrait<T1>::Emit(*this,*p1);
if (p2) SerializeTrait<T2>::Emit(*this,*p2);
if (p3) SerializeTrait<T3>::Emit(*this,*p3);
@@ -111,12 +87,8 @@ public:
template <typename T>
void BatchEmitOwnedPtrs(unsigned NumPtrs, T* const * Ptrs) {
- SerializedPtrID ID;
-
- for (unsigned i = 0; i < NumPtrs; ++i) {
- if (i == 0) ID = EmitPtr(Ptrs[i],true);
- else ID = EmitDiffPtrID(Ptrs[i],ID);
- }
+ for (unsigned i = 0; i < NumPtrs; ++i)
+ EmitPtr(Ptrs[i]);
for (unsigned i = 0; i < NumPtrs; ++i)
if (Ptrs[i]) SerializeTrait<T>::Emit(*this,*Ptrs[i]);
@@ -125,32 +97,32 @@ public:
template <typename T1, typename T2>
void BatchEmitOwnedPtrs(unsigned NumT1Ptrs, T1* const * Ptrs, T2* p2) {
- SerializedPtrID ID = EmitPtr(p2,true);
-
for (unsigned i = 0; i < NumT1Ptrs; ++i)
- ID = EmitDiffPtrID(Ptrs[i],ID);
+ EmitPtr(Ptrs[i]);
- if (p2) SerializeTrait<T2>::Emit(*this,*p2);
+ EmitPtr(p2);
for (unsigned i = 0; i < NumT1Ptrs; ++i)
- if (Ptrs[i]) SerializeTrait<T1>::Emit(*this,*Ptrs[i]);
+ if (Ptrs[i]) SerializeTrait<T1>::Emit(*this,*Ptrs[i]);
+
+ if (p2) SerializeTrait<T2>::Emit(*this,*p2);
}
template <typename T1, typename T2, typename T3>
void BatchEmitOwnedPtrs(unsigned NumT1Ptrs, T1* const * Ptrs,
T2* p2, T3* p3) {
- SerializedPtrID TempID = EmitDiffPtrID(p3,EmitPtr(p2,true));
-
for (unsigned i = 0; i < NumT1Ptrs; ++i)
- TempID = EmitDiffPtrID(Ptrs[i],TempID);
+ EmitPtr(Ptrs[i]);
- if (p2) SerializeTrait<T2>::Emit(*this,*p2);
- if (p3) SerializeTrait<T3>::Emit(*this,*p3);
+ EmitPtr(p2);
+ EmitPtr(p3);
for (unsigned i = 0; i < NumT1Ptrs; ++i)
if (Ptrs[i]) SerializeTrait<T1>::Emit(*this,*Ptrs[i]);
+ if (p2) SerializeTrait<T2>::Emit(*this,*p2);
+ if (p3) SerializeTrait<T3>::Emit(*this,*p3);
}
bool isRegistered(const void* p) const;