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
inlining is a powerful enabling optimization; by eliminating the actual call it not only offers an obvious direct benefit but also indirect benefits, as information about the method's arguments is propagated from caller to callee.
Currently Inliner does not propagate the arguments' (more precise) types (in particular an anonymous class) to the callee formals (we leave it for the JVM to figure that out).
In more detail, dupLocal() in doInline() creates local vars for the args of the inlined callsite. Rather than giving them the types obtained via TFA, it reuses those for the callee's formal params. Moreover, during:
/** Map an instruction from the callee to one suitable for the caller. */
def map(i: Instruction): Instruction = {
there's an opportunity to devirtualize calls (in the inlined callee).
Citation:
[1] Andreas Sewe, Jannik Jochem, and Mira Mezini. 2011.
Next in line, please!: exploiting the indirect benefits of inlining by accurately predicting further inlining.
SPLASH '11 Workshops. ACM, New York, NY, USA, 317-328. http://doi.acm.org/10.1145/2095050.2095102
The text was updated successfully, but these errors were encountered:
An observation about inlining in [1]:
Currently
Inliner
does not propagate the arguments' (more precise) types (in particular an anonymous class) to the callee formals (we leave it for the JVM to figure that out).In more detail,
dupLocal()
indoInline()
creates local vars for the args of the inlined callsite. Rather than giving them the types obtained via TFA, it reuses those for the callee's formal params. Moreover, during:there's an opportunity to devirtualize calls (in the inlined callee).
Citation:
[1] Andreas Sewe, Jannik Jochem, and Mira Mezini. 2011.
Next in line, please!: exploiting the indirect benefits of inlining by accurately predicting further inlining.
SPLASH '11 Workshops. ACM, New York, NY, USA, 317-328.
http://doi.acm.org/10.1145/2095050.2095102
The text was updated successfully, but these errors were encountered: