Investigate if canceling ion compilation because of GC adds noise to Speedometer and elsewhere, and if so, figure out how to not cancel ion.
Categories
(Core :: JavaScript Engine: JIT, defect, P3)
Tracking
()
Performance Impact | low |
People
(Reporter: smaug, Unassigned)
References
(Depends on 1 open bug)
Details
Comment 1•5 years ago
|
||
One idea would be to compute the average/X-percentile/max/1.5x-max of the heap-increase across Ion compilation, and store it in a JSRuntime field.
When starting an Ion compilation we can check if adding this value would trigger a GC during the compilation or soon after it. Therefore preventing the compilation until the GC heap is compacted or the heap reserved size is enlarged.
We might as well trigger a GC if our compilation queue is already empty, when checking this GC threshold, as our compilation would be waiting for the GC to happen to do its Ion compilation.
Comment 2•5 years ago
|
||
(In reply to Olli Pettay [:smaug] from comment #0)
This nursery case should be rare in practice, but I think it's worth considering removing it. Instead of this we could either:
- Deoptimize in IonBuilder when we see a nursery object.
- Find a way to support nursery objects. For TypeSets and type constraints what might work is some sort of linked list or Vector we trace on the main thread and assert is never accessed off-thread.
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Updated•3 years ago
|
Updated•3 years ago
|
Updated•2 years ago
|
Comment 3•1 year ago
|
||
The mechanism highlighted in Comment 1 has been removed; we seem to support some nursery stuff in the warp oracle.
Description
•