[abc] around inliner

From: Sascha Kuzins <sascha.kuzins@comlab.ox.ac.uk>
Date: Fri Apr 29 2005 - 18:37:50 BST

Hi all,

I've been working on the around inliner this last week. This is the
current status:

The pldi benchmarks can now be compiled in more reasonable times. It
still takes a while for the big ones, but compile times have improved by
a factor of up to about 10. I replaced the switch folder by a more
efficient version that's aware of how the weaver produces switches. This
eliminates the biggest performance bottleneck.
All of the benchmarks now compile. One thing I noticed is that the
NullcheckEliminator can get very expensive in terms of space. That's why
weka with forced inlining ran out of space. The NullcheckEliminator used
up more than one gigabyte on a single method that was fairly large (more
than 11000 jimple statements).

I've implemented a number of optimizations. First of all, the inliner
now removes duplicate inline methods (as suggested by Laurie).
This is implemented as an optimization pass. This pass creates a
fingerprint of each relevant method for comparison. The fingerprint
ignores method names and names of locals.
Also, I've implemented the aspectOf() optimization suggested by Laurie
for singleton aspects along the lines of cflow-stacks (by having one
shared local per method per singleton aspect that is initilized to null
etc..)
Furthermore, the return types of inline methods are now specialized to
further avoid unnecessary casts.

Below are the current numbers from cardinal.

Sascha

sim-nullptr
abc: 12.01
abcforceinline: 10.25
abcnoinline: 12.616
ajc121: 13.522

sim-nullptr-rec
abc: 11.494
abcforceinline: 11.59
abcnoinline: 13.852
ajc121: 66.534

weka-nullptr
abc: 8.962
abcforceinline: 10.288
abcnoinline: 10.936
ajc121: 9.38

weka-nullptr-rec
abc: 9.21
abcforceinline: 10.12
abcnoinline: 10.902
ajc121: 28.514

ants-delayedoutput
abc: 13.966
abcforceinline: 13.368
abcnoinline: 13.96
ajc121: 14.122

ants-profiler
abc: 34.21
abcforceinline: 33.21
abcnoinline: 34.842
ajc121: 35.664

And sizes from this afternoon (not quite the current version, but close):

sim-nullptr:abc
instr Sum : 9038
bytes Sum : 18739

sim-nullptr:abcforceinline
instr Sum : 11351
bytes Sum : 25415

sim-nullptr:abcnoinline
instr Sum : 7769
bytes Sum : 15662

sim-nullptr:ajc121
instr Sum : 10186
bytes Sum : 23328

sim-nullptr-rec:abc
instr Sum : 15591
bytes Sum : 30681

sim-nullptr-rec:abcforceinline
instr Sum : 23214
bytes Sum : 48660

sim-nullptr-rec:abcnoinline
instr Sum : 8072
bytes Sum : 16322

sim-nullptr-rec:ajc121
instr Sum : 10724
bytes Sum : 20791

weka-nullptr:abc
instr Sum : 90867
bytes Sum : 197443

weka-nullptr:abcforceinline
instr Sum : 139107
bytes Sum : 335142

weka-nullptr:abcnoinline
instr Sum : 100120
bytes Sum : 202410

weka-nullptr:ajc121
instr Sum : 134290
bytes Sum : 329134

weka-nullptr-rec:abc
instr Sum : 150761
bytes Sum : 308210

weka-nullptr-rec:abcforceinline
instr Sum : 357781
bytes Sum : 684209

weka-nullptr-rec:abcnoinline
instr Sum : 100483
bytes Sum : 202211

weka-nullptr-rec:ajc121
instr Sum : 130483
bytes Sum : 263515

ants-delayedoutput:abc
instr Sum : 3972
bytes Sum : 7605

ants-delayedoutput:abcforceinline
instr Sum : 3957
bytes Sum : 7597

ants-delayedoutput:abcnoinline
instr Sum : 3770
bytes Sum : 7482

ants-delayedoutput:ajc121
instr Sum : 3785
bytes Sum : 7462

ants-profiler:abc
instr Sum : 14107
bytes Sum : 28832

ants-profiler:abcforceinline
instr Sum : 14114
bytes Sum : 29819

ants-profiler:abcnoinline
instr Sum : 7442
bytes Sum : 16085

ants-profiler:ajc121
instr Sum : 13401
bytes Sum : 28304
Received on Fri Apr 29 18:37:52 2005

This archive was generated by hypermail 2.1.8 : Sat Apr 30 2005 - 02:50:05 BST