1414
1515'use strict' ;
1616
17- const Buffer = require ( 'buffer' ) . Buffer ;
18-
19- const v8binding = process . binding ( 'v8' ) ;
20- const serdesBinding = process . binding ( 'serdes' ) ;
21- const bufferBinding = process . binding ( 'buffer' ) ;
22-
17+ const { Buffer } = require ( 'buffer' ) ;
18+ const { Serializer, Deserializer } = process . binding ( 'serdes' ) ;
19+ const { copy } = process . binding ( 'buffer' ) ;
2320const { objectToString } = require ( 'internal/util' ) ;
2421const { FastBuffer } = require ( 'internal/buffer' ) ;
2522
26- // Properties for heap statistics buffer extraction.
23+ const {
24+ cachedDataVersionTag,
25+ setFlagsFromString,
26+ heapStatisticsArrayBuffer,
27+ heapSpaceStatisticsArrayBuffer,
28+ updateHeapStatisticsArrayBuffer,
29+ updateHeapSpaceStatisticsArrayBuffer,
30+
31+ // Properties for heap and heap space statistics buffer extraction.
32+ kTotalHeapSizeIndex,
33+ kTotalHeapSizeExecutableIndex,
34+ kTotalPhysicalSizeIndex,
35+ kTotalAvailableSize,
36+ kUsedHeapSizeIndex,
37+ kHeapSizeLimitIndex,
38+ kDoesZapGarbageIndex,
39+ kMallocedMemoryIndex,
40+ kPeakMallocedMemoryIndex,
41+ kHeapSpaces,
42+ kHeapSpaceStatisticsPropertiesCount,
43+ kSpaceSizeIndex,
44+ kSpaceUsedSizeIndex,
45+ kSpaceAvailableSizeIndex,
46+ kPhysicalSpaceSizeIndex
47+ } = process . binding ( 'v8' ) ;
48+
49+ const kNumberOfHeapSpaces = kHeapSpaces . length ;
50+
2751const heapStatisticsBuffer =
28- new Float64Array ( v8binding . heapStatisticsArrayBuffer ) ;
29- const kTotalHeapSizeIndex = v8binding . kTotalHeapSizeIndex ;
30- const kTotalHeapSizeExecutableIndex = v8binding . kTotalHeapSizeExecutableIndex ;
31- const kTotalPhysicalSizeIndex = v8binding . kTotalPhysicalSizeIndex ;
32- const kTotalAvailableSize = v8binding . kTotalAvailableSize ;
33- const kUsedHeapSizeIndex = v8binding . kUsedHeapSizeIndex ;
34- const kHeapSizeLimitIndex = v8binding . kHeapSizeLimitIndex ;
35- const kDoesZapGarbageIndex = v8binding . kDoesZapGarbageIndex ;
36- const kMallocedMemoryIndex = v8binding . kMallocedMemoryIndex ;
37- const kPeakMallocedMemoryIndex = v8binding . kPeakMallocedMemoryIndex ;
38-
39- // Properties for heap space statistics buffer extraction.
52+ new Float64Array ( heapStatisticsArrayBuffer ) ;
53+
4054const heapSpaceStatisticsBuffer =
41- new Float64Array ( v8binding . heapSpaceStatisticsArrayBuffer ) ;
42- const kHeapSpaces = v8binding . kHeapSpaces ;
43- const kNumberOfHeapSpaces = kHeapSpaces . length ;
44- const kHeapSpaceStatisticsPropertiesCount =
45- v8binding . kHeapSpaceStatisticsPropertiesCount ;
46- const kSpaceSizeIndex = v8binding . kSpaceSizeIndex ;
47- const kSpaceUsedSizeIndex = v8binding . kSpaceUsedSizeIndex ;
48- const kSpaceAvailableSizeIndex = v8binding . kSpaceAvailableSizeIndex ;
49- const kPhysicalSpaceSizeIndex = v8binding . kPhysicalSpaceSizeIndex ;
50-
51- exports . getHeapStatistics = function ( ) {
55+ new Float64Array ( heapSpaceStatisticsArrayBuffer ) ;
56+
57+ function getHeapStatistics ( ) {
5258 const buffer = heapStatisticsBuffer ;
5359
54- v8binding . updateHeapStatisticsArrayBuffer ( ) ;
60+ updateHeapStatisticsArrayBuffer ( ) ;
5561
5662 return {
5763 'total_heap_size' : buffer [ kTotalHeapSizeIndex ] ,
@@ -64,15 +70,12 @@ exports.getHeapStatistics = function() {
6470 'peak_malloced_memory' : buffer [ kPeakMallocedMemoryIndex ] ,
6571 'does_zap_garbage' : buffer [ kDoesZapGarbageIndex ]
6672 } ;
67- } ;
68-
69- exports . cachedDataVersionTag = v8binding . cachedDataVersionTag ;
70- exports . setFlagsFromString = v8binding . setFlagsFromString ;
73+ }
7174
72- exports . getHeapSpaceStatistics = function ( ) {
75+ function getHeapSpaceStatistics ( ) {
7376 const heapSpaceStatistics = new Array ( kNumberOfHeapSpaces ) ;
7477 const buffer = heapSpaceStatisticsBuffer ;
75- v8binding . updateHeapSpaceStatisticsArrayBuffer ( ) ;
78+ updateHeapSpaceStatisticsArrayBuffer ( ) ;
7679
7780 for ( var i = 0 ; i < kNumberOfHeapSpaces ; i ++ ) {
7881 const propertyOffset = i * kHeapSpaceStatisticsPropertiesCount ;
@@ -86,17 +89,14 @@ exports.getHeapSpaceStatistics = function() {
8689 }
8790
8891 return heapSpaceStatistics ;
89- } ;
92+ }
9093
9194/* V8 serialization API */
9295
93- const Serializer = exports . Serializer = serdesBinding . Serializer ;
94- const Deserializer = exports . Deserializer = serdesBinding . Deserializer ;
95-
9696/* JS methods for the base objects */
9797Serializer . prototype . _getDataCloneError = Error ;
9898
99- Deserializer . prototype . readRawBytes = function ( length ) {
99+ Deserializer . prototype . readRawBytes = function readRawBytes ( length ) {
100100 const offset = this . _readRawBytes ( length ) ;
101101 // `this.buffer` can be a Buffer or a plain Uint8Array, so just calling
102102 // `.slice()` doesn't work.
@@ -155,8 +155,6 @@ class DefaultSerializer extends Serializer {
155155 }
156156}
157157
158- exports . DefaultSerializer = DefaultSerializer ;
159-
160158class DefaultDeserializer extends Deserializer {
161159 constructor ( buffer ) {
162160 super ( buffer ) ;
@@ -176,27 +174,37 @@ class DefaultDeserializer extends Deserializer {
176174 byteLength / BYTES_PER_ELEMENT ) ;
177175 } else {
178176 // Copy to an aligned buffer first.
179- const copy = Buffer . allocUnsafe ( byteLength ) ;
180- bufferBinding . copy ( this . buffer , copy , 0 ,
181- byteOffset , byteOffset + byteLength ) ;
182- return new ctor ( copy . buffer ,
183- copy . byteOffset ,
177+ const buffer_copy = Buffer . allocUnsafe ( byteLength ) ;
178+ copy ( this . buffer , buffer_copy , 0 , byteOffset , byteOffset + byteLength ) ;
179+ return new ctor ( buffer_copy . buffer ,
180+ buffer_copy . byteOffset ,
184181 byteLength / BYTES_PER_ELEMENT ) ;
185182 }
186183 }
187184}
188185
189- exports . DefaultDeserializer = DefaultDeserializer ;
190-
191- exports . serialize = function serialize ( value ) {
186+ function serialize ( value ) {
192187 const ser = new DefaultSerializer ( ) ;
193188 ser . writeHeader ( ) ;
194189 ser . writeValue ( value ) ;
195190 return ser . releaseBuffer ( ) ;
196- } ;
191+ }
197192
198- exports . deserialize = function deserialize ( buffer ) {
193+ function deserialize ( buffer ) {
199194 const der = new DefaultDeserializer ( buffer ) ;
200195 der . readHeader ( ) ;
201196 return der . readValue ( ) ;
197+ }
198+
199+ module . exports = exports = {
200+ cachedDataVersionTag,
201+ getHeapStatistics,
202+ getHeapSpaceStatistics,
203+ setFlagsFromString,
204+ Serializer,
205+ Deserializer,
206+ DefaultSerializer,
207+ DefaultDeserializer,
208+ deserialize,
209+ serialize
202210} ;
0 commit comments