Allow [[ReferencedName]] in Reference Records to be a not-yet-resolved property key
Categories
(Core :: JavaScript Engine, task, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox132 | --- | fixed |
People
(Reporter: anba, Assigned: anba)
References
(Blocks 1 open bug)
Details
Attachments
(9 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 |
Implement the changes from https://github.com/tc39/ecma262/pull/3307.
Assignee | ||
Comment 2•1 year ago
|
||
The spec PR reordered when ToPropertyKey
is evaluated. For the delete super
case the ToPropertKey
evaluation doesn't happen anymore at all. See [1], step 4.
[1] https://tc39.es/ecma262/#sec-delete-operator-runtime-semantics-evaluation
Assignee | ||
Comment 3•1 year ago
|
||
emitObjAndKey
is only called from emitElemObjAndKey
. Let's merge both methods.
Assignee | ||
Comment 4•1 year ago
|
||
Reduce code duplicate in emitElemObjAndKey
. Also aligns with similar code
elsewhere in BytecodeEmitter
, search for callers to emitGetThisForSuperBase
.
Assignee | ||
Comment 5•1 year ago
|
||
emitElemObjAndKey
performs the exact same sequence of steps, so there's no
reason not to call it here.
Assignee | ||
Comment 6•1 year ago
|
||
prepareForObj
only updates PropOpEmitter::state_
, so there's no good reason
to omit calling it for the super
case.
Assignee | ||
Comment 7•1 year ago
|
||
The spec PR reordered the ToPropertyKey
call to happen in GetValue
resp.
PutValue
, which means it has to happen after GetSuperBase
.
Tests are included in https://github.com/tc39/test262/pull/4216.
Assignee | ||
Comment 8•1 year ago
|
||
Assignee | ||
Comment 9•1 year ago
|
||
Computed property names are evaluated first in destructuring contexts.
Assignee | ||
Comment 10•1 year ago
|
||
BytecodeEmitter::emitDestructuringLHSRef
needs to call NameOpEmitter::prepareForRhs
to emit the necessary steps to resolve environment bindings. To avoid adding a new
skipPrepareForRhs
method to NameOpEmitter
, instead pass DestructuringLHSRef&
to emitDestructuringLHSRef
, where DestructuringLHSRef
holds the emitter for the
destructuring left-hand side reference.
There's always only exactly one emitter instantiated, so using mozilla::MaybeOneOf
seems preferable, except that mozilla::MaybeOneOf
only allows two possible states.
Add the new class MaybeOneOfMany
to use composition to allow having more than two
states.
Tests are in https://github.com/tc39/test262/pull/4216.
Updated•1 year ago
|
Comment 11•1 year ago
|
||
Comment 12•1 year ago
|
||
Backed out 9 changesets (Bug 1916260) for causing bustage in ElemOpEmitter.h CLOSED TREE
Log: https://treeherder.mozilla.org/logviewer?job_id=472899530&repo=autoland&lineNumber=15053
Backout: https://hg.mozilla.org/integration/autoland/rev/890755664a3edd21d67b0999a534730f0121c933
Assignee | ||
Comment 13•1 year ago
|
||
Thanks, looks like it's just missing an #include
. I'll take a look.
Comment 14•1 year ago
|
||
Comment 15•1 year ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/d20c97df0b86
https://hg.mozilla.org/mozilla-central/rev/6c64397920b4
https://hg.mozilla.org/mozilla-central/rev/73ef1798d76b
https://hg.mozilla.org/mozilla-central/rev/d98e8d9afe8e
https://hg.mozilla.org/mozilla-central/rev/edc63c19288f
https://hg.mozilla.org/mozilla-central/rev/e7e456e896ff
https://hg.mozilla.org/mozilla-central/rev/99ff134cb9e0
https://hg.mozilla.org/mozilla-central/rev/50af3f905683
https://hg.mozilla.org/mozilla-central/rev/4c26da6ff326
Description
•