Beispiel #1
0
        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;
        }
Beispiel #2
0
        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;
        }