forked from OSchip/llvm-project
DenseMap: we're trying to call the reserved global placement allocation
function here; use "::new" to avoid accidentally picking up a class-specific operator new. llvm-svn: 249112
This commit is contained in:
parent
43155d0d48
commit
0ff249b906
|
@ -282,7 +282,7 @@ protected:
|
||||||
"# initial buckets must be a power of two!");
|
"# initial buckets must be a power of two!");
|
||||||
const KeyT EmptyKey = getEmptyKey();
|
const KeyT EmptyKey = getEmptyKey();
|
||||||
for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
|
for (BucketT *B = getBuckets(), *E = getBucketsEnd(); B != E; ++B)
|
||||||
new (&B->getFirst()) KeyT(EmptyKey);
|
::new (&B->getFirst()) KeyT(EmptyKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
void moveFromOldBuckets(BucketT *OldBucketsBegin, BucketT *OldBucketsEnd) {
|
void moveFromOldBuckets(BucketT *OldBucketsBegin, BucketT *OldBucketsEnd) {
|
||||||
|
@ -300,7 +300,7 @@ protected:
|
||||||
(void)FoundVal; // silence warning.
|
(void)FoundVal; // silence warning.
|
||||||
assert(!FoundVal && "Key already in new map?");
|
assert(!FoundVal && "Key already in new map?");
|
||||||
DestBucket->getFirst() = std::move(B->getFirst());
|
DestBucket->getFirst() = std::move(B->getFirst());
|
||||||
new (&DestBucket->getSecond()) ValueT(std::move(B->getSecond()));
|
::new (&DestBucket->getSecond()) ValueT(std::move(B->getSecond()));
|
||||||
incrementNumEntries();
|
incrementNumEntries();
|
||||||
|
|
||||||
// Free the value.
|
// Free the value.
|
||||||
|
@ -324,11 +324,11 @@ protected:
|
||||||
getNumBuckets() * sizeof(BucketT));
|
getNumBuckets() * sizeof(BucketT));
|
||||||
else
|
else
|
||||||
for (size_t i = 0; i < getNumBuckets(); ++i) {
|
for (size_t i = 0; i < getNumBuckets(); ++i) {
|
||||||
new (&getBuckets()[i].getFirst())
|
::new (&getBuckets()[i].getFirst())
|
||||||
KeyT(other.getBuckets()[i].getFirst());
|
KeyT(other.getBuckets()[i].getFirst());
|
||||||
if (!KeyInfoT::isEqual(getBuckets()[i].getFirst(), getEmptyKey()) &&
|
if (!KeyInfoT::isEqual(getBuckets()[i].getFirst(), getEmptyKey()) &&
|
||||||
!KeyInfoT::isEqual(getBuckets()[i].getFirst(), getTombstoneKey()))
|
!KeyInfoT::isEqual(getBuckets()[i].getFirst(), getTombstoneKey()))
|
||||||
new (&getBuckets()[i].getSecond())
|
::new (&getBuckets()[i].getSecond())
|
||||||
ValueT(other.getBuckets()[i].getSecond());
|
ValueT(other.getBuckets()[i].getSecond());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -402,7 +402,7 @@ private:
|
||||||
TheBucket = InsertIntoBucketImpl(Key, TheBucket);
|
TheBucket = InsertIntoBucketImpl(Key, TheBucket);
|
||||||
|
|
||||||
TheBucket->getFirst() = Key;
|
TheBucket->getFirst() = Key;
|
||||||
new (&TheBucket->getSecond()) ValueT(Value);
|
::new (&TheBucket->getSecond()) ValueT(Value);
|
||||||
return TheBucket;
|
return TheBucket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,7 +411,7 @@ private:
|
||||||
TheBucket = InsertIntoBucketImpl(Key, TheBucket);
|
TheBucket = InsertIntoBucketImpl(Key, TheBucket);
|
||||||
|
|
||||||
TheBucket->getFirst() = Key;
|
TheBucket->getFirst() = Key;
|
||||||
new (&TheBucket->getSecond()) ValueT(std::move(Value));
|
::new (&TheBucket->getSecond()) ValueT(std::move(Value));
|
||||||
return TheBucket;
|
return TheBucket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,7 +419,7 @@ private:
|
||||||
TheBucket = InsertIntoBucketImpl(Key, TheBucket);
|
TheBucket = InsertIntoBucketImpl(Key, TheBucket);
|
||||||
|
|
||||||
TheBucket->getFirst() = std::move(Key);
|
TheBucket->getFirst() = std::move(Key);
|
||||||
new (&TheBucket->getSecond()) ValueT(std::move(Value));
|
::new (&TheBucket->getSecond()) ValueT(std::move(Value));
|
||||||
return TheBucket;
|
return TheBucket;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -766,10 +766,10 @@ public:
|
||||||
// Swap separately and handle any assymetry.
|
// Swap separately and handle any assymetry.
|
||||||
std::swap(LHSB->getFirst(), RHSB->getFirst());
|
std::swap(LHSB->getFirst(), RHSB->getFirst());
|
||||||
if (hasLHSValue) {
|
if (hasLHSValue) {
|
||||||
new (&RHSB->getSecond()) ValueT(std::move(LHSB->getSecond()));
|
::new (&RHSB->getSecond()) ValueT(std::move(LHSB->getSecond()));
|
||||||
LHSB->getSecond().~ValueT();
|
LHSB->getSecond().~ValueT();
|
||||||
} else if (hasRHSValue) {
|
} else if (hasRHSValue) {
|
||||||
new (&LHSB->getSecond()) ValueT(std::move(RHSB->getSecond()));
|
::new (&LHSB->getSecond()) ValueT(std::move(RHSB->getSecond()));
|
||||||
RHSB->getSecond().~ValueT();
|
RHSB->getSecond().~ValueT();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -795,11 +795,11 @@ public:
|
||||||
for (unsigned i = 0, e = InlineBuckets; i != e; ++i) {
|
for (unsigned i = 0, e = InlineBuckets; i != e; ++i) {
|
||||||
BucketT *NewB = &LargeSide.getInlineBuckets()[i],
|
BucketT *NewB = &LargeSide.getInlineBuckets()[i],
|
||||||
*OldB = &SmallSide.getInlineBuckets()[i];
|
*OldB = &SmallSide.getInlineBuckets()[i];
|
||||||
new (&NewB->getFirst()) KeyT(std::move(OldB->getFirst()));
|
::new (&NewB->getFirst()) KeyT(std::move(OldB->getFirst()));
|
||||||
OldB->getFirst().~KeyT();
|
OldB->getFirst().~KeyT();
|
||||||
if (!KeyInfoT::isEqual(NewB->getFirst(), EmptyKey) &&
|
if (!KeyInfoT::isEqual(NewB->getFirst(), EmptyKey) &&
|
||||||
!KeyInfoT::isEqual(NewB->getFirst(), TombstoneKey)) {
|
!KeyInfoT::isEqual(NewB->getFirst(), TombstoneKey)) {
|
||||||
new (&NewB->getSecond()) ValueT(std::move(OldB->getSecond()));
|
::new (&NewB->getSecond()) ValueT(std::move(OldB->getSecond()));
|
||||||
OldB->getSecond().~ValueT();
|
OldB->getSecond().~ValueT();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -866,8 +866,8 @@ public:
|
||||||
!KeyInfoT::isEqual(P->getFirst(), TombstoneKey)) {
|
!KeyInfoT::isEqual(P->getFirst(), TombstoneKey)) {
|
||||||
assert(size_t(TmpEnd - TmpBegin) < InlineBuckets &&
|
assert(size_t(TmpEnd - TmpBegin) < InlineBuckets &&
|
||||||
"Too many inline buckets!");
|
"Too many inline buckets!");
|
||||||
new (&TmpEnd->getFirst()) KeyT(std::move(P->getFirst()));
|
::new (&TmpEnd->getFirst()) KeyT(std::move(P->getFirst()));
|
||||||
new (&TmpEnd->getSecond()) ValueT(std::move(P->getSecond()));
|
::new (&TmpEnd->getSecond()) ValueT(std::move(P->getSecond()));
|
||||||
++TmpEnd;
|
++TmpEnd;
|
||||||
P->getSecond().~ValueT();
|
P->getSecond().~ValueT();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue