Index: src/typedarray.js |
diff --git a/src/typedarray.js b/src/typedarray.js |
index d435803a5aa603793c5cce5ada2bd884979f0a24..422dc4a03cba36b8a422b5913babaafe1c83bb06 100644 |
--- a/src/typedarray.js |
+++ b/src/typedarray.js |
@@ -347,225 +347,52 @@ function DataViewGetByteLength() { |
return %DataViewGetByteLength(this); |
} |
+macro DATA_VIEW_TYPES(FUNCTION) |
+ FUNCTION(Int8) |
+ FUNCTION(Uint8) |
+ FUNCTION(Int16) |
+ FUNCTION(Uint16) |
+ FUNCTION(Int32) |
+ FUNCTION(Uint32) |
+ FUNCTION(Float32) |
+ FUNCTION(Float64) |
+endmacro |
+ |
function ToPositiveDataViewOffset(offset) { |
return ToPositiveInteger(offset, 'invalid_data_view_accessor_offset'); |
} |
-function DataViewGetInt8(offset, little_endian) { |
+ |
+macro DATA_VIEW_GETTER_SETTER(TYPENAME) |
+function DataViewGetTYPENAME(offset, little_endian) { |
if (!IS_DATAVIEW(this)) { |
throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getInt8', this]); |
+ ['DataView.getTYPENAME', this]); |
} |
if (%_ArgumentsLength() < 1) { |
throw MakeTypeError('invalid_argument'); |
} |
- return %DataViewGetInt8(this, |
+ return %DataViewGetTYPENAME(this, |
ToPositiveDataViewOffset(offset), |
!!little_endian); |
} |
-function DataViewSetInt8(offset, value, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setInt8', this]); |
- } |
- if (%_ArgumentsLength() < 2) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- %DataViewSetInt8(this, |
- ToPositiveDataViewOffset(offset), |
- TO_NUMBER_INLINE(value), |
- !!little_endian); |
-} |
- |
-function DataViewGetUint8(offset, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getUint8', this]); |
- } |
- if (%_ArgumentsLength() < 1) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- return %DataViewGetUint8(this, |
- ToPositiveDataViewOffset(offset), |
- !!little_endian); |
-} |
- |
-function DataViewSetUint8(offset, value, little_endian) { |
+function DataViewSetTYPENAME(offset, value, little_endian) { |
if (!IS_DATAVIEW(this)) { |
throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setUint8', this]); |
+ ['DataView.setTYPENAME', this]); |
} |
if (%_ArgumentsLength() < 2) { |
throw MakeTypeError('invalid_argument'); |
} |
- %DataViewSetUint8(this, |
+ %DataViewSetTYPENAME(this, |
ToPositiveDataViewOffset(offset), |
TO_NUMBER_INLINE(value), |
!!little_endian); |
} |
+endmacro |
-function DataViewGetInt16(offset, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getInt16', this]); |
- } |
- if (%_ArgumentsLength() < 1) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- return %DataViewGetInt16(this, |
- ToPositiveDataViewOffset(offset), |
- !!little_endian); |
-} |
- |
-function DataViewSetInt16(offset, value, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setInt16', this]); |
- } |
- if (%_ArgumentsLength() < 2) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- %DataViewSetInt16(this, |
- ToPositiveDataViewOffset(offset), |
- TO_NUMBER_INLINE(value), |
- !!little_endian); |
-} |
- |
-function DataViewGetUint16(offset, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getUint16', this]); |
- } |
- if (%_ArgumentsLength() < 1) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- return %DataViewGetUint16(this, |
- ToPositiveDataViewOffset(offset), |
- !!little_endian); |
-} |
- |
-function DataViewSetUint16(offset, value, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setUint16', this]); |
- } |
- if (%_ArgumentsLength() < 2) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- %DataViewSetUint16(this, |
- ToPositiveDataViewOffset(offset), |
- TO_NUMBER_INLINE(value), |
- !!little_endian); |
-} |
- |
-function DataViewGetInt32(offset, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getInt32', this]); |
- } |
- if (%_ArgumentsLength() < 1) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- return %DataViewGetInt32(this, |
- ToPositiveDataViewOffset(offset), |
- !!little_endian); |
-} |
- |
-function DataViewSetInt32(offset, value, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setInt32', this]); |
- } |
- if (%_ArgumentsLength() < 2) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- %DataViewSetInt32(this, |
- ToPositiveDataViewOffset(offset), |
- TO_NUMBER_INLINE(value), |
- !!little_endian); |
-} |
- |
-function DataViewGetUint32(offset, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getUint32', this]); |
- } |
- if (%_ArgumentsLength() < 1) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- return %DataViewGetUint32(this, |
- ToPositiveDataViewOffset(offset), |
- !!little_endian); |
-} |
- |
-function DataViewSetUint32(offset, value, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setUint32', this]); |
- } |
- if (%_ArgumentsLength() < 2) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- %DataViewSetUint32(this, |
- ToPositiveDataViewOffset(offset), |
- TO_NUMBER_INLINE(value), |
- !!little_endian); |
-} |
- |
-function DataViewGetFloat32(offset, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getFloat32', this]); |
- } |
- if (%_ArgumentsLength() < 1) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- return %DataViewGetFloat32(this, |
- ToPositiveDataViewOffset(offset), |
- !!little_endian); |
-} |
- |
-function DataViewSetFloat32(offset, value, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setFloat32', this]); |
- } |
- if (%_ArgumentsLength() < 2) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- %DataViewSetFloat32(this, |
- ToPositiveDataViewOffset(offset), |
- TO_NUMBER_INLINE(value), |
- !!little_endian); |
-} |
- |
-function DataViewGetFloat64(offset, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.getFloat64', this]); |
- } |
- if (%_ArgumentsLength() < 1) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- return %DataViewGetFloat64(this, |
- ToPositiveDataViewOffset(offset), |
- !!little_endian); |
-} |
- |
-function DataViewSetFloat64(offset, value, little_endian) { |
- if (!IS_DATAVIEW(this)) { |
- throw MakeTypeError('incompatible_method_receiver', |
- ['DataView.setFloat64', this]); |
- } |
- if (%_ArgumentsLength() < 2) { |
- throw MakeTypeError('invalid_argument'); |
- } |
- %DataViewSetFloat64(this, |
- ToPositiveDataViewOffset(offset), |
- TO_NUMBER_INLINE(value), |
- !!little_endian); |
-} |
+DATA_VIEW_TYPES(DATA_VIEW_GETTER_SETTER) |
function SetupDataView() { |
%CheckIsBootstrapping(); |