Commit ebc95561 authored by Marja Hölttä's avatar Marja Hölttä Committed by V8 LUCI CQ

[rab/gsab] TypedArray.p.slice fix in Torque: Destination can be resizable

Bug: v8:11111,chromium:1362487
Change-Id: Ifc7649ec945a0cb13e02c52a47f8ab68fa8ab848
Fixed: chromium:1362487
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3890915Reviewed-by: 's avatarShu-yu Guo <syg@chromium.org>
Commit-Queue: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/main@{#83242}
parent 238278e4
...@@ -36,8 +36,20 @@ macro FastCopy( ...@@ -36,8 +36,20 @@ macro FastCopy(
otherwise unreachable; otherwise unreachable;
const srcPtr: RawPtr = src.data_ptr + Convert<intptr>(startOffset); const srcPtr: RawPtr = src.data_ptr + Convert<intptr>(startOffset);
dcheck(countBytes <= dest.byte_length); @if(DEBUG) {
dcheck(countBytes <= src.byte_length - startOffset); const srcLength =
LoadJSTypedArrayLengthAndCheckDetached(src) otherwise unreachable;
const srcByteLength = GetTypedArrayElementsInfo(src).CalculateByteLength(
srcLength) otherwise unreachable;
const destLength =
LoadJSTypedArrayLengthAndCheckDetached(dest) otherwise unreachable;
const destByteLength = GetTypedArrayElementsInfo(dest).CalculateByteLength(
destLength) otherwise unreachable;
dcheck(countBytes <= destByteLength);
dcheck(countBytes <= srcByteLength - startOffset);
}
if (IsSharedArrayBuffer(src.buffer)) { if (IsSharedArrayBuffer(src.buffer)) {
// SABs need a relaxed memmove to preserve atomicity. // SABs need a relaxed memmove to preserve atomicity.
......
// Copyright 2022 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-rab-gsab
const rab1 = new ArrayBuffer(2000, {'maxByteLength': 4000});
class MyInt8Array extends Int8Array {
constructor() {
super(rab1);
}
};
const rab2 = new ArrayBuffer(1000, {'maxByteLength': 4000});
const ta = new Int8Array(rab2);
ta.constructor = MyInt8Array;
ta.slice();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment