| Index: src/js/typedarray.js
|
| diff --git a/src/js/typedarray.js b/src/js/typedarray.js
|
| index ef978c9cd9d60edf777093420b8b46c7ce5d92c9..2c0e0145bb5ca0034f4b3c3aefb30a5d7695effa 100644
|
| --- a/src/js/typedarray.js
|
| +++ b/src/js/typedarray.js
|
| @@ -224,7 +224,38 @@
|
| }
|
| }
|
|
|
| +function NAME_GetBuffer() {
|
| + if (!(%_ClassOf(this) === 'NAME')) {
|
| + throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.buffer", this);
|
| + }
|
| + return %TypedArrayGetBuffer(this);
|
| +}
|
| +
|
| +function NAME_GetByteLength() {
|
| + if (!(%_ClassOf(this) === 'NAME')) {
|
| + throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.byteLength", this);
|
| + }
|
| + return %_ArrayBufferViewGetByteLength(this);
|
| +}
|
| +
|
| +function NAME_GetByteOffset() {
|
| + if (!(%_ClassOf(this) === 'NAME')) {
|
| + throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.byteOffset", this);
|
| + }
|
| + return %_ArrayBufferViewGetByteOffset(this);
|
| +}
|
| +
|
| +function NAME_GetLength() {
|
| + if (!(%_ClassOf(this) === 'NAME')) {
|
| + throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.length", this);
|
| + }
|
| + return %_TypedArrayGetLength(this);
|
| +}
|
| +
|
| function NAMESubArray(begin, end) {
|
| + if (!(%_ClassOf(this) === 'NAME')) {
|
| + throw MakeTypeError(kIncompatibleMethodReceiver, "NAME.subarray", this);
|
| + }
|
| var beginInt = TO_INTEGER(begin);
|
| if (!IS_UNDEFINED(end)) {
|
| var endInt = TO_INTEGER(end);
|
| @@ -259,56 +290,6 @@
|
| endmacro
|
|
|
| TYPED_ARRAYS(TYPED_ARRAY_CONSTRUCTOR)
|
| -
|
| -function TypedArraySubArray(begin, end) {
|
| - switch (%_ClassOf(this)) {
|
| -macro TYPED_ARRAY_SUBARRAY_CASE(ARRAY_ID, NAME, ELEMENT_SIZE)
|
| - case "NAME":
|
| - return %_Call(NAMESubArray, this, begin, end);
|
| -endmacro
|
| -TYPED_ARRAYS(TYPED_ARRAY_SUBARRAY_CASE)
|
| - }
|
| - throw MakeTypeError(kIncompatibleMethodReceiver,
|
| - "get TypedArray.prototype.subarray", this);
|
| -}
|
| -%SetForceInlineFlag(TypedArraySubArray);
|
| -
|
| -function TypedArrayGetBuffer() {
|
| - if (!%_IsTypedArray(this)) {
|
| - throw MakeTypeError(kIncompatibleMethodReceiver,
|
| - "get TypedArray.prototype.buffer", this);
|
| - }
|
| - return %TypedArrayGetBuffer(this);
|
| -}
|
| -%SetForceInlineFlag(TypedArrayGetBuffer);
|
| -
|
| -function TypedArrayGetByteLength() {
|
| - if (!%_IsTypedArray(this)) {
|
| - throw MakeTypeError(kIncompatibleMethodReceiver,
|
| - "get TypedArray.prototype.byteLength", this);
|
| - }
|
| - return %_ArrayBufferViewGetByteLength(this);
|
| -}
|
| -%SetForceInlineFlag(TypedArrayGetByteLength);
|
| -
|
| -function TypedArrayGetByteOffset() {
|
| - if (!%_IsTypedArray(this)) {
|
| - throw MakeTypeError(kIncompatibleMethodReceiver,
|
| - "get TypedArray.prototype.byteOffset", this);
|
| - }
|
| - return %_ArrayBufferViewGetByteOffset(this);
|
| -}
|
| -%SetForceInlineFlag(TypedArrayGetByteOffset);
|
| -
|
| -function TypedArrayGetLength() {
|
| - if (!%_IsTypedArray(this)) {
|
| - throw MakeTypeError(kIncompatibleMethodReceiver,
|
| - "get TypedArray.prototype.length", this);
|
| - }
|
| - return %_TypedArrayGetLength(this);
|
| -}
|
| -%SetForceInlineFlag(TypedArrayGetLength);
|
| -
|
|
|
|
|
| function TypedArraySetFromArrayLike(target, source, sourceLength, offset) {
|
| @@ -738,73 +719,59 @@
|
| }
|
| %FunctionSetLength(TypedArrayFrom, 1);
|
|
|
| -function TypedArray() {
|
| - if (IS_UNDEFINED(new.target)) {
|
| - throw MakeTypeError(kConstructorNonCallable, "TypedArray");
|
| - }
|
| - if (new.target === TypedArray) {
|
| - throw MakeTypeError(kConstructAbstractClass, "TypedArray");
|
| - }
|
| -}
|
| -
|
| // -------------------------------------------------------------------
|
|
|
| -%FunctionSetPrototype(TypedArray, new GlobalObject());
|
| -%AddNamedProperty(TypedArray.prototype,
|
| - "constructor", TypedArray, DONT_ENUM);
|
| -utils.InstallFunctions(TypedArray, DONT_ENUM | DONT_DELETE | READ_ONLY, [
|
| - "from", TypedArrayFrom,
|
| - "of", TypedArrayOf
|
| -]);
|
| -utils.InstallGetter(TypedArray.prototype, "buffer", TypedArrayGetBuffer);
|
| -utils.InstallGetter(TypedArray.prototype, "byteOffset", TypedArrayGetByteOffset,
|
| - DONT_ENUM | DONT_DELETE);
|
| -utils.InstallGetter(TypedArray.prototype, "byteLength",
|
| - TypedArrayGetByteLength, DONT_ENUM | DONT_DELETE);
|
| -utils.InstallGetter(TypedArray.prototype, "length", TypedArrayGetLength,
|
| - DONT_ENUM | DONT_DELETE);
|
| -utils.InstallGetter(TypedArray.prototype, toStringTagSymbol,
|
| - TypedArrayGetToStringTag);
|
| -utils.InstallFunctions(TypedArray.prototype, DONT_ENUM, [
|
| - "subarray", TypedArraySubArray,
|
| - "set", TypedArraySet,
|
| - "copyWithin", TypedArrayCopyWithin,
|
| - "every", TypedArrayEvery,
|
| - "fill", TypedArrayFill,
|
| - "filter", TypedArrayFilter,
|
| - "find", TypedArrayFind,
|
| - "findIndex", TypedArrayFindIndex,
|
| - "includes", TypedArrayIncludes,
|
| - "indexOf", TypedArrayIndexOf,
|
| - "join", TypedArrayJoin,
|
| - "lastIndexOf", TypedArrayLastIndexOf,
|
| - "forEach", TypedArrayForEach,
|
| - "map", TypedArrayMap,
|
| - "reduce", TypedArrayReduce,
|
| - "reduceRight", TypedArrayReduceRight,
|
| - "reverse", TypedArrayReverse,
|
| - "slice", TypedArraySlice,
|
| - "some", TypedArraySome,
|
| - "sort", TypedArraySort,
|
| - "toString", TypedArrayToString,
|
| - "toLocaleString", TypedArrayToLocaleString
|
| -]);
|
| -
|
| -
|
| +// TODO(littledan): Fix the TypedArray proto chain (bug v8:4085).
|
| macro SETUP_TYPED_ARRAY(ARRAY_ID, NAME, ELEMENT_SIZE)
|
| %SetCode(GlobalNAME, NAMEConstructor);
|
| %FunctionSetPrototype(GlobalNAME, new GlobalObject());
|
| - %InternalSetPrototype(GlobalNAME, TypedArray);
|
| - %InternalSetPrototype(GlobalNAME.prototype, TypedArray.prototype);
|
|
|
| %AddNamedProperty(GlobalNAME, "BYTES_PER_ELEMENT", ELEMENT_SIZE,
|
| READ_ONLY | DONT_ENUM | DONT_DELETE);
|
| +
|
| + utils.InstallFunctions(GlobalNAME, DONT_ENUM | DONT_DELETE | READ_ONLY, [
|
| + "from", TypedArrayFrom,
|
| + "of", TypedArrayOf
|
| + ]);
|
|
|
| %AddNamedProperty(GlobalNAME.prototype,
|
| "constructor", global.NAME, DONT_ENUM);
|
| %AddNamedProperty(GlobalNAME.prototype,
|
| "BYTES_PER_ELEMENT", ELEMENT_SIZE,
|
| READ_ONLY | DONT_ENUM | DONT_DELETE);
|
| + utils.InstallGetter(GlobalNAME.prototype, "buffer", NAME_GetBuffer);
|
| + utils.InstallGetter(GlobalNAME.prototype, "byteOffset", NAME_GetByteOffset,
|
| + DONT_ENUM | DONT_DELETE);
|
| + utils.InstallGetter(GlobalNAME.prototype, "byteLength", NAME_GetByteLength,
|
| + DONT_ENUM | DONT_DELETE);
|
| + utils.InstallGetter(GlobalNAME.prototype, "length", NAME_GetLength,
|
| + DONT_ENUM | DONT_DELETE);
|
| + utils.InstallGetter(GlobalNAME.prototype, toStringTagSymbol,
|
| + TypedArrayGetToStringTag);
|
| + utils.InstallFunctions(GlobalNAME.prototype, DONT_ENUM, [
|
| + "subarray", NAMESubArray,
|
| + "set", TypedArraySet,
|
| + "copyWithin", TypedArrayCopyWithin,
|
| + "every", TypedArrayEvery,
|
| + "fill", TypedArrayFill,
|
| + "filter", TypedArrayFilter,
|
| + "find", TypedArrayFind,
|
| + "findIndex", TypedArrayFindIndex,
|
| + "includes", TypedArrayIncludes,
|
| + "indexOf", TypedArrayIndexOf,
|
| + "join", TypedArrayJoin,
|
| + "lastIndexOf", TypedArrayLastIndexOf,
|
| + "forEach", TypedArrayForEach,
|
| + "map", TypedArrayMap,
|
| + "reduce", TypedArrayReduce,
|
| + "reduceRight", TypedArrayReduceRight,
|
| + "reverse", TypedArrayReverse,
|
| + "slice", TypedArraySlice,
|
| + "some", TypedArraySome,
|
| + "sort", TypedArraySort,
|
| + "toString", TypedArrayToString,
|
| + "toLocaleString", TypedArrayToLocaleString
|
| + ]);
|
| endmacro
|
|
|
| TYPED_ARRAYS(SETUP_TYPED_ARRAY)
|
|
|