Fix Object.assign shape-reuse fast path for HasEnumerable flag
Categories
(Core :: JavaScript Engine, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr91 | --- | unaffected |
firefox96 | --- | wontfix |
firefox97 | --- | wontfix |
firefox98 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
(Regression)
Details
(Keywords: regression)
Attachments
(3 files)
In bug 1733075 we added the HasEnumerable
object flag. This broke the fast path we have for assign
where we can reuse the source object's shape.
Assignee | ||
Comment 1•3 years ago
|
||
We were checking the old and new shapes have the same object flags, but this was
(almost) never the case after we added the HasEnumerable flag in bug 1733075,
disabling the optimization in practice.
With this patch we hit the fast path again on Reddit.
Assignee | ||
Comment 2•3 years ago
|
||
In bug 1738020 we moved the shape teleporting code into NativeObject::addProperty,
which we call from TryAssignPlain, so this should just work now.
Exception is the shape-reuse fast path, but the previous patch ensures we no longer
use that if the object is a prototype object, so we can just add an assertion there.
Depends on D136145
Assignee | ||
Comment 3•3 years ago
|
||
Drive-by change to remove some code we no longer need after Stencil removed the
off-thread parse/XDR global.
Note that we still assert/check isUsedAsPrototype under getInitialOrPropMapShape.
Depends on D136146
Comment 5•3 years ago
|
||
Comment 6•3 years ago
|
||
Set release status flags based on info from the regressing bug 1733075
Assignee | ||
Updated•3 years ago
|
Comment 7•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/eb404993ccfc
https://hg.mozilla.org/mozilla-central/rev/f35d23d93326
https://hg.mozilla.org/mozilla-central/rev/5d4d9fb762bc
Updated•3 years ago
|
Updated•3 years ago
|
Description
•