private void ResizeDb() { var oldData = _scratchMemory.Span; var newScratch = _pool.Rent(_scratchMemory.Length * 2); int dbLength = newScratch.Memory.Length / 2; var newDb = newScratch.Memory.Slice(0, dbLength); _db.Span.Slice(0, _valuesIndex).CopyTo(newDb.Span); _db = newDb; var newStackMemory = newScratch.Memory.Slice(dbLength); _stack.Resize(newStackMemory); _scratchManager.Dispose(); _scratchManager = newScratch; }
private void ResizeDb() { IMemoryOwner <byte> newScratch = _pool.Rent(_scratchSpan.Length * 2); int dbLength = newScratch.Memory.Length / 2; Span <byte> span = newScratch.Memory.Span; Span <byte> sliceStart = span.Slice(0, dbLength); _db.Slice(0, _valuesIndex).CopyTo(sliceStart); _db = sliceStart; Span <byte> newStackMemory = span.Slice(dbLength); _stack.Resize(newStackMemory); _scratchManager.Dispose(); _scratchManager = newScratch; }