summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/SmallPtrSet.cpp
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2007-07-16 21:27:44 +0000
committerOwen Anderson <resistor@mac.com>2007-07-16 21:27:44 +0000
commit81990a3fc37376a972a31a3ad098b4151de7a5b2 (patch)
tree5e6f0dda3547152c65e079fd86acdced7ac369fe /llvm/lib/Support/SmallPtrSet.cpp
parent7d138433e94bb4f146923ef9c330f1d3cd46b72b (diff)
downloadbcm5719-llvm-81990a3fc37376a972a31a3ad098b4151de7a5b2.tar.gz
bcm5719-llvm-81990a3fc37376a972a31a3ad098b4151de7a5b2.zip
Use realloc() to (potentially) resize the contents of SmallPtrSet in place.
llvm-svn: 39926
Diffstat (limited to 'llvm/lib/Support/SmallPtrSet.cpp')
-rw-r--r--llvm/lib/Support/SmallPtrSet.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/llvm/lib/Support/SmallPtrSet.cpp b/llvm/lib/Support/SmallPtrSet.cpp
index e956cbcc9d3..5c672375c6b 100644
--- a/llvm/lib/Support/SmallPtrSet.cpp
+++ b/llvm/lib/Support/SmallPtrSet.cpp
@@ -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;
OpenPOWER on IntegriCloud