|
@@ -54,7 +54,7 @@ public:
|
|
|
// 25.1.2.7 IsBigIntElementType ( type ), https://tc39.es/ecma262/#sec-isbigintelementtype
|
|
|
virtual bool is_bigint_element_type() const = 0;
|
|
|
// 25.1.2.10 GetValueFromBuffer ( arrayBuffer, byteIndex, type, isTypedArray, order [ , isLittleEndian ] ), https://tc39.es/ecma262/#sec-getvaluefrombuffer
|
|
|
- virtual Value get_value_from_buffer(size_t byte_index, ArrayBuffer::Order, bool is_little_endian = true) const = 0;
|
|
|
+ virtual ThrowCompletionOr<Value> get_value_from_buffer(size_t byte_index, ArrayBuffer::Order, bool is_little_endian = true) const = 0;
|
|
|
// 25.1.2.12 SetValueInBuffer ( arrayBuffer, byteIndex, type, value, isTypedArray, order [ , isLittleEndian ] ), https://tc39.es/ecma262/#sec-setvalueinbuffer
|
|
|
virtual void set_value_in_buffer(size_t byte_index, Value, ArrayBuffer::Order, bool is_little_endian = true) = 0;
|
|
|
// 25.1.2.13 GetModifySetValueInBuffer ( arrayBuffer, byteIndex, type, value, op [ , isLittleEndian ] ), https://tc39.es/ecma262/#sec-getmodifysetvalueinbuffer
|
|
@@ -100,7 +100,7 @@ inline bool is_valid_integer_index(TypedArrayBase const& typed_array, CanonicalI
|
|
|
|
|
|
// 10.4.5.10 IntegerIndexedElementGet ( O, index ), https://tc39.es/ecma262/#sec-integerindexedelementget
|
|
|
template<typename T>
|
|
|
-inline Value integer_indexed_element_get(TypedArrayBase const& typed_array, CanonicalIndex property_index)
|
|
|
+inline ThrowCompletionOr<Value> integer_indexed_element_get(TypedArrayBase const& typed_array, CanonicalIndex property_index)
|
|
|
{
|
|
|
// 1. If IsValidIntegerIndex(O, index) is false, return undefined.
|
|
|
if (!is_valid_integer_index(typed_array, property_index))
|
|
@@ -195,7 +195,7 @@ public:
|
|
|
// b. If numericIndex is not undefined, then
|
|
|
if (!numeric_index.is_undefined()) {
|
|
|
// i. Let value be IntegerIndexedElementGet(O, numericIndex).
|
|
|
- auto value = integer_indexed_element_get<T>(*this, numeric_index);
|
|
|
+ auto value = MUST_OR_THROW_OOM(integer_indexed_element_get<T>(*this, numeric_index));
|
|
|
|
|
|
// ii. If value is undefined, return undefined.
|
|
|
if (value.is_undefined())
|
|
@@ -437,7 +437,7 @@ public:
|
|
|
return is_bigint;
|
|
|
}
|
|
|
|
|
|
- Value get_value_from_buffer(size_t byte_index, ArrayBuffer::Order order, bool is_little_endian = true) const override { return viewed_array_buffer()->template get_value<T>(byte_index, true, order, is_little_endian); }
|
|
|
+ ThrowCompletionOr<Value> get_value_from_buffer(size_t byte_index, ArrayBuffer::Order order, bool is_little_endian = true) const override { return viewed_array_buffer()->template get_value<T>(byte_index, true, order, is_little_endian); }
|
|
|
void set_value_in_buffer(size_t byte_index, Value value, ArrayBuffer::Order order, bool is_little_endian = true) override { viewed_array_buffer()->template set_value<T>(byte_index, value, true, order, is_little_endian); }
|
|
|
ThrowCompletionOr<Value> get_modify_set_value_in_buffer(size_t byte_index, Value value, ReadWriteModifyFunction operation, bool is_little_endian = true) override { return viewed_array_buffer()->template get_modify_set_value<T>(byte_index, value, move(operation), is_little_endian); }
|
|
|
|