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•5 years ago
|
| Assignee | ||
Comment 1•5 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
TaggedAtomIndexthat represents allParserAtomkind in 32-bit - Encode/decode "atoms used by stencil" at the beginning, instead of switching between buffer while encoding fields
- Use
TaggedAtomIndexin stencil fields
| Assignee | ||
Comment 2•5 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•5 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•5 years ago
|
||
Depends on D96241
| Assignee | ||
Comment 5•5 years ago
|
||
Depends on D96242
| Assignee | ||
Comment 6•5 years ago
|
||
Depends on D96243
| Assignee | ||
Comment 7•5 years ago
|
||
To use index in nullable atom field, add null tag.
Depends on D96244
| Assignee | ||
Comment 8•5 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•5 years ago
|
||
Depends on D96246
| Assignee | ||
Comment 10•5 years ago
|
||
Depends on D96247
| Assignee | ||
Comment 11•5 years ago
|
||
Depends on D96248
| Assignee | ||
Comment 12•5 years ago
|
||
Depends on D96249
| Assignee | ||
Comment 13•5 years ago
|
||
Depends on D96250
Updated•5 years ago
|
| Assignee | ||
Comment 14•5 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•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
| Assignee | ||
Comment 15•5 years ago
|
||
| Assignee | ||
Comment 16•5 years ago
|
||
Depends on D96908
| Assignee | ||
Comment 17•5 years ago
|
||
Depends on D96909
| Assignee | ||
Comment 18•5 years ago
|
||
Depends on D96910
| Assignee | ||
Comment 19•5 years ago
|
||
Depends on D96911
| Assignee | ||
Comment 20•5 years ago
|
||
Depends on D96912
| Assignee | ||
Comment 21•5 years ago
|
||
Depends on D96913
| Assignee | ||
Comment 22•5 years ago
|
||
Depends on D96914
| Assignee | ||
Comment 23•5 years ago
|
||
Depends on D96915
| Assignee | ||
Comment 24•5 years ago
|
||
Depends on D96916
| Assignee | ||
Comment 25•5 years ago
|
||
Depends on D96917
| Assignee | ||
Comment 26•5 years ago
|
||
Depends on D96918
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Comment 27•5 years ago
|
||
Comment 28•5 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
•