14
14
15
15
'use strict' ;
16
16
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' ) ;
23
20
const { objectToString } = require ( 'internal/util' ) ;
24
21
const { FastBuffer } = require ( 'internal/buffer' ) ;
25
22
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
+
27
51
const 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
+
40
54
const 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 ( ) {
52
58
const buffer = heapStatisticsBuffer ;
53
59
54
- v8binding . updateHeapStatisticsArrayBuffer ( ) ;
60
+ updateHeapStatisticsArrayBuffer ( ) ;
55
61
56
62
return {
57
63
'total_heap_size' : buffer [ kTotalHeapSizeIndex ] ,
@@ -64,15 +70,12 @@ exports.getHeapStatistics = function() {
64
70
'peak_malloced_memory' : buffer [ kPeakMallocedMemoryIndex ] ,
65
71
'does_zap_garbage' : buffer [ kDoesZapGarbageIndex ]
66
72
} ;
67
- } ;
68
-
69
- exports . cachedDataVersionTag = v8binding . cachedDataVersionTag ;
70
- exports . setFlagsFromString = v8binding . setFlagsFromString ;
73
+ }
71
74
72
- exports . getHeapSpaceStatistics = function ( ) {
75
+ function getHeapSpaceStatistics ( ) {
73
76
const heapSpaceStatistics = new Array ( kNumberOfHeapSpaces ) ;
74
77
const buffer = heapSpaceStatisticsBuffer ;
75
- v8binding . updateHeapSpaceStatisticsArrayBuffer ( ) ;
78
+ updateHeapSpaceStatisticsArrayBuffer ( ) ;
76
79
77
80
for ( var i = 0 ; i < kNumberOfHeapSpaces ; i ++ ) {
78
81
const propertyOffset = i * kHeapSpaceStatisticsPropertiesCount ;
@@ -86,17 +89,14 @@ exports.getHeapSpaceStatistics = function() {
86
89
}
87
90
88
91
return heapSpaceStatistics ;
89
- } ;
92
+ }
90
93
91
94
/* V8 serialization API */
92
95
93
- const Serializer = exports . Serializer = serdesBinding . Serializer ;
94
- const Deserializer = exports . Deserializer = serdesBinding . Deserializer ;
95
-
96
96
/* JS methods for the base objects */
97
97
Serializer . prototype . _getDataCloneError = Error ;
98
98
99
- Deserializer . prototype . readRawBytes = function ( length ) {
99
+ Deserializer . prototype . readRawBytes = function readRawBytes ( length ) {
100
100
const offset = this . _readRawBytes ( length ) ;
101
101
// `this.buffer` can be a Buffer or a plain Uint8Array, so just calling
102
102
// `.slice()` doesn't work.
@@ -155,8 +155,6 @@ class DefaultSerializer extends Serializer {
155
155
}
156
156
}
157
157
158
- exports . DefaultSerializer = DefaultSerializer ;
159
-
160
158
class DefaultDeserializer extends Deserializer {
161
159
constructor ( buffer ) {
162
160
super ( buffer ) ;
@@ -176,27 +174,37 @@ class DefaultDeserializer extends Deserializer {
176
174
byteLength / BYTES_PER_ELEMENT ) ;
177
175
} else {
178
176
// 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 ,
184
181
byteLength / BYTES_PER_ELEMENT ) ;
185
182
}
186
183
}
187
184
}
188
185
189
- exports . DefaultDeserializer = DefaultDeserializer ;
190
-
191
- exports . serialize = function serialize ( value ) {
186
+ function serialize ( value ) {
192
187
const ser = new DefaultSerializer ( ) ;
193
188
ser . writeHeader ( ) ;
194
189
ser . writeValue ( value ) ;
195
190
return ser . releaseBuffer ( ) ;
196
- } ;
191
+ }
197
192
198
- exports . deserialize = function deserialize ( buffer ) {
193
+ function deserialize ( buffer ) {
199
194
const der = new DefaultDeserializer ( buffer ) ;
200
195
der . readHeader ( ) ;
201
196
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
202
210
} ;
0 commit comments