diff options
author | Moonchild <mcwerewolf@gmail.com> | 2018-08-13 18:58:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-13 18:58:12 +0200 |
commit | 98be5e94609a80edf35414ce1ac435bfa08de6c3 (patch) | |
tree | e9fac57664c4df42e737ed1fd5d23237c9d82ced /js/src/vm/NativeObject.h | |
parent | ba2882cf71d06e121b7a023f954388768a5964dd (diff) | |
parent | 9ac48ef8319087fcb68d9021db0af9d5cb1080af (diff) | |
download | UXP-98be5e94609a80edf35414ce1ac435bfa08de6c3.tar UXP-98be5e94609a80edf35414ce1ac435bfa08de6c3.tar.gz UXP-98be5e94609a80edf35414ce1ac435bfa08de6c3.tar.lz UXP-98be5e94609a80edf35414ce1ac435bfa08de6c3.tar.xz UXP-98be5e94609a80edf35414ce1ac435bfa08de6c3.zip |
Merge pull request #707 from trav90/class-memaccess-errors
Simplify HeapSlot to make it trivially copyable
Diffstat (limited to 'js/src/vm/NativeObject.h')
-rw-r--r-- | js/src/vm/NativeObject.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/js/src/vm/NativeObject.h b/js/src/vm/NativeObject.h index d2c06eabc..4dbc167ab 100644 --- a/js/src/vm/NativeObject.h +++ b/js/src/vm/NativeObject.h @@ -876,7 +876,7 @@ class NativeObject : public ShapedObject MOZ_ASSERT(end <= getDenseInitializedLength()); MOZ_ASSERT(!denseElementsAreCopyOnWrite()); for (size_t i = start; i < end; i++) - elements_[i].HeapSlot::~HeapSlot(); + elements_[i].destroy(); } /* @@ -885,7 +885,7 @@ class NativeObject : public ShapedObject */ void prepareSlotRangeForOverwrite(size_t start, size_t end) { for (size_t i = start; i < end; i++) - getSlotAddressUnchecked(i)->HeapSlot::~HeapSlot(); + getSlotAddressUnchecked(i)->destroy(); } public: @@ -1085,7 +1085,8 @@ class NativeObject : public ShapedObject for (uint32_t i = 0; i < count; ++i) elements_[dstStart + i].set(this, HeapSlot::Element, dstStart + i, src[i]); } else { - memcpy(&elements_[dstStart], src, count * sizeof(HeapSlot)); + memcpy(reinterpret_cast<Value*>(&elements_[dstStart]), src, + count * sizeof(Value)); elementsRangeWriteBarrierPost(dstStart, count); } } @@ -1094,7 +1095,7 @@ class NativeObject : public ShapedObject MOZ_ASSERT(dstStart + count <= getDenseCapacity()); MOZ_ASSERT(!denseElementsAreCopyOnWrite()); MOZ_ASSERT(!denseElementsAreFrozen()); - memcpy(&elements_[dstStart], src, count * sizeof(HeapSlot)); + memcpy(reinterpret_cast<Value*>(&elements_[dstStart]), src, count * sizeof(Value)); elementsRangeWriteBarrierPost(dstStart, count); } @@ -1142,7 +1143,7 @@ class NativeObject : public ShapedObject MOZ_ASSERT(!denseElementsAreCopyOnWrite()); MOZ_ASSERT(!denseElementsAreFrozen()); - memmove(elements_ + dstStart, elements_ + srcStart, count * sizeof(Value)); + memmove(elements_ + dstStart, elements_ + srcStart, count * sizeof(HeapSlot)); elementsRangeWriteBarrierPost(dstStart, count); } |