author | Jeff Walden <jwalden@mit.edu> |
Wed, 20 Feb 2019 13:33:17 -0800 | |
changeset 461625 | 694fe0c4379319644cd9f64781fcb71a75558ed5 |
parent 461624 | 650bd5a18809655323834c7b56d84ad6c512d752 |
child 461626 | 973c3800d5d6c10e06ce653add01316f9b0ee25e |
push id | 35626 |
push user | csabou@mozilla.com |
push date | Thu, 28 Feb 2019 11:31:08 +0000 |
treeherder | mozilla-central@2ea0c1db7e60 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | sfink |
bugs | 1529298 |
milestone | 67.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
js/src/vm/ArrayBufferObject.cpp | file | annotate | diff | comparison | revisions | |
js/src/vm/ArrayBufferObject.h | file | annotate | diff | comparison | revisions |
--- a/js/src/vm/ArrayBufferObject.cpp +++ b/js/src/vm/ArrayBufferObject.cpp @@ -1032,17 +1032,16 @@ void ArrayBufferObject::releaseData(Free case BAD1: MOZ_CRASH("invalid BufferKind encountered"); break; } } void ArrayBufferObject::setDataPointer(BufferContents contents) { setFixedSlot(DATA_SLOT, PrivateValue(contents.data())); - setOwnsData(OwnsData); setFlags((flags() & ~KIND_MASK) | contents.kind()); if (isExternal()) { auto info = freeInfo(); info->freeFunc = contents.freeFunc(); info->freeUserData = contents.freeUserData(); } }
--- a/js/src/vm/ArrayBufferObject.h +++ b/js/src/vm/ArrayBufferObject.h @@ -212,36 +212,25 @@ class ArrayBufferObject : public ArrayBu protected: enum ArrayBufferFlags { // The flags also store the BufferKind BUFFER_KIND_MASK = BufferKind::KIND_MASK, DETACHED = 0b1000, - // The dataPointer() is owned by this buffer and should be released - // when no longer in use. Releasing the pointer may be done by freeing, - // invoking a free callback function, or unmapping, as determined by the - // buffer's other flags. - // - // Array buffers which do not own their data include buffers that - // allocate their data inline, and buffers that are created lazily for - // typed objects with inline storage, in which case the buffer points - // directly to the typed object's storage. - OWNS_DATA = 0b1'0000, - // Views of this buffer might include typed objects. - TYPED_OBJECT_VIEWS = 0b10'0000, + TYPED_OBJECT_VIEWS = 0b1'0000, // This MALLOCED, MAPPED, or EXTERNAL buffer has been prepared for asm.js // and cannot henceforth be transferred/detached. (WASM, USER_OWNED, and // INLINE_DATA buffers can't be prepared for asm.js -- although if an // INLINE_DATA buffer is used with asm.js, it's silently rewritten into a // MALLOCED buffer which *can* be prepared.) - FOR_ASMJS = 0b100'0000, + FOR_ASMJS = 0b10'0000, }; static_assert(JS_ARRAYBUFFER_DETACHED_FLAG == DETACHED, "self-hosted code with burned-in constants must use the " "correct DETACHED bit value"); public: class BufferContents { @@ -448,20 +437,16 @@ class ArrayBufferObject : public ArrayBu protected: void setDataPointer(BufferContents contents); void setByteLength(uint32_t length); uint32_t flags() const; void setFlags(uint32_t flags); - void setOwnsData(OwnsState owns) { - setFlags(owns ? (flags() | OWNS_DATA) : (flags() & ~OWNS_DATA)); - } - bool hasTypedObjectViews() const { return flags() & TYPED_OBJECT_VIEWS; } void setIsDetached() { setFlags(flags() | DETACHED); } void setIsPreparedForAsmJS() { MOZ_ASSERT(!isWasm()); MOZ_ASSERT(!hasUserOwnedData()); MOZ_ASSERT(!isInlineData()); MOZ_ASSERT(isMalloced() || isMapped() || isExternal());