mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Avoid repeatedly reallocating the FoldingSetNodeID when searching
through multiple nodes in a bucket. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54687 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
78766ff67c
commit
ee4bd9a5b4
@ -232,6 +232,7 @@ void FoldingSetImpl::GrowHashTable() {
|
|||||||
Buckets[NumBuckets] = reinterpret_cast<void*>(-1);
|
Buckets[NumBuckets] = reinterpret_cast<void*>(-1);
|
||||||
|
|
||||||
// Walk the old buckets, rehashing nodes into their new place.
|
// Walk the old buckets, rehashing nodes into their new place.
|
||||||
|
FoldingSetNodeID ID;
|
||||||
for (unsigned i = 0; i != OldNumBuckets; ++i) {
|
for (unsigned i = 0; i != OldNumBuckets; ++i) {
|
||||||
void *Probe = OldBuckets[i];
|
void *Probe = OldBuckets[i];
|
||||||
if (!Probe) continue;
|
if (!Probe) continue;
|
||||||
@ -241,9 +242,9 @@ void FoldingSetImpl::GrowHashTable() {
|
|||||||
NodeInBucket->SetNextInBucket(0);
|
NodeInBucket->SetNextInBucket(0);
|
||||||
|
|
||||||
// Insert the node into the new bucket, after recomputing the hash.
|
// Insert the node into the new bucket, after recomputing the hash.
|
||||||
FoldingSetNodeID ID;
|
|
||||||
GetNodeProfile(ID, NodeInBucket);
|
GetNodeProfile(ID, NodeInBucket);
|
||||||
InsertNode(NodeInBucket, GetBucketFor(ID, Buckets, NumBuckets));
|
InsertNode(NodeInBucket, GetBucketFor(ID, Buckets, NumBuckets));
|
||||||
|
ID.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -262,13 +263,14 @@ FoldingSetImpl::Node
|
|||||||
|
|
||||||
InsertPos = 0;
|
InsertPos = 0;
|
||||||
|
|
||||||
|
FoldingSetNodeID OtherID;
|
||||||
while (Node *NodeInBucket = GetNextPtr(Probe)) {
|
while (Node *NodeInBucket = GetNextPtr(Probe)) {
|
||||||
FoldingSetNodeID OtherID;
|
|
||||||
GetNodeProfile(OtherID, NodeInBucket);
|
GetNodeProfile(OtherID, NodeInBucket);
|
||||||
if (OtherID == ID)
|
if (OtherID == ID)
|
||||||
return NodeInBucket;
|
return NodeInBucket;
|
||||||
|
|
||||||
Probe = NodeInBucket->getNextInBucket();
|
Probe = NodeInBucket->getNextInBucket();
|
||||||
|
OtherID.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Didn't find the node, return null with the bucket as the InsertPos.
|
// Didn't find the node, return null with the bucket as the InsertPos.
|
||||||
|
Loading…
Reference in New Issue
Block a user