hlsf error is solving
This commit is contained in:
@@ -49,27 +49,28 @@ namespace StgSharp.HighPerformance.Memory
|
||||
public void Collect()
|
||||
{
|
||||
Entry* cur = _spareMemory->NextNear;
|
||||
long size = 0;
|
||||
while (cur != null && cur != _spareMemory)
|
||||
{
|
||||
// cur is not empty, skip
|
||||
if (cur->State != EntryState.Empty)
|
||||
{
|
||||
cur = cur->NextNear;
|
||||
continue;
|
||||
}
|
||||
RemoveFromBucket(cur->Level, DetermineSegmentIndex(cur->Size, cur->Level), (BucketNode*)cur->Position);
|
||||
Entry* next = cur->NextNear;
|
||||
|
||||
while (next is not null &&
|
||||
next->State == EntryState.Empty &&
|
||||
AssertAdjacentTo(cur, next))
|
||||
// remove cur from bucket
|
||||
do
|
||||
{
|
||||
RemoveFromBucket(next->Level, DetermineSegmentIndex(next->Size, next->Level), (BucketNode*)next->Position);
|
||||
cur->Size += next->Size;
|
||||
RemoveFromPositionChain(next);
|
||||
next = cur->NextNear;
|
||||
size += cur->Size;
|
||||
Entry* next = cur->NextNear;
|
||||
RemoveFromBucket(cur->Level, DetermineSegmentIndex(cur->Size, cur->Level), (BucketNode*)cur->Position);
|
||||
RemoveFromPositionChain(cur);
|
||||
cur = next;
|
||||
} while (cur != null && cur != _spareMemory && cur->State == EntryState.Empty);
|
||||
if (size > 0) {
|
||||
SliceMemory(cur, size);
|
||||
}
|
||||
SliceMemory(cur);
|
||||
cur = next;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +109,7 @@ namespace StgSharp.HighPerformance.Memory
|
||||
int finalSegment = DetermineSegmentIndex(finalSize, finalLevel);
|
||||
|
||||
// Push the merged entry back to appropriate bucket
|
||||
PushLevel(finalLevel, finalSegment, (BucketNode*)e->Position);
|
||||
PushBucketToLevel(finalLevel, finalSegment, (BucketNode*)e->Position);
|
||||
|
||||
// Console.WriteLine("one block freed");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user