Add a fuse for the existence of user access to Symbol.isConcatSpreadable
Categories
(Core :: JavaScript Engine, task, P5)
Tracking
()
People
(Reporter: mgaudet, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
|
2.16 KB,
text/plain
|
Details |
If we add a fuse for this and add fuse telemetry (Bug 1877258) we can decide if we want a fuse based optimization for this.
(The check for concat spread has already been optimized, but with a fuse we could make a runtime-wide optimization)
| Reporter | ||
Comment 1•1 year ago
|
||
(I suppose the alternative definition: "If user code ever creates a new property with the key Symbol.isConcatSpreadable" would also work)
| Reporter | ||
Comment 2•1 year ago
|
||
(Evidence this could be valuable is that during an Sp3 run, there are 2.4 million checks involved in "IsConcatSpreadable")
| Reporter | ||
Comment 3•1 year ago
|
||
Oh and out of all these checks, in Sp3 precisely zero ever said "yes, we have an isconcatspreadable"
| Reporter | ||
Comment 4•1 year ago
•
|
||
| Reporter | ||
Comment 5•1 year ago
|
||
It's also maybe interesting to note that toStringTag and toPrimitive never seem to take this path?
| Reporter | ||
Comment 6•1 year ago
|
||
To experiment if getting rid of the checks for IsConcatSpreadable would be valuable, I did a perf compare where I just commented out the checks. This would be the ideal outcome of a fuse optimization.
Results are pretty underwhelming -- almost no impact.
It seems that our current HasInterestingSymbol opt is pretty darn good, 2.4 million checks and all.
| Reporter | ||
Updated•1 year ago
|
| Reporter | ||
Comment 7•1 year ago
|
||
Would be interesting to see if this helped a microbenchmark.
Description
•