mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-15 23:31:37 +00:00
Use realloc() to (potentially) resize the contents of SmallPtrSet in place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39926 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
bde6869ef4
commit
1629a1fa87
@ -69,7 +69,7 @@ public:
|
||||
}
|
||||
~SmallPtrSetImpl() {
|
||||
if (!isSmall())
|
||||
delete[] CurArray;
|
||||
free(CurArray);
|
||||
}
|
||||
|
||||
bool empty() const { return size() == 0; }
|
||||
|
@ -114,7 +114,8 @@ void SmallPtrSetImpl::Grow() {
|
||||
bool WasSmall = isSmall();
|
||||
|
||||
// Install the new array. Clear all the buckets to empty.
|
||||
CurArray = new void*[NewSize+1];
|
||||
CurArray = (void**)malloc(sizeof(void*) * (NewSize+1));
|
||||
assert(CurArray && "Failed to allocate memory?");
|
||||
CurArraySize = NewSize;
|
||||
memset(CurArray, -1, NewSize*sizeof(void*));
|
||||
|
||||
@ -140,7 +141,7 @@ void SmallPtrSetImpl::Grow() {
|
||||
*const_cast<void**>(FindBucketFor(Elt)) = Elt;
|
||||
}
|
||||
|
||||
delete [] OldBuckets;
|
||||
free(OldBuckets);
|
||||
NumTombstones = 0;
|
||||
}
|
||||
}
|
||||
@ -156,7 +157,8 @@ SmallPtrSetImpl::SmallPtrSetImpl(const SmallPtrSetImpl& that) {
|
||||
memcpy(CurArray, that.CurArray, sizeof(void*)*(CurArraySize+1));
|
||||
} else {
|
||||
CurArraySize = that.NumElements < 64 ? 128 : that.CurArraySize*2;
|
||||
CurArray = new void*[CurArraySize+1];
|
||||
CurArray = (void**)malloc(sizeof(void*) * (CurArraySize+1));
|
||||
assert(CurArray && "Failed to allocate memory?");
|
||||
memset(CurArray, -1, CurArraySize*sizeof(void*));
|
||||
|
||||
// The end pointer, always valid, is set to a valid element to help the
|
||||
@ -183,17 +185,14 @@ void SmallPtrSetImpl::CopyFrom(const SmallPtrSetImpl &RHS) {
|
||||
NumElements = RHS.NumElements;
|
||||
NumTombstones = RHS.NumTombstones;
|
||||
|
||||
// If we're not currently small, and we don't have the same heap size,
|
||||
// free our heap allocated storage
|
||||
if (!isSmall() && CurArraySize != RHS.CurArraySize)
|
||||
delete [] CurArray;
|
||||
|
||||
// If we're becoming small, prepare to insert into our stack space
|
||||
if (RHS.isSmall())
|
||||
CurArray = &SmallArray[0];
|
||||
// Otherwise, allocate new heap space (unless we were the same size)
|
||||
else if (CurArraySize != RHS.CurArraySize)
|
||||
CurArray = new void*[RHS.CurArraySize+1];
|
||||
else if (CurArraySize != RHS.CurArraySize) {
|
||||
CurArray = (void**)realloc(CurArray, sizeof(void*)*(RHS.CurArraySize+1));
|
||||
assert(CurArray && "Failed to allocate memory?");
|
||||
}
|
||||
|
||||
// Copy over the new array size
|
||||
CurArraySize = RHS.CurArraySize;
|
||||
|
Loading…
x
Reference in New Issue
Block a user