@@ -11,6 +11,7 @@ export const DEFAULT_INITIAL_BUFFER_SIZE = 1024;
1111export class Encoder {
1212 private pos = 0 ;
1313 private view = new DataView ( new ArrayBuffer ( this . initialBufferSize ) ) ;
14+ private bytes = new Uint8Array ( this . view . buffer ) ;
1415
1516 constructor (
1617 readonly extensionCodec = ExtensionCodec . defaultCodec ,
@@ -37,7 +38,7 @@ export class Encoder {
3738 }
3839
3940 getUint8Array ( ) : Uint8Array {
40- return new Uint8Array ( this . view . buffer , this . view . byteOffset , this . pos ) ;
41+ return this . bytes . subarray ( 0 , this . pos ) ;
4142 }
4243
4344 ensureBufferSizeToWrite ( sizeToWrite : number ) {
@@ -50,11 +51,13 @@ export class Encoder {
5051
5152 resizeBuffer ( newSize : number ) {
5253 const newBuffer = new ArrayBuffer ( newSize ) ;
54+ const newBytes = new Uint8Array ( newBuffer ) ;
55+ const newView = new DataView ( newBuffer ) ;
5356
54- new Uint8Array ( newBuffer ) . set ( new Uint8Array ( this . view . buffer ) ) ;
57+ newBytes . set ( this . bytes ) ;
5558
56- const newView = new DataView ( newBuffer ) ;
5759 this . view = newView ;
60+ this . bytes = newBytes ;
5861 }
5962
6063 encodeNil ( ) {
@@ -148,8 +151,7 @@ export class Encoder {
148151 const maxSize = maxHeaderSize + strLength * 4 ;
149152 this . ensureBufferSizeToWrite ( maxSize ) ;
150153
151- const output = new Uint8Array ( this . view . buffer , this . view . byteOffset + this . pos ) ;
152- const consumedLength = utf8EncodeWasm ( object , output ) ;
154+ const consumedLength = utf8EncodeWasm ( object , this . bytes , this . pos ) ;
153155 this . pos += consumedLength ;
154156 return ;
155157 } else {
0 commit comments