Skip to content

Commit de16a49

Browse files
committed
feat: avoid SharedArrayBuffer until required
1 parent 4b1c0c7 commit de16a49

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

support/types.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -238,10 +238,21 @@ exports.isDataView = isDataView;
238238
function isSharedArrayBufferToString(value) {
239239
return ObjectToString(value) === '[object SharedArrayBuffer]';
240240
}
241-
isSharedArrayBufferToString.working = (
242-
typeof SharedArrayBuffer !== 'undefined' &&
243-
isSharedArrayBufferToString(new SharedArrayBuffer())
244-
);
241+
// Avoid invoking SharedArrayBuffer constructor until required, then memoize
242+
Object.defineProperty(isSharedArrayBufferToString, 'working', {
243+
get: (function() {
244+
var isWorking;
245+
return function () {
246+
if (isWorking === undefined) {
247+
isWorking = (
248+
typeof SharedArrayBuffer !== 'undefined' &&
249+
isSharedArrayBufferToString(new SharedArrayBuffer())
250+
)
251+
}
252+
return isWorking;
253+
}
254+
})()
255+
});
245256
function isSharedArrayBuffer(value) {
246257
if (typeof SharedArrayBuffer === 'undefined') {
247258
return false;

0 commit comments

Comments
 (0)