◐ Shell
clean mode source ↗

lib: use js-only implementation of `isDataView()` · nodejs/node@430c69d

Original file line numberDiff line numberDiff line change

@@ -23,6 +23,11 @@ const args = {

2323

'false-primitive': true,

2424

'false-object': int32Array,

2525

},

26+

DataView: {

27+

'true': dataView,

28+

'false-primitive': true,

29+

'false-object': uint8Array,

30+

},

2631

};

2732
2833

const bench = common.createBenchmark(main, {

Original file line numberDiff line numberDiff line change

@@ -6,6 +6,10 @@ const {

66

TypedArrayPrototypeGetSymbolToStringTag,

77

} = primordials;

88
9+

function isDataView(value) {

10+

return ArrayBufferIsView(value) && TypedArrayPrototypeGetSymbolToStringTag(value) === undefined;

11+

}

12+
913

function isTypedArray(value) {

1014

return TypedArrayPrototypeGetSymbolToStringTag(value) !== undefined;

1115

}

@@ -61,6 +65,7 @@ function isBigUint64Array(value) {

6165

module.exports = {

6266

...internalBinding('types'),

6367

isArrayBufferView: ArrayBufferIsView,

68+

isDataView,

6469

isTypedArray,

6570

isUint8Array,

6671

isUint8ClampedArray,

Original file line numberDiff line numberDiff line change

@@ -19,7 +19,6 @@ namespace {

1919

V(AsyncFunction) \

2020

V(BigIntObject) \

2121

V(BooleanObject) \

22-

V(DataView) \

2322

V(Date) \

2423

V(External) \

2524

V(GeneratorFunction) \

Original file line numberDiff line numberDiff line change

@@ -650,23 +650,6 @@ for (const [ value, _method ] of [

650650

}

651651

}

652652
653-

{

654-

function testIsDataView(input) {

655-

return types.isDataView(input);

656-

}

657-
658-

eval('%PrepareFunctionForOptimization(testIsDataView)');

659-

testIsDataView(new DataView(new ArrayBuffer()));

660-

eval('%OptimizeFunctionOnNextCall(testIsDataView)');

661-

assert.strictEqual(testIsDataView(new DataView(new ArrayBuffer())), true);

662-

assert.strictEqual(testIsDataView(Math.random()), false);

663-
664-

if (common.isDebug) {

665-

const { getV8FastApiCallCount } = internalBinding('debug');

666-

assert.strictEqual(getV8FastApiCallCount('types.isDataView'), 2);

667-

}

668-

}

669-
670653

{

671654

function testIsSharedArrayBuffer(input) {

672655

return types.isSharedArrayBuffer(input);