mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 02:33:33 +00:00
Added version of BatchEmitOwnedPtrs and BatchReadOwnedPtrs that emits/reads
an array of pointers of the same type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43852 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6d8ab4ae81
commit
fba9cdaa81
@ -166,6 +166,18 @@ public:
|
||||
P3 = (ID3) ? SerializeTrait<T2>::Materialize(*this) : NULL;
|
||||
if (ID3 && A3) RegisterPtr(ID3,P3);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void BatchReadOwnedPtrs(unsigned NumPtrs, T** Ptrs) {
|
||||
llvm::SmallVector<unsigned,20> PtrIDs;
|
||||
PtrIDs.reserve(NumPtrs);
|
||||
|
||||
for (unsigned i = 0; i < NumPtrs; ++i)
|
||||
PtrIDs.push_back(ReadInt());
|
||||
|
||||
for (unsigned i = 0; i < NumPtrs; ++i)
|
||||
Ptrs[i] = PtrIDs[i] ? SerializeTrait<T>::Materialize(*this) : NULL;
|
||||
}
|
||||
|
||||
|
||||
template <typename T>
|
||||
|
@ -85,6 +85,15 @@ public:
|
||||
if (p4) SerializeTrait<T4>::Emit(*this,*p4);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void BatchEmitOwnedPtrs(unsigned NumPtrs, T** Ptrs) {
|
||||
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]);
|
||||
}
|
||||
|
||||
void FlushRecord() { if (inRecord()) EmitRecord(); }
|
||||
|
||||
void EnterBlock(unsigned BlockID = 8, unsigned CodeLen = 3);
|
||||
|
Loading…
x
Reference in New Issue
Block a user