@@ -129,12 +129,37 @@ void CallbackInfo::WeakCallback(
129
129
}
130
130
131
131
132
+ inline size_t InternalExternalArraySize (enum ExternalArrayType type) {
133
+ switch (type) {
134
+ case v8::kExternalUint8Array :
135
+ return sizeof (uint8_t );
136
+ case v8::kExternalInt8Array :
137
+ return sizeof (int8_t );
138
+ case v8::kExternalInt16Array :
139
+ return sizeof (int16_t );
140
+ case v8::kExternalUint16Array :
141
+ return sizeof (uint16_t );
142
+ case v8::kExternalInt32Array :
143
+ return sizeof (int32_t );
144
+ case v8::kExternalUint32Array :
145
+ return sizeof (uint32_t );
146
+ case v8::kExternalFloat32Array :
147
+ return sizeof (float ); // NOLINT(runtime/sizeof)
148
+ case v8::kExternalFloat64Array :
149
+ return sizeof (double ); // NOLINT(runtime/sizeof)
150
+ case v8::kExternalUint8ClampedArray :
151
+ return sizeof (uint8_t );
152
+ }
153
+ return 0 ;
154
+ }
155
+
156
+
132
157
void CallbackInfo::WeakCallback (Isolate* isolate, Local<Object> object) {
133
158
void * array_data = object->GetIndexedPropertiesExternalArrayData ();
134
159
size_t array_length = object->GetIndexedPropertiesExternalArrayDataLength ();
135
160
enum ExternalArrayType array_type =
136
161
object->GetIndexedPropertiesExternalArrayDataType ();
137
- size_t array_size = ExternalArraySize (array_type);
162
+ size_t array_size = InternalExternalArraySize (array_type);
138
163
CHECK_GT (array_size, 0 );
139
164
if (array_size > 1 && array_data != NULL ) {
140
165
CHECK_GT (array_length * array_size, array_length); // Overflow check.
@@ -152,27 +177,7 @@ void CallbackInfo::WeakCallback(Isolate* isolate, Local<Object> object) {
152
177
153
178
// return size of external array type, or 0 if unrecognized
154
179
size_t ExternalArraySize (enum ExternalArrayType type) {
155
- switch (type) {
156
- case v8::kExternalUint8Array :
157
- return sizeof (uint8_t );
158
- case v8::kExternalInt8Array :
159
- return sizeof (int8_t );
160
- case v8::kExternalInt16Array :
161
- return sizeof (int16_t );
162
- case v8::kExternalUint16Array :
163
- return sizeof (uint16_t );
164
- case v8::kExternalInt32Array :
165
- return sizeof (int32_t );
166
- case v8::kExternalUint32Array :
167
- return sizeof (uint32_t );
168
- case v8::kExternalFloat32Array :
169
- return sizeof (float ); // NOLINT(runtime/sizeof)
170
- case v8::kExternalFloat64Array :
171
- return sizeof (double ); // NOLINT(runtime/sizeof)
172
- case v8::kExternalUint8ClampedArray :
173
- return sizeof (uint8_t );
174
- }
175
- return 0 ;
180
+ return InternalExternalArraySize (type);
176
181
}
177
182
178
183
@@ -200,12 +205,12 @@ void CopyOnto(const FunctionCallbackInfo<Value>& args) {
200
205
size_t source_length = source->GetIndexedPropertiesExternalArrayDataLength ();
201
206
enum ExternalArrayType source_type =
202
207
source->GetIndexedPropertiesExternalArrayDataType ();
203
- size_t source_size = ExternalArraySize (source_type);
208
+ size_t source_size = InternalExternalArraySize (source_type);
204
209
205
210
size_t dest_length = dest->GetIndexedPropertiesExternalArrayDataLength ();
206
211
enum ExternalArrayType dest_type =
207
212
dest->GetIndexedPropertiesExternalArrayDataType ();
208
- size_t dest_size = ExternalArraySize (dest_type);
213
+ size_t dest_size = InternalExternalArraySize (dest_type);
209
214
210
215
// optimization for Uint8 arrays (i.e. Buffers)
211
216
if (source_size != 1 || dest_size != 1 ) {
@@ -261,7 +266,7 @@ void SliceOnto(const FunctionCallbackInfo<Value>& args) {
261
266
size_t source_len = source->GetIndexedPropertiesExternalArrayDataLength ();
262
267
enum ExternalArrayType source_type =
263
268
source->GetIndexedPropertiesExternalArrayDataType ();
264
- size_t source_size = ExternalArraySize (source_type);
269
+ size_t source_size = InternalExternalArraySize (source_type);
265
270
266
271
CHECK_NE (source_size, 0 );
267
272
@@ -304,7 +309,7 @@ void Alloc(const FunctionCallbackInfo<Value>& args) {
304
309
array_type = kExternalUint8Array ;
305
310
} else {
306
311
array_type = static_cast <ExternalArrayType>(args[2 ]->Uint32Value ());
307
- size_t type_length = ExternalArraySize (array_type);
312
+ size_t type_length = InternalExternalArraySize (array_type);
308
313
CHECK_GE (type_length * length, length);
309
314
length *= type_length;
310
315
}
@@ -318,7 +323,7 @@ void Alloc(Environment* env,
318
323
Handle <Object> obj,
319
324
size_t length,
320
325
enum ExternalArrayType type) {
321
- size_t type_size = ExternalArraySize (type);
326
+ size_t type_size = InternalExternalArraySize (type);
322
327
323
328
CHECK_LE (length, kMaxLength );
324
329
CHECK_GT (type_size, 0 );
@@ -345,7 +350,7 @@ void Alloc(Environment* env,
345
350
enum ExternalArrayType type) {
346
351
CHECK_EQ (false , obj->HasIndexedPropertiesInExternalArrayData ());
347
352
env->isolate ()->AdjustAmountOfExternalAllocatedMemory (length);
348
- size_t size = length / ExternalArraySize (type);
353
+ size_t size = length / InternalExternalArraySize (type);
349
354
obj->SetIndexedPropertiesToExternalArrayData (data, type, size);
350
355
CallbackInfo::New (env->isolate (),
351
356
CallbackInfo::kInternal ,
@@ -378,7 +383,7 @@ void AllocDispose(Environment* env, Handle<Object> obj) {
378
383
size_t length = obj->GetIndexedPropertiesExternalArrayDataLength ();
379
384
enum ExternalArrayType array_type =
380
385
obj->GetIndexedPropertiesExternalArrayDataType ();
381
- size_t array_size = ExternalArraySize (array_type);
386
+ size_t array_size = InternalExternalArraySize (array_type);
382
387
383
388
CHECK_GT (array_size, 0 );
384
389
CHECK_GE (length * array_size, length);
@@ -412,7 +417,7 @@ static void Alloc(Environment* env,
412
417
env->set_using_smalloc_alloc_cb (true );
413
418
CallbackInfo* info = CallbackInfo::New (isolate, ownership, obj, fn, hint);
414
419
obj->SetHiddenValue (env->smalloc_p_string (), External::New (isolate, info));
415
- size_t size = length / ExternalArraySize (type);
420
+ size_t size = length / InternalExternalArraySize (type);
416
421
obj->SetIndexedPropertiesToExternalArrayData (data, type, size);
417
422
}
418
423
@@ -425,7 +430,7 @@ void Alloc(Environment* env,
425
430
enum ExternalArrayType type) {
426
431
CHECK_LE (length, kMaxLength );
427
432
428
- size_t type_size = ExternalArraySize (type);
433
+ size_t type_size = InternalExternalArraySize (type);
429
434
430
435
CHECK_GT (type_size, 0 );
431
436
CHECK_GE (length * type_size, length);
0 commit comments