Use InlineSet for CompilationDependencyTracker
Categories
(Core :: JavaScript Engine: JIT, task, P1)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox143 | --- | fixed |
People
(Reporter: jandem, Assigned: jandem)
References
Details
Attachments
(2 files)
We currently use a Vector and we assert we don't add more than 32 dependencies to it, but that will no longer be guaranteed when we have more dynamic fuses. We can change this code to use an InlineSet to still optimize for a very small number of fuses (still the common case).
| Assignee | ||
Comment 1•1 year ago
|
||
This works because the LifoAlloc is freed at the end of the compilation task,
after the compilation dependency tracker is reset().
This is more efficient when we can add more than a few dependencies (especially when
this happens on the main thread), but it's also required for the next patch because
InlineSet currently doesn't like when the hash policy's Lookup and Key types are
different (we'd want Key to be a UniquePtr and Lookup to be a raw pointer or
reference).
| Assignee | ||
Comment 2•1 year ago
|
||
Changing the Vector to an InlineSet allows us to add more dynamic dependencies
later, while still optimizing for the common very-few-dependencies case.
Updated•1 year ago
|
https://hg.mozilla.org/mozilla-central/rev/39403c6bf7ea
https://hg.mozilla.org/mozilla-central/rev/cbd3b1d025d3
Updated•1 year ago
|
Description
•