diff --git a/src/map/ShareableMap.ts b/src/map/ShareableMap.ts index d3ca305..bb6cb52 100644 --- a/src/map/ShareableMap.ts +++ b/src/map/ShareableMap.ts @@ -535,6 +535,8 @@ export class ShareableMap extends TransferableDataStructure { private defragment() { const newData: ArrayBuffer = new ArrayBuffer(this.dataView.byteLength); const newView = new DataView(newData); + const newUint8Array = new Uint8Array(newData); + const oldUint8Array = new Uint8Array(this.dataMem); let newOffset = ShareableMap.INITIAL_DATA_OFFSET; @@ -550,9 +552,7 @@ export class ShareableMap extends TransferableDataStructure { const totalLength = keyLength + valueLength + ShareableMap.DATA_OBJECT_OFFSET; - for (let i = 0; i < totalLength; i++) { - newView.setUint8(newOffset + i, this.dataView.getUint8(dataPointer + i)); - } + newUint8Array.set(oldUint8Array.subarray(dataPointer, dataPointer + totalLength), newOffset); // Pointer to next block is zero newView.setUint32(newOffset, 0);