summaryrefslogtreecommitdiff
path: root/chromium/v8/src/builtins/arraybuffer.tq
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/builtins/arraybuffer.tq')
-rw-r--r--chromium/v8/src/builtins/arraybuffer.tq105
1 files changed, 93 insertions, 12 deletions
diff --git a/chromium/v8/src/builtins/arraybuffer.tq b/chromium/v8/src/builtins/arraybuffer.tq
index 179c4b38fd2..5794414443b 100644
--- a/chromium/v8/src/builtins/arraybuffer.tq
+++ b/chromium/v8/src/builtins/arraybuffer.tq
@@ -9,21 +9,25 @@ transitioning javascript builtin ArrayBufferPrototypeGetByteLength(
js-implicit context: NativeContext, receiver: JSAny)(): Number {
// 1. Let O be the this value.
// 2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
+ const functionName = 'get ArrayBuffer.prototype.byteLength';
const o = Cast<JSArrayBuffer>(receiver) otherwise
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get ArrayBuffer.prototype.byteLength', receiver);
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
// 3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
if (IsSharedArrayBuffer(o)) {
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get ArrayBuffer.prototype.byteLength', receiver);
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
}
- // 4. If IsDetachedBuffer(O) is true, throw a TypeError exception.
+ // 4. If IsResizableArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 5. If IsDetachedBuffer(O) is true, throw a TypeError exception.
// TODO(v8:4895): We don't actually throw here.
- // 5. Let length be O.[[ArrayBufferByteLength]].
+ // 6. Let length be O.[[ArrayBufferByteLength]].
const length = o.byte_length;
- // 6. Return length.
+ // 7. Return length.
return Convert<Number>(length);
}
@@ -32,15 +36,43 @@ transitioning javascript builtin SharedArrayBufferPrototypeGetByteLength(
js-implicit context: NativeContext, receiver: JSAny)(): Number {
// 1. Let O be the this value.
// 2. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
+ const functionName = 'get SharedArrayBuffer.prototype.byteLength';
const o = Cast<JSArrayBuffer>(receiver) otherwise
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get SharedArrayBuffer.prototype.byteLength', receiver);
- // 3. If IsSharedArrayBuffer(O) is false, throw a TypeError exception.
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ // 3. Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).
if (!IsSharedArrayBuffer(o)) {
ThrowTypeError(
- MessageTemplate::kIncompatibleMethodReceiver,
- 'get SharedArrayBuffer.prototype.byteLength', receiver);
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 4. If IsResizableArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 5. Let length be O.[[ArrayBufferByteLength]].
+ const length = o.byte_length;
+ // 6. Return length.
+ return Convert<Number>(length);
+}
+
+// #sec-get-resizablearraybuffer.prototype.bytelength
+transitioning javascript builtin ResizableArrayBufferPrototypeGetByteLength(
+ js-implicit context: NativeContext, receiver: JSAny)(): Number {
+ // 1. Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxByteLength]]).
+ const functionName = 'get ResizableArrayBuffer.prototype.byteLength';
+ const o = Cast<JSArrayBuffer>(receiver) otherwise
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ if (!IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsSharedArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
}
// 4. Let length be O.[[ArrayBufferByteLength]].
const length = o.byte_length;
@@ -48,6 +80,55 @@ transitioning javascript builtin SharedArrayBufferPrototypeGetByteLength(
return Convert<Number>(length);
}
+// #sec-get-resizablearraybuffer.prototype.maxbytelength
+transitioning javascript builtin ResizableArrayBufferPrototypeGetMaxByteLength(
+ js-implicit context: NativeContext, receiver: JSAny)(): Number {
+ // 1. Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxByteLength]]).
+ const functionName = 'get ResizableArrayBuffer.prototype.maxByteLength';
+ const o = Cast<JSArrayBuffer>(receiver) otherwise
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ if (!IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 3. If IsSharedArrayBuffer(O) is true, throw a TypeError exception.
+ if (IsSharedArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 4. Let length be O.[[ArrayBufferMaxByteLength]].
+ const length = o.max_byte_length;
+ // 5. Return length.
+ return Convert<Number>(length);
+}
+
+// #sec-get-growablesharedarraybuffer.prototype.maxbytelength
+transitioning javascript builtin
+GrowableSharedArrayBufferPrototypeGetMaxByteLength(
+ js-implicit context: NativeContext, receiver: JSAny)(): Number {
+ // 1. Let O be the this value.
+ // 2. Perform ? RequireInternalSlot(O, [[ArrayBufferMaxByteLength]]).
+ const functionName = 'get GrowableSharedArrayBuffer.prototype.maxByteLength';
+ const o = Cast<JSArrayBuffer>(receiver) otherwise
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ if (!IsResizableArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 3. If IsSharedArrayBuffer(O) is false, throw a TypeError exception.
+ if (!IsSharedArrayBuffer(o)) {
+ ThrowTypeError(
+ MessageTemplate::kIncompatibleMethodReceiver, functionName, receiver);
+ }
+ // 4. Let length be O.[[ArrayBufferMaxByteLength]].
+ const length = o.max_byte_length;
+ // 5. Return length.
+ return Convert<Number>(length);
+}
+
// #sec-arraybuffer.isview
transitioning javascript builtin ArrayBufferIsView(arg: JSAny): Boolean {
// 1. If Type(arg) is not Object, return false.