On the side-effects of code abstraction

More and more devices contain computers with limited amounts of memory. As a result, code compaction techniques are gaining popularity, especially when they also improve performance and power consumption, or at least not degrade it. This paper quantifies the side-effects of code abstraction on performance using extensive measurements and simulations on the SPECint2000 benchmark suite and some additional C++ programs. We show how to use profile information in order to obtain almost all the code size reduction benefits of code abstraction, yet experience almost none of its disadvantages.

[1]  Koen De Bosschere,et al.  Combining Global Code and Data Compaction , 2001, OM '01.

[2]  Jens Krinke,et al.  Identifying similar code with program dependence graphs , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[3]  Rajiv Gupta,et al.  Code Compaction of Matching Single-Entry Multiple-Exit Regions , 2003, SAS.

[4]  Andrew Ayers,et al.  Aggressive inlining , 1997, PLDI '97.

[5]  Koen De Bosschere,et al.  Sifting out the mud: low level C++ code reuse , 2002, OOPSLA '02.

[6]  Susan Horwitz,et al.  Using Slicing to Identify Duplication in Source Code , 2001, SAS.

[7]  Christopher W. Fraser,et al.  Analyzing and compressing assembly code , 1984, SIGPLAN '84.

[8]  Keith D. Cooper,et al.  Unexpected side effects of inline substitution: a case study , 1992, LOPL.

[9]  C. R. Ramakrishnan,et al.  Evaluating Inlining Techniques , 1998, Comput. Lang..

[10]  Bjorn De Sutter,et al.  Compiler techniques for code compaction , 2000, TOPL.

[11]  Jack W. Davidson,et al.  Profile guided code positioning , 1990, SIGP.

[12]  Russell W. Quong,et al.  An empirical study on how program layout affects cache miss rates , 1999, PERV.

[13]  Rainer Leupers,et al.  Function inlining under code size constraints for embedded processors , 1999, 1999 IEEE/ACM International Conference on Computer-Aided Design. Digest of Technical Papers (Cat. No.99CH37051).

[14]  Udi Manber,et al.  Deducing Similarities in Java Sources from Bytecodes , 1998, USENIX Annual Technical Conference.

[15]  Ulrik Pagh Schultz,et al.  Java bytecode compression for low-end embedded systems , 2000, TOPL.

[16]  Keith D. Cooper,et al.  Enhanced code compression for embedded RISC processors , 1999, PLDI '99.

[17]  Christopher W. Fraser,et al.  Bytecode compression via profiled grammar rewriting , 2001, PLDI '01.

[18]  Doug Burger,et al.  Evaluating Future Microprocessors: the SimpleScalar Tool Set , 1996 .