Implement Resizable and growable ArrayBuffers
Categories
(Core :: JavaScript Engine, enhancement, P1)
Tracking
()
People
(Reporter: anba, Assigned: anba)
References
(Blocks 1 open bug, )
Details
(Keywords: dev-doc-complete)
Attachments
(36 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
Bug 1842773 - Part 10: Add {FixedLength,Resizable}DataViewObject classes. r=#spidermonkey-reviewers!
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
Bug 1842773 - Part 13: Remove TypedArrayObject::{length,byteLength}Value. r=#spidermonkey-reviewers!
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
The rendered proposal text has been pulled from https://tc39.es/proposal-resizablearraybuffer/. https://arai-a.github.io/ecma262-compare/?pr=3116 is currently the best option to see the changes.
Comment 1•1 year ago
|
||
Thanks for picking this up :)
Updated•1 year ago
|
Assignee | ||
Comment 2•1 year ago
|
||
There's intentionally only a single shell option which controls both options.
This makes testing easier and the test262 tests are also using a single
feature flag for resizable ArrayBuffers and growable SharedArrayBuffers.
Assignee | ||
Comment 3•1 year ago
|
||
Disallow resizable ArrayBuffers for:
- asm.js because it's not designed for resizable buffers.
- DOM bindings because
mozilla::dom::TypedArray
caches the TypedArrays's length. - Structured cloning because I haven't yet checked how structured cloning should
work when resizable ArrayBuffers are used.
Depends on D183317
Assignee | ||
Comment 4•1 year ago
|
||
Change ArrayBufferObject into an abstract base class for the two new
classes FixedLengthArrayBufferObject
and ResizableArrayBufferObject
.
We need different classes, because resizable ArrayBuffers have slightly different
semantics and also need another reserved slot. Adding another reserved slot to
ArrayBufferObject
changes the allocation kind from AllocKind::ARRAYBUFFER4
to AllocKind::ARRAYBUFFER8
, which seems unfortunate for the common case of
non-resizable ArrayBuffers.
Depends on D183318
Assignee | ||
Comment 5•1 year ago
|
||
Resizable ArrayBuffers need an additional reserved slot to store the maximum
byte length. Similar to ArrayBufferObject::BYTE_LENGTH_SLOT
, this slot is set
to zero when the buffer is detached.
Depends on D183319
Assignee | ||
Comment 6•1 year ago
|
||
Getters for maxByteLength
or resizable
simply read the corresponding slots.
Depends on D183320
Assignee | ||
Comment 7•1 year ago
|
||
In preparation for actually enabling the ArrayBuffer
constructor to create
resizable ArrayBuffers, we need additional functions to pass through the
correct JSClass
and adjust the memory reporting to use the correct number of
associated bytes.
Depends on D183321
Assignee | ||
Comment 8•1 year ago
|
||
Update the ArrayBuffer constructor function to create resizable ArrayBuffers.
DataViews and TypedArrays don't yet support resizable ArrayBuffers, so they
throw when a resizable ArrayBuffer is used as the input.
Depends on D183322
Assignee | ||
Comment 9•1 year ago
|
||
Resizing simply adjusts the byte-length slot and sets the memory to
zero if the array is shrunk.
Depends on D183323
Assignee | ||
Comment 10•1 year ago
|
||
Depends on D183324
Assignee | ||
Comment 11•1 year ago
|
||
Similar to part 3, add separate classes for fixed-length and resizable
DataView objects.
Depends on D183325
Assignee | ||
Comment 12•1 year ago
|
||
DataViews which are baked by a resizable ArrayBuffer can get out-of-bounds when
the ArrayBuffer is shrunk. It can later get again in-bounds when the ArrayBuffer
is grown. That means it's no longer possible to directly read the byte-length
and byte-offset from the reserved slots. Instead all accesses need to validate
the ArrayBufferView is still in-bounds. mozilla::Maybe
is used to to represent
in-bound and out-of-bounds results.
Depends on D183326
Assignee | ||
Comment 13•1 year ago
|
||
Depends on D183327
Assignee | ||
Comment 14•1 year ago
|
||
Depends on D183328
Assignee | ||
Comment 15•1 year ago
|
||
Similar to part 3, add separate classes for fixed-length and resizable
TypedArray objects.
Depends on D183329
Assignee | ||
Comment 16•1 year ago
|
||
It's easy to add support for resizable typed arrays to branchIfClassIsNotTypedArray
,
because the classes are in contiguous memory.
MacroAssembler::typedArrayElementSize
is a bit more difficult, at least when
trying to avoid duplicating the detection for both fixed length and resizable
typed array classes.
Depends on D183330
Assignee | ||
Comment 17•1 year ago
|
||
Replace TypedArrayObject with FixedLengthTypedArrayObject for part 18, when
TypedArrayObject::length()
gets changed to handle out-of-bounds.
Depends on D183331
Assignee | ||
Comment 18•1 year ago
|
||
Disabled until support gets added in a later patch in this stack.
Depends on D183332
Assignee | ||
Comment 19•1 year ago
|
||
Update all accesses to handle possible out-of-bounds. In some cases the TypedArray
is guaranteed to be a FixedLengthTypedArrayObject
, which ensures the accesses are
always in-bounds.
Depends on D183333
Assignee | ||
Comment 20•1 year ago
|
||
Part 14 only disallowed attaching resizable typed arrays in CacheIR, but we
still need to guard the object is also a fixed-length typed array at runtime.
Depends on D183334
Assignee | ||
Comment 21•1 year ago
|
||
Update the step comments and reload the TypedArray length before filling the
TypedArray per the resizable ArrayBuffer proposal.
Depends on D183335
Assignee | ||
Comment 22•1 year ago
|
||
Throw a TypeError for out-of-bounds, but keep returning zero for detached buffers
to match the inlined JIT code.
Depends on D183336
Assignee | ||
Comment 23•1 year ago
|
||
Simply calls PossiblyWrappedTypedArrayLength
which throws an error for
out-of-bounds TypedArrays.
Depends on D183338
Assignee | ||
Comment 24•1 year ago
|
||
Part 21 changed the TypedArrayLength
to throw for out-of-bounds typed arrays,
but in a handful of cases we actually need to read the typed array length
without throwing an error for out-of-bounds.
Add a separate intrinsic for these cases and update the relevant self-hosted
functions to call TypedArrayLengthZeroOnOutOfBounds
.
Depends on D183339
Assignee | ||
Comment 25•1 year ago
|
||
Depends on D183340
Assignee | ||
Comment 26•1 year ago
|
||
Depends on D183341
Assignee | ||
Comment 27•1 year ago
|
||
The ArrayBuffer.prototype.slice
update for resizable array buffers was
still missing.
Depends on D183342
Assignee | ||
Comment 28•1 year ago
|
||
Depends on D183343
Assignee | ||
Comment 29•1 year ago
|
||
Part 17 disabled Atomics for resizable buffers. Remove this restriction again.
Inlining Atomics functions for resizable buffers isn't affected by this change.
Depends on D183344
Assignee | ||
Comment 30•1 year ago
|
||
Depends on D183345
Assignee | ||
Comment 31•1 year ago
|
||
Depends on D183346
Assignee | ||
Comment 32•1 year ago
|
||
Depends on D183347
Assignee | ||
Comment 33•1 year ago
|
||
Depends on D183348
Assignee | ||
Comment 34•1 year ago
|
||
Depends on D183349
Assignee | ||
Comment 35•1 year ago
|
||
Depends on D183350
Assignee | ||
Comment 36•1 year ago
|
||
Depends on D183351
Assignee | ||
Comment 37•1 year ago
|
||
This is an initial implementation of the resizable ArrayBuffers proposal. The rendered spec is no longer available at https://tc39.es/proposal-resizablearraybuffer/, instead https://arai-a.github.io/ecma262-compare/?pr=3116 is probably right now the best option to view the changes. This is still missing SpiderMonkey-specific tests, but before starting to write tests I want to make sure the proposed implementation is actually acceptable.
Comment 38•1 year ago
|
||
(In reply to André Bargull [:anba] from comment #37)
This is an initial implementation of the resizable ArrayBuffers proposal. The rendered spec is no longer available at https://tc39.es/proposal-resizablearraybuffer/, instead https://arai-a.github.io/ecma262-compare/?pr=3116 is probably right now the best option to view the changes. This is still missing SpiderMonkey-specific tests, but before starting to write tests I want to make sure the proposed implementation is actually acceptable.
I left a bunch of comments on various phabricator revisions, which you probably won't see because it says it won't send out notifications for them since none of them are marked for review yet. I'm not actually sure how to see my comments without looking at each one in turn.
But to summarize, I think the approach is good. Most of my comments were in https://phabricator.services.mozilla.com/D183330. I'd like to hash out the C++ type hierarchy, because it's a mess before your patches and your patches multiply the stuff that's there.
Also, although I'm ok with allocating the max byte length up front, I'm worried about writing to the unused portion (for zeroing). It's pretty easy to imagine someone creating a whole bunch of max-1GB ABs with small initial sizes and then never resizing them, which would generate a lot of pressure (on the TLB, on paging space, etc.) It's certainly safer, but I'm worried that it won't fly. (It would also be nice to rely on demand-zeroed pages from the OS, but that's an optimization of much lesser concern.)
Comment 39•1 year ago
|
||
Sorry for the delay. These patches look good overall and the approach makes sense to me.
What's the situation for code outside of SpiderMonkey? Do we need to audit that or add support for resizable buffers?
Assignee | ||
Comment 40•1 year ago
|
||
(In reply to Steve Fink [:sfink] [:s:] from comment #38)
I left a bunch of comments on various phabricator revisions, which you probably won't see because it says it won't send out notifications for them since none of them are marked for review yet. I'm not actually sure how to see my comments without looking at each one in turn.
Thanks! I'll go through the individual commits.
But to summarize, I think the approach is good. Most of my comments were in https://phabricator.services.mozilla.com/D183330. I'd like to hash out the C++ type hierarchy, because it's a mess before your patches and your patches multiply the stuff that's there.
I'll respond there.
Also, although I'm ok with allocating the max byte length up front, I'm worried about writing to the unused portion (for zeroing). It's pretty easy to imagine someone creating a whole bunch of max-1GB ABs with small initial sizes and then never resizing them, which would generate a lot of pressure (on the TLB, on paging space, etc.) It's certainly safer, but I'm worried that it won't fly. (It would also be nice to rely on demand-zeroed pages from the OS, but that's an optimization of much lesser concern.)
We use calloc
when creating zeroed buffers, which should be fast when using system allocators (likely implemented using mmap(MAP_ANONYMOUS)
), but I don't know if jemalloc's calloc
uses the same kind of optimisations which are present in system allocators. If jemalloc's calloc
touches every byte on the initial allocation, that's bad for the reasons outlined by you.
Assignee | ||
Comment 41•1 year ago
|
||
(In reply to Jan de Mooij [:jandem] from comment #39)
What's the situation for code outside of SpiderMonkey? Do we need to audit that or add support for resizable buffers?
The current patches are zeroing length
(and byteOffset
) output-parameters when an ArrayBufferView is out-of-bounds, so existing callers see them as zero-size views, which should be safe. If user-code can be executed to possibly resize the buffer between reading and using the length
, existing code should (hopefully) already handle this case, because it's similar to detaching a buffer. mozilla::dom::TypedArray
will require changes, so https://phabricator.services.mozilla.com/D183318 for now rejects creating mozilla::dom::TypedArray
from resizable TypedArrays. That also means most DOM code won't currently work when resizable TypedArrays are used.
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Updated•1 year ago
|
Assignee | ||
Comment 42•9 months ago
|
||
Rename MaxByteLength
to avoid confusion with the new maxByteLength
slot for
resizable ArrayBuffers.
- Prefer "Limit" instead of "Max" because the latter could be misinterpreted to
refer tomaxByteLength
, because it also includes the substring "max".
Depends on D183352
Comment 43•8 months ago
|
||
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/259a53f087b3 Part 1: Add prefs for resizable ArrayBuffers and growable SharedArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/910d057e7894 Part 2: Add "resizable" flag to ArrayBuffer objects. r=sfink https://hg.mozilla.org/integration/autoland/rev/d1ba02bfff65 Part 3: Add {FixedLength,Resizable}ArrayBufferObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/f53d8aac630b Part 4: Add ResizableArrayBufferObject::MAX_BYTE_LENGTH_SLOT. r=sfink https://hg.mozilla.org/integration/autoland/rev/76d3a7b19c69 Part 5: Add ArrayBuffer.prototype.{maxByteLength,resizable} getters. r=sfink https://hg.mozilla.org/integration/autoland/rev/61bd37ceaeec Part 6: Add support to create resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/ec1db830ea0e Part 7: Support constructing resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/10ad70a8eb17 Part 8: Implement ArrayBuffer.prototype.resize method. r=sfink https://hg.mozilla.org/integration/autoland/rev/e1e40930a9d0 Part 9: Add support to preserve resizability to ArrayBuffer.prototype.transfer. r=sfink https://hg.mozilla.org/integration/autoland/rev/8eff2fbd1d41 Part 10: Add {FixedLength,Resizable}DataViewObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/2e2b09aab76e Part 11: Make DataView byteOffset and byteLength accessors aware of resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/597391bdb71e Part 12: Allow constructing DataViews with resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/01d6506a4b74 Part 13: Remove TypedArrayObject::{length,byteLength}Value. r=sfink https://hg.mozilla.org/integration/autoland/rev/097a5ac6f7df Part 14: Add {FixedLength,Resizable}TypedArrayObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/95b779c3dd31 Part 15: Support resizable TypedArrays in MacroAssembler. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/30d994cfcb21 Part 16: Replace TypedArrayObject with FixedLengthTypedArrayObject in the JITs. r=sfink https://hg.mozilla.org/integration/autoland/rev/83f6b87a1a6e Part 17: Disable Atomics for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/03ce4a7b78f7 Part 18: Update TypedArray length, byteLength, and byteOffset accesses. r=sfink https://hg.mozilla.org/integration/autoland/rev/8b781b7f528b Part 19: Add guard instruction for fixed-length typed arrays. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/84325eb9a12b Part 20: Update TypedArrayFill for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/60265e4333e9 Part 21: Throw for out-of-bounds in (PossiblyWrapped)TypedArrayLength intrinsics. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/682ea1a58d7c Part 22: Validate length is in-bounds for TypedArray iterator methods. r=sfink https://hg.mozilla.org/integration/autoland/rev/4dd54c5f0b0f Part 23: Add TypedArrayLengthZeroOnOutOfBounds. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/27ba394b4d2d Part 24: Implement TypedArray.prototype.subarray changes. r=sfink https://hg.mozilla.org/integration/autoland/rev/41a6cfa90ff9 Part 25: Implement TypedArray.prototype.toLocaleString changes. r=sfink https://hg.mozilla.org/integration/autoland/rev/dcbf308d25cc Part 26: Update ArrayBuffer.prototype.slice for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/e21d2dc786e3 Part 27: Allow constructing TypedArrays with resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/925f7343af88 Part 28: Enable Atomics with resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/74c83be90b33 Part 29: Add {FixedLength,Growable}SharedArrayBufferObject classes. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/c96b97a452c7 Part 30: Add support to create growable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/73b58fe927ed Part 31: Implement SharedArrayBuffer.prototype.{grow,growable,maxByteLength}. r=sfink https://hg.mozilla.org/integration/autoland/rev/33c4fbb9f307 Part 32: Allow constructing growable SharedArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/9e5fe38814bd Part 33: Structured clone support for resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/48c52e5dd64a Part 34: Enable test262 tests. r=sfink https://hg.mozilla.org/integration/autoland/rev/ab17d9d1afcf Part 35: Reimport test262 tests. r=sfink https://hg.mozilla.org/integration/autoland/rev/fdf786dd351e Part 36: Rename ArrayBufferObject::MaxByteLength to ByteLengthLimit. r=sfink,nbp
Comment 44•8 months ago
|
||
Backed out for causing build bustages in SharedArrayObject.cpp
- Backout link
- Push with failures
- Failure Log
- Failure line: /builds/worker/checkouts/gecko/js/src/vm/SharedArrayObject.cpp(306,13): error: unused function 'IsGrowableSharedArrayBuffer' [-Werror,-Wunused-function]
Assignee | ||
Updated•8 months ago
|
Comment 45•8 months ago
|
||
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/2ad11ba7c24c Part 1: Add prefs for resizable ArrayBuffers and growable SharedArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/bd1f53b5c3c5 Part 2: Add "resizable" flag to ArrayBuffer objects. r=sfink https://hg.mozilla.org/integration/autoland/rev/84a60739eac9 Part 3: Add {FixedLength,Resizable}ArrayBufferObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/42dfeb71cb32 Part 4: Add ResizableArrayBufferObject::MAX_BYTE_LENGTH_SLOT. r=sfink https://hg.mozilla.org/integration/autoland/rev/0e6538506b65 Part 5: Add ArrayBuffer.prototype.{maxByteLength,resizable} getters. r=sfink https://hg.mozilla.org/integration/autoland/rev/9bcfe618bc8b Part 6: Add support to create resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/92b811e12f9c Part 7: Support constructing resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/0c4601136c2e Part 8: Implement ArrayBuffer.prototype.resize method. r=sfink https://hg.mozilla.org/integration/autoland/rev/595d4662855b Part 9: Add support to preserve resizability to ArrayBuffer.prototype.transfer. r=sfink https://hg.mozilla.org/integration/autoland/rev/5234962e19cd Part 10: Add {FixedLength,Resizable}DataViewObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/0d4f958c0e66 Part 11: Make DataView byteOffset and byteLength accessors aware of resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/1a6726cbdb1c Part 12: Allow constructing DataViews with resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/cb05cbd65dc9 Part 13: Remove TypedArrayObject::{length,byteLength}Value. r=sfink https://hg.mozilla.org/integration/autoland/rev/6dc6eaaa1078 Part 14: Add {FixedLength,Resizable}TypedArrayObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/77a6a051d189 Part 15: Support resizable TypedArrays in MacroAssembler. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/69852502b958 Part 16: Replace TypedArrayObject with FixedLengthTypedArrayObject in the JITs. r=sfink https://hg.mozilla.org/integration/autoland/rev/2420ab460c74 Part 17: Disable Atomics for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/dd3cd622dab6 Part 18: Update TypedArray length, byteLength, and byteOffset accesses. r=sfink https://hg.mozilla.org/integration/autoland/rev/03a8757ebf57 Part 19: Add guard instruction for fixed-length typed arrays. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/2632717efe1f Part 20: Update TypedArrayFill for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/e54c28ffc14b Part 21: Throw for out-of-bounds in (PossiblyWrapped)TypedArrayLength intrinsics. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/7e74d5234a82 Part 22: Validate length is in-bounds for TypedArray iterator methods. r=sfink https://hg.mozilla.org/integration/autoland/rev/624211f977b7 Part 23: Add TypedArrayLengthZeroOnOutOfBounds. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/9c3e501a0bde Part 24: Implement TypedArray.prototype.subarray changes. r=sfink https://hg.mozilla.org/integration/autoland/rev/5142ff1ab887 Part 25: Implement TypedArray.prototype.toLocaleString changes. r=sfink https://hg.mozilla.org/integration/autoland/rev/e298cf8789db Part 26: Update ArrayBuffer.prototype.slice for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/6577ce666f63 Part 27: Allow constructing TypedArrays with resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/49a441129268 Part 28: Enable Atomics with resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/349001e15a81 Part 29: Add {FixedLength,Growable}SharedArrayBufferObject classes. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/ae6bb114049f Part 30: Add support to create growable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/332a7d803b17 Part 31: Implement SharedArrayBuffer.prototype.{grow,growable,maxByteLength}. r=sfink https://hg.mozilla.org/integration/autoland/rev/a8e653e1449b Part 32: Allow constructing growable SharedArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/ddc756e472fa Part 33: Structured clone support for resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/a1223a2e4104 Part 34: Enable test262 tests. r=sfink https://hg.mozilla.org/integration/autoland/rev/9ee0820fd10c Part 35: Reimport test262 tests. r=sfink https://hg.mozilla.org/integration/autoland/rev/1c6b89720947 Part 36: Rename ArrayBufferObject::MaxByteLength to ByteLengthLimit. r=sfink,nbp
Comment 46•8 months ago
•
|
||
Backed out for causing mochitest-plain failures on test_bug238987.html.
So far, this only affected Android 7.0.
-
Failure log
There are also this TV jobs that failed: -
https://treeherder.mozilla.org/logviewer?job_id=444702577&repo=autoland&lineNumber=4363
-
https://treeherder.mozilla.org/logviewer?job_id=444700903&repo=autoland&lineNumber=5173
[task 2024-01-26T09:02:48.489Z] 09:02:48 INFO - TEST-PASS | dom/events/test/test_bug238987.html | |window| should not have got a blur event, target [object HTMLDocument]
[task 2024-01-26T09:02:48.489Z] 09:02:48 INFO - Buffered messages finished
[task 2024-01-26T09:02:48.489Z] 09:02:48 WARNING - TEST-UNEXPECTED-FAIL | dom/events/test/test_bug238987.html | |window| should not have got a blur event, target [object Window]
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:426:16
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - handleWindowBlur@dom/events/test/test_bug238987.html:90:7
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - EventListener.handleEvent*start@dom/events/test/test_bug238987.html:141:12
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - Async*doTest@dom/events/test/test_bug238987.html:159:19
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - callStackHandler@SimpleTest/SimpleTest.js:285:24
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - EventHandlerNonNull*this.addLoadEvent@SimpleTest/SimpleTest.js:314:7
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - @SimpleTest/SimpleTest.js:1809:15
[task 2024-01-26T09:02:48.490Z] 09:02:48 WARNING - TEST-UNEXPECTED-FAIL | dom/events/test/test_bug238987.html | |window| should not have got a blur event, target [object Window]
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:426:16
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - handleWindowBlur@dom/events/test/test_bug238987.html:90:7
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - EventListener.handleEvent*start@dom/events/test/test_bug238987.html:142:12
[task 2024-01-26T09:02:48.490Z] 09:02:48 INFO - Async*doTest@dom/events/test/test_bug238987.html:159:19
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - callStackHandler@SimpleTest/SimpleTest.js:285:24
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - EventHandlerNonNull*this.addLoadEvent@SimpleTest/SimpleTest.js:314:7
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - @SimpleTest/SimpleTest.js:1809:15
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - TEST-PASS | dom/events/test/test_bug238987.html | |window| should not have got a focus event, target [object HTMLDocument]
[task 2024-01-26T09:02:48.491Z] 09:02:48 WARNING - TEST-UNEXPECTED-FAIL | dom/events/test/test_bug238987.html | |window| should not have got a focus event, target [object Window]
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:426:16
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - handleWindowFocus@dom/events/test/test_bug238987.html:63:7
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - EventListener.handleEvent*start@dom/events/test/test_bug238987.html:139:12
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - Async*doTest@dom/events/test/test_bug238987.html:159:19
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - callStackHandler@SimpleTest/SimpleTest.js:285:24
[task 2024-01-26T09:02:48.491Z] 09:02:48 INFO - EventHandlerNonNull*this.addLoadEvent@SimpleTest/SimpleTest.js:314:7
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - @SimpleTest/SimpleTest.js:1809:15
[task 2024-01-26T09:02:48.492Z] 09:02:48 WARNING - TEST-UNEXPECTED-FAIL | dom/events/test/test_bug238987.html | |window| should not have got a focus event, target [object Window]
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:426:16
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - handleWindowFocus@dom/events/test/test_bug238987.html:63:7
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - EventListener.handleEvent*start@dom/events/test/test_bug238987.html:140:12
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - Async*doTest@dom/events/test/test_bug238987.html:159:19
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - callStackHandler@SimpleTest/SimpleTest.js:285:24
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - EventHandlerNonNull*this.addLoadEvent@SimpleTest/SimpleTest.js:314:7
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - @SimpleTest/SimpleTest.js:1809:15
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - TEST-PASS | dom/events/test/test_bug238987.html | |window| should not have got a focus event, target [object HTMLInputElement], id="i2"
[task 2024-01-26T09:02:48.492Z] 09:02:48 INFO - TEST-PASS | dom/events/test/test_bug238987.html | Wrong activeElement!
[task 2024-01-26T09:02:48.493Z] 09:02:48 WARNING - TEST-UNEXPECTED-FAIL | dom/events/test/test_bug238987.html | (focus) Forward tabbing, expected [i3], got [i2]
[task 2024-01-26T09:02:48.493Z] 09:02:48 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:426:16
<...>
Assignee | ||
Comment 47•8 months ago
|
||
(In reply to Iulian Moraru from comment #46)
Backed out for causing mochitest-plain failures on test_bug238987.html.
So far, this only affected Android 7.0.
These failures seem unrelated to this bug. Intermittent failures for "test_bug238987.html" were previously tracked in bug 1776983, so maybe there's a pre-existing issue with that test.
- Failure log
There are also this TV jobs that failed:
Thanks, this is indeed an issue with a test added in part 2. The test must only be run in debug-mode, because it uses debug-only features.
Comment 48•8 months ago
|
||
Pushed by andre.bargull@gmail.com: https://hg.mozilla.org/integration/autoland/rev/53fad2b43a0b Part 1: Add prefs for resizable ArrayBuffers and growable SharedArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/49226ab4093e Part 2: Add "resizable" flag to ArrayBuffer objects. r=sfink https://hg.mozilla.org/integration/autoland/rev/fe2a4caa1dd7 Part 3: Add {FixedLength,Resizable}ArrayBufferObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/567f67b8e187 Part 4: Add ResizableArrayBufferObject::MAX_BYTE_LENGTH_SLOT. r=sfink https://hg.mozilla.org/integration/autoland/rev/2b7cc2586ca5 Part 5: Add ArrayBuffer.prototype.{maxByteLength,resizable} getters. r=sfink https://hg.mozilla.org/integration/autoland/rev/cf831e50329b Part 6: Add support to create resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/a4808ad0653d Part 7: Support constructing resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/72fe72f79def Part 8: Implement ArrayBuffer.prototype.resize method. r=sfink https://hg.mozilla.org/integration/autoland/rev/f4d118cc11eb Part 9: Add support to preserve resizability to ArrayBuffer.prototype.transfer. r=sfink https://hg.mozilla.org/integration/autoland/rev/7fd46f4f4dc4 Part 10: Add {FixedLength,Resizable}DataViewObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/5568c4f7e127 Part 11: Make DataView byteOffset and byteLength accessors aware of resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/2835f49b2bdc Part 12: Allow constructing DataViews with resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/c04808acc476 Part 13: Remove TypedArrayObject::{length,byteLength}Value. r=sfink https://hg.mozilla.org/integration/autoland/rev/b82a9a84917f Part 14: Add {FixedLength,Resizable}TypedArrayObject classes. r=sfink https://hg.mozilla.org/integration/autoland/rev/f8f412e48ae6 Part 15: Support resizable TypedArrays in MacroAssembler. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/40667536f69f Part 16: Replace TypedArrayObject with FixedLengthTypedArrayObject in the JITs. r=sfink https://hg.mozilla.org/integration/autoland/rev/9978604b6be7 Part 17: Disable Atomics for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/4118e5895c1c Part 18: Update TypedArray length, byteLength, and byteOffset accesses. r=sfink https://hg.mozilla.org/integration/autoland/rev/457e09f19fcf Part 19: Add guard instruction for fixed-length typed arrays. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/6ab8d493bddf Part 20: Update TypedArrayFill for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/b2f91ee492ee Part 21: Throw for out-of-bounds in (PossiblyWrapped)TypedArrayLength intrinsics. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/a3895c4f05b8 Part 22: Validate length is in-bounds for TypedArray iterator methods. r=sfink https://hg.mozilla.org/integration/autoland/rev/70abde51cfc3 Part 23: Add TypedArrayLengthZeroOnOutOfBounds. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/6406d024f7e9 Part 24: Implement TypedArray.prototype.subarray changes. r=sfink https://hg.mozilla.org/integration/autoland/rev/6df23bd678c0 Part 25: Implement TypedArray.prototype.toLocaleString changes. r=sfink https://hg.mozilla.org/integration/autoland/rev/ef37056db3f7 Part 26: Update ArrayBuffer.prototype.slice for resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/ac69b72d508b Part 27: Allow constructing TypedArrays with resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/616fce8c2915 Part 28: Enable Atomics with resizable buffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/ec958e11736a Part 29: Add {FixedLength,Growable}SharedArrayBufferObject classes. r=sfink,jandem https://hg.mozilla.org/integration/autoland/rev/bf7c93fe5eb7 Part 30: Add support to create growable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/28f978fb00cb Part 31: Implement SharedArrayBuffer.prototype.{grow,growable,maxByteLength}. r=sfink https://hg.mozilla.org/integration/autoland/rev/bcb108625dff Part 32: Allow constructing growable SharedArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/d01cb7f0d759 Part 33: Structured clone support for resizable ArrayBuffers. r=sfink https://hg.mozilla.org/integration/autoland/rev/2bf38170c0e6 Part 34: Enable test262 tests. r=sfink https://hg.mozilla.org/integration/autoland/rev/9049b720c9f9 Part 35: Reimport test262 tests. r=sfink https://hg.mozilla.org/integration/autoland/rev/fce9e7386189 Part 36: Rename ArrayBufferObject::MaxByteLength to ByteLengthLimit. r=sfink,nbp
Comment 49•8 months ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/53fad2b43a0b
https://hg.mozilla.org/mozilla-central/rev/49226ab4093e
https://hg.mozilla.org/mozilla-central/rev/fe2a4caa1dd7
https://hg.mozilla.org/mozilla-central/rev/567f67b8e187
https://hg.mozilla.org/mozilla-central/rev/2b7cc2586ca5
https://hg.mozilla.org/mozilla-central/rev/cf831e50329b
https://hg.mozilla.org/mozilla-central/rev/a4808ad0653d
https://hg.mozilla.org/mozilla-central/rev/72fe72f79def
https://hg.mozilla.org/mozilla-central/rev/f4d118cc11eb
https://hg.mozilla.org/mozilla-central/rev/7fd46f4f4dc4
https://hg.mozilla.org/mozilla-central/rev/5568c4f7e127
https://hg.mozilla.org/mozilla-central/rev/2835f49b2bdc
https://hg.mozilla.org/mozilla-central/rev/c04808acc476
https://hg.mozilla.org/mozilla-central/rev/b82a9a84917f
https://hg.mozilla.org/mozilla-central/rev/f8f412e48ae6
https://hg.mozilla.org/mozilla-central/rev/40667536f69f
https://hg.mozilla.org/mozilla-central/rev/9978604b6be7
https://hg.mozilla.org/mozilla-central/rev/4118e5895c1c
https://hg.mozilla.org/mozilla-central/rev/457e09f19fcf
https://hg.mozilla.org/mozilla-central/rev/6ab8d493bddf
https://hg.mozilla.org/mozilla-central/rev/b2f91ee492ee
https://hg.mozilla.org/mozilla-central/rev/a3895c4f05b8
https://hg.mozilla.org/mozilla-central/rev/70abde51cfc3
https://hg.mozilla.org/mozilla-central/rev/6406d024f7e9
https://hg.mozilla.org/mozilla-central/rev/6df23bd678c0
https://hg.mozilla.org/mozilla-central/rev/ef37056db3f7
https://hg.mozilla.org/mozilla-central/rev/ac69b72d508b
https://hg.mozilla.org/mozilla-central/rev/616fce8c2915
https://hg.mozilla.org/mozilla-central/rev/ec958e11736a
https://hg.mozilla.org/mozilla-central/rev/bf7c93fe5eb7
https://hg.mozilla.org/mozilla-central/rev/28f978fb00cb
https://hg.mozilla.org/mozilla-central/rev/bcb108625dff
https://hg.mozilla.org/mozilla-central/rev/d01cb7f0d759
https://hg.mozilla.org/mozilla-central/rev/2bf38170c0e6
https://hg.mozilla.org/mozilla-central/rev/9049b720c9f9
https://hg.mozilla.org/mozilla-central/rev/fce9e7386189
Updated•7 months ago
|
Comment 50•7 months ago
|
||
FF124 MDN docs work for this can be tracked in https://github.com/mdn/content/issues/32337
This is mostly just a compatibility data and MDN release note update.
Description
•