File tree Expand file tree Collapse file tree 4 files changed +20
-9
lines changed Expand file tree Collapse file tree 4 files changed +20
-9
lines changed Original file line number Diff line number Diff line change @@ -65,6 +65,8 @@ const {
6565 SymbolIterator,
6666 SyntaxError,
6767 TypeError,
68+ TypedArray,
69+ TypedArrayPrototype,
6870 Uint16Array,
6971 Uint32Array,
7072 Uint8Array,
@@ -105,7 +107,7 @@ module.exports = function() {
105107 // AsyncGeneratorFunction
106108 ObjectGetPrototypeOf ( async function * ( ) { } ) ,
107109 // TypedArray
108- ObjectGetPrototypeOf ( Uint8Array ) ,
110+ TypedArrayPrototype ,
109111
110112 // 19 Fundamental Objects
111113 Object . prototype , // 19.1
@@ -189,7 +191,7 @@ module.exports = function() {
189191 // AsyncGeneratorFunction
190192 ObjectGetPrototypeOf ( async function * ( ) { } ) ,
191193 // TypedArray
192- ObjectGetPrototypeOf ( Uint8Array ) ,
194+ TypedArray ,
193195
194196 // 18 The Global Object
195197 eval ,
Original file line number Diff line number Diff line change @@ -175,5 +175,18 @@ primordials.SafePromise = makeSafe(
175175 copyPrototype ( original . prototype , primordials , `${ name } Prototype` ) ;
176176} ) ;
177177
178+ // Create copies of abstract intrinsic objects that are not directly exposed
179+ // on the global object.
180+ // Refs: https://tc39.es/ecma262/#sec-%typedarray%-intrinsic-object
181+ [
182+ { name : 'TypedArray' , original : Reflect . getPrototypeOf ( Uint8Array ) } ,
183+ ] . forEach ( ( { name, original } ) => {
184+ primordials [ name ] = original ;
185+ // The static %TypedArray% methods require a valid `this`, but can't be bound,
186+ // as they need a subclass constructor as the receiver:
187+ copyPrototype ( original , primordials , name ) ;
188+ copyPrototype ( original . prototype , primordials , `${ name } Prototype` ) ;
189+ } ) ;
190+
178191Object . setPrototypeOf ( primordials , null ) ;
179192Object . freeze ( primordials ) ;
Original file line number Diff line number Diff line change @@ -57,10 +57,10 @@ const {
5757 SymbolPrototypeValueOf,
5858 SymbolIterator,
5959 SymbolToStringTag,
60+ TypedArrayPrototype,
6061 Uint16Array,
6162 Uint32Array,
6263 Uint8Array,
63- Uint8ArrayPrototype,
6464 Uint8ClampedArray,
6565 uncurryThis,
6666} = primordials ;
@@ -141,8 +141,7 @@ const setSizeGetter = uncurryThis(
141141const mapSizeGetter = uncurryThis (
142142 ObjectGetOwnPropertyDescriptor ( MapPrototype , 'size' ) . get ) ;
143143const typedArraySizeGetter = uncurryThis (
144- ObjectGetOwnPropertyDescriptor (
145- ObjectGetPrototypeOf ( Uint8ArrayPrototype ) , 'length' ) . get ) ;
144+ ObjectGetOwnPropertyDescriptor ( TypedArrayPrototype , 'length' ) . get ) ;
146145
147146let hexSlice ;
148147
Original file line number Diff line number Diff line change 33const {
44 ArrayBufferIsView,
55 ObjectGetOwnPropertyDescriptor,
6- ObjectGetPrototypeOf,
76 SymbolToStringTag,
8- Uint8ArrayPrototype ,
7+ TypedArrayPrototype ,
98 uncurryThis,
109} = primordials ;
1110
12- const TypedArrayPrototype = ObjectGetPrototypeOf ( Uint8ArrayPrototype ) ;
13-
1411const TypedArrayProto_toStringTag =
1512 uncurryThis (
1613 ObjectGetOwnPropertyDescriptor ( TypedArrayPrototype ,
You can’t perform that action at this time.
0 commit comments