RVM

Inline size estimation reduction factor calculation over rates precise information causing bloat and slow down

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Critical Critical
  • Resolution: Fixed
  • Affects Version/s: None
  • Fix Version/s: 2.9.3
  • Component/s: Compiler: Optimizing
  • Labels:
    None
  • Number of attachments :
    1

Description

We reduce the size overhead calculation of a method by scaling the method size down by up to 40%. For each argument we give credit as follows:

  • 5% credit for being extant.
  • 15% credit for being a precise type.
  • 1% credit for being a declared type.
  • 10% credit for being an int constant
  • 15% credit for being 'null'
  • 10% credit for being a string constant

This is giving a performance slow down (see RVM-446) as we fix problems in propagating precise types. It is also ignoring class literals, float/double/long literals and object literals. We really need to tune and improve these values. See:

http://jikesrvm.svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/rvm/src/org/jikesrvm/compilers/opt/inlining/InlineTools.java?revision=14037&view=markup#l_119

Issue Links

Activity

Hide
Ian Rogers added a comment -
Show
Ian Rogers added a comment - We also increase the code size by 8% and data by 4%: http://jikesrvm.anu.edu.au/cattrack/results/rvmx86lnx32b.anu.edu.au/sanity/3506/statistics_report
Hide
Ian Rogers added a comment -

r14134 to r14137 fix bugs that occur if inlining based on constant args is made more aggressive. This patch changes the weight of all constant args to +10% and gives null constant a further +5% as before. For registers it lowers the weight for precise type information. This doesn't fix the compress performance regression as we still inline too much of Compress.output - I believe doing this earlier is bad, as we have no profile information.

Show
Ian Rogers added a comment - r14134 to r14137 fix bugs that occur if inlining based on constant args is made more aggressive. This patch changes the weight of all constant args to +10% and gives null constant a further +5% as before. For registers it lowers the weight for precise type information. This doesn't fix the compress performance regression as we still inline too much of Compress.output - I believe doing this earlier is bad, as we have no profile information.
Hide
David Grove added a comment -

The code/image size issues have been corrected. I'll continue to look at compress/db performance changes under the other tracker item as I suspect "fixing" them will require tuning other inlining control parameters, not the inline size reduction heurisitcs.

Show
David Grove added a comment - The code/image size issues have been corrected. I'll continue to look at compress/db performance changes under the other tracker item as I suspect "fixing" them will require tuning other inlining control parameters, not the inline size reduction heurisitcs.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: