On a JS demo (https://www.fxhash.xyz/generative/slug/beads-and-planets ) Nightly appears to spend time in non-JIT path in some functions
Categories
(Core :: JavaScript Engine, task)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox111 | --- | fixed |
People
(Reporter: mayankleoboy1, Assigned: jandem)
References
(Blocks 1 open bug, )
Details
Attachments
(1 file)
Go to https://www.fxhash.xyz/generative/slug/beads-and-planets
Click on "run" .
Additionally, you can click on the "Variations" button a few times to generate variations of the demo
Nightly: https://share.firefox.dev/3GORMW3
Chrome: https://share.firefox.dev/3QUiOzW
On Nightly, the concat function appears to spend all the time in Baseline.
Additionally, if you click on the "Native" radio button on the Profiler UI, the top entry "js:RunScript" appears to spend 94% of the time in Baseline. I read this entry as : "From Geckos perspective, SM is a blackbox/function. That blackbox/function is taking 8.3% of the total time running the demo, and the blackbox/function runs 94% in Baseline"
| Assignee | ||
Updated•3 years ago
|
| Assignee | ||
Comment 1•3 years ago
|
||
This is because we call the self-hosted Array.prototype.concat with too many actual arguments for Ion/Warp (> 4096) but enough for Baseline (limit there is 20,000). Both JITs handle actual arguments in a very similar way, so I can't think of a good reason to use a lower limit for Ion code.
| Assignee | ||
Comment 2•3 years ago
|
||
Ion was using JitOptions.maxStackArgs (4096) and Baseline had BASELINE_MAX_ARGS_LENGTH (20,000).
This patch increases JitOptions.maxStackArgs to 20,000 and uses it for all JITs.
The JITs use the same call ABI and handle actual arguments in a similar way, so there's
no good reason to use a lower limit for Ion code. Note that handling of formal arguments
is very different in Ion and we already have a much smaller limit for that.
Comment 4•3 years ago
|
||
| bugherder | ||
| Reporter | ||
Comment 5•3 years ago
|
||
Latest profile: https://share.firefox.dev/3ZP7fxY
concat spends all of the time in ion now. Also seems to be faster by a couple of hundred miliseconds.
Description
•