Use ParserAtom index in stencil
Categories
(Core :: JavaScript Engine, task, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox84 | --- | fixed |
People
(Reporter: arai, Assigned: arai)
References
Details
Attachments
(12 files, 13 obsolete files)
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review |
Currently ParserAtoms are referred by pointer inside stencil structure.
If we can replace it with ParserAtom index inside vector (added by bug 1674351),
The struct size and variant size gets reduced, and also we can directly encode the index into XDR buffer.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 1•4 years ago
|
||
TODO:
- Use separate storage for "all frontend atoms" and "atoms used by stencil"
- Add 28-bit limitation to the number of parser atom
- Add
TaggedAtomIndex
that represents allParserAtom
kind in 32-bit - Encode/decode "atoms used by stencil" at the beginning, instead of switching between buffer while encoding fields
- Use
TaggedAtomIndex
in stencil fields
Assignee | ||
Comment 2•4 years ago
|
||
Now ParserAtomsTable in CompilationState uses different storage than
CompilationStencil.parserAtomData, and when storing a parser atom into
any of stencil field, the atom is copied to CompilationStencil.parserAtomData.
As a result, all atoms inside CompilationStencil.parserAtomData are used by
stencil and allocation/instantiation gets simpler.
This replaces markUsedByStencil with storeIntoStencil, and slightly moves the
callsite, to get access to CompilationInfo.
Later patch will modify storeIntoStencil to return an index, and all
ParserAtom* field will be replaced by the index.
Assignee | ||
Comment 3•4 years ago
|
||
Also add 28-bit limitation to the number of parser atoms.
Later patch will add null tag, and also move well-known/static1/static2 into
sub tag.
Depends on D96240
Assignee | ||
Comment 4•4 years ago
|
||
Depends on D96241
Assignee | ||
Comment 5•4 years ago
|
||
Depends on D96242
Assignee | ||
Comment 6•4 years ago
|
||
Depends on D96243
Assignee | ||
Comment 7•4 years ago
|
||
To use index in nullable atom field, add null tag.
Depends on D96244
Assignee | ||
Comment 8•4 years ago
|
||
Added infrastructure for handling TaggedAtomIndex in stencil instantiation and
encode/decode, and replaced ScriptStencil.functionAtom with TaggedAtomIndex
as an example consumer.
Depends on D96245
Assignee | ||
Comment 9•4 years ago
|
||
Depends on D96246
Assignee | ||
Comment 10•4 years ago
|
||
Depends on D96247
Assignee | ||
Comment 11•4 years ago
|
||
Depends on D96248
Assignee | ||
Comment 12•4 years ago
|
||
Depends on D96249
Assignee | ||
Comment 13•4 years ago
|
||
Depends on D96250
Updated•4 years ago
|
Assignee | ||
Comment 14•4 years ago
|
||
Now ParserAtomsTable doesn't build CompilationStencil.parserAtomData.
CompilationStencil.parserAtomData is built when storing a parser atom into
any of stencil field.
As a result, all atoms inside CompilationStencil.parserAtomData are used by
stencil and allocation/instantiation gets simpler.
This replaces markUsedByStencil with storeIntoStencil, and slightly moves the
callsite, to get access to CompilationInfo.
Later patch will modify storeIntoStencil to return an index, and all
ParserAtom* field will be replaced by the index.
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Assignee | ||
Comment 15•4 years ago
|
||
Assignee | ||
Comment 16•4 years ago
|
||
Depends on D96908
Assignee | ||
Comment 17•4 years ago
|
||
Depends on D96909
Assignee | ||
Comment 18•4 years ago
|
||
Depends on D96910
Assignee | ||
Comment 19•4 years ago
|
||
Depends on D96911
Assignee | ||
Comment 20•4 years ago
|
||
Depends on D96912
Assignee | ||
Comment 21•4 years ago
|
||
Depends on D96913
Assignee | ||
Comment 22•4 years ago
|
||
Depends on D96914
Assignee | ||
Comment 23•4 years ago
|
||
Depends on D96915
Assignee | ||
Comment 24•4 years ago
|
||
Depends on D96916
Assignee | ||
Comment 25•4 years ago
|
||
Depends on D96917
Assignee | ||
Comment 26•4 years ago
|
||
Depends on D96918
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Comment 27•4 years ago
|
||
Comment 28•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/0210295f9234
https://hg.mozilla.org/mozilla-central/rev/5e683e6376b9
https://hg.mozilla.org/mozilla-central/rev/b2dc7bdd01dc
https://hg.mozilla.org/mozilla-central/rev/f8de842b23db
https://hg.mozilla.org/mozilla-central/rev/5d6e0d22083f
https://hg.mozilla.org/mozilla-central/rev/50e9d084764c
https://hg.mozilla.org/mozilla-central/rev/3749d6d2325d
https://hg.mozilla.org/mozilla-central/rev/f505b8fb8f8b
https://hg.mozilla.org/mozilla-central/rev/73cc5fa0e0bd
https://hg.mozilla.org/mozilla-central/rev/cb0e58368cd4
https://hg.mozilla.org/mozilla-central/rev/8af30c6d9bb9
https://hg.mozilla.org/mozilla-central/rev/ca60758cd534
Description
•