You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jul 12, 2024. It is now read-only.
When the statically resolved method of an `Apply` node exists and
is "effectively final" (i.e., it is never overridden), we can use
the compilation scheme of `ApplyStatically` instead.
This also allows to remove methods from the vtables if they are
always called in such a situation.
The analysis is not optimal: consider 3 classes A, B, C. B and C
both extend A, but only B overrides method m. Then a call on a
`(c: C).m` will "resolve" to `A.m` which is not effectively final,
so it won't be optimized. A better analysis would be costly in our
setup, but will be free to obtain from the Scala.js Optimizer when
we can enable it, so we don't push the design too much for now.
Nevertheless, it is worth doing now in its limited form. It reduces
the size of the fastLink output by 18% and the fullLink output by
28% for the Scala.js test suite. Not to mention the likely
performance improvements.
0 commit comments