| P. Sweeney. and F. Tip. A study of dead data members in C++ applications. In Proc. PLDI, pages 324-323, June 1998. |
....to simple literal address removal from object les [21] Whereas program compaction compacts code and data in a program, program extraction identi es those parts of libraries, classes or run time environments that are not needed for a speci c application. To our knowledge, such proposed techniques [1, 22, 23] are language dependent, requiring higher level descriptions of libraries, classes or run time environments and above all type information. This highly limits their applicability, e.g. on libraries that are available in object format only. In the past we have proposed applying code compaction on ....
....of dead data, and the synergistic e ect this has on the removal of unnecessary code. The work we have reported in this paper yields code size reductions that are on average 33.5 . The elimination of unused data from a program has been considered by Srivastava and Wall [21] and Sweeney and Tip [22]. Srivastava and Wall, describing a link time optimization technique for improving the code binary base code combined code base combined base 164.gzip 513 476 483 0.93 0.94 175.vpr 431 414 413 0.96 0.96 176.gcc 270 259 261 0.96 0.97 181.mcf 481 471 468 0.98 0.97 186.crafty 253 218 226 ....
P. Sweeney. and F. Tip. A study of dead data members in C++ applications. In Proc. PLDI, pages 324-323, June 1998.
....literal address removal from object les [19] Whereas program compaction compacts code and data in a program, program extraction identi es those parts of libraries, classes or run time environments that are not needed for a speci c application. To our knowledge, all such proposed techniques [1, 20, 21] are language dependent, requiring higher level descriptions of libraries, classes or run time environments and above all type information. This highly limits their applicability, e.g. on libraries that are available in object format only. In the past we have proposed applying code compaction on ....
....349 422 255.vortex 513 436 406 256.bzip2 410 364 406 300.twolf 673 620 619 GEOM. MEAN 433 400 420 Table 2: Execution times in seconds for the base, pro le feedback generated and compacted binaries of the SPECint2000 benchmark suite. considered by Srivastava and Wall [19] and Sweeney and Tip [20]. Srivastava and Wall, describing a link time optimization technique for improving the code for subroutine calls in Alpha executables, observe that the optimization allows the elimination of most of the global address table entries in the executables. However, their focus is primarily on improving ....
P. Sweeney. and F. Tip. A study of dead data members in C++ applications. In Proc. PLDI, pages 324-323, June 1998.
....simple literal address removal from object files [19] Whereas program compaction compacts code and data in a program, program extraction identifies those parts of libraries, classes or run time environments that are needed for a specific application. To our knowledge, all such proposed techniques [1, 20, 21] are language dependent, requiring higher level descriptions of libraries, classes or run time environments and above all type information. This highly limits their applicability, e.g. on libraries that are available in object format only. In the past we have proposed applying code compaction ....
....benchmark programs, this improvement coming from the removal of dead data and other improvements to squeeze. The recent results for C programs are much higher, averaging around 54 . The elimination of unused data from a program has been considered by Srivastava and Wall [19] and Sweeney and Tip [20]. Srivastava and Wall, describing a link time optimization technique for improving the code for subroutine calls in Alpha executables, observe that the optimization allows the elimination of most of the global address table entries in the executables. However, their focus is primarily on improving ....
P. Sweeney. and F. Tip. A study of dead data members in C++ applications. In Proc. PLDI, pages 324--323, June 1998.
....optimization heavily depends on inlining, which often causes code blow up. Grammar based analysis and transformation can be applied to methods across classes without inlining. A direct application would be to improve techniques for eliminating dead data members, as noted by Sweeney and Tip [57]. 21 Even though this paper focuses on dead code analysis and dead code elimination for recursive data, the framework for representing recursive substructures using general regular tree grammars and the algorithms for computing them applies to other analyses and optimizations on recursive data ....
P. F. Sweeney and F. Tip. A study of dead data members in c++ applications. In Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324-332. ACM, New York, June 1998.
....the performance of the overall system and Java applications. A large collection of work addresses optimizations specific to object oriented languages, such as class analysis, both intraprocedural [8] and interprocedural (see related work in [15] class hierarchy analysis and optimizations [22, 20], 9 receiver class prediction [13, 16, 7] method specialization [22] and call graph construction (see related work in [15] Other optimizations relevant to Java include bounds check elimination [18] and semantic inlining [23] 6 Conclusions The use of Java in many important server ....
Peter F. Sweeney and Frank Tip. A study of dead data members in C++ applications. In SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324--332, June 1998. SIGPLAN Notices, 33(5).
....focuses on either code or data compaction. Data compaction research is limited to simple literal address removal from object les [15] or the removal of dead data members in OO languages, where the analysis is applied on source code, thus forcing conservative assumptions about library code [16]. Work on code compaction has generally focused on identifying repeated instruction sequences within a program and abstracting them into functions [3, 9] In all of this work, data and code compaction have been carried out independently of each other. It is not dicult to see, however, that there ....
....in this paper yields overall size reductions that are about 5 6 higher than that reported in our earlier work [4] this improvement coming mainly from the removal of dead data. The elimination of unused data from a program has been considered by Srivastava and Wall [15] and Sweeney and Tip [16]. Srivastava and Wall, describing a link time optimization technique for improving the code for subroutine calls in Alpha executables, observe that the optimization allows the elimination of most of the global address table entries in the executables. However, their focus is primarily on improving ....
P. Sweeney. and F. Tip. A study of dead data members in C++ applications. In Proc. PLDI, pages 324-323, June 1998.
....to implement a given task. In addition, programmers tend to fully define behavior in every class, leading to a larger static count of procedures (methods in C parlance) This same property can cause some procedures or data members to be unreachable or infrequently accessed in a given application [29, 30]. For example, in [29] up to 26 of procedures were found to be statically unreachable in C applications compared to only 6 for C applications. Due to the larger static procedure count, procedures tend to possess a smaller average static size (78 instructions for C compared to 94 for C, ....
....can have a serious impact on instruction cache performance since spatial locality tends to drop. Techniques such as code reordering and or intelligent cache management are good candidates for improving performance. Dead code and data detection and elimination can help reduce the code size [29, 30]. Reducing procedure size is important because small procedures can benefit more from inlining [32] and cloning [33] Notice, however, that the increased use of indirect branches (which will be explained below) makes call graph construction and inlining decisions more difficult [34] The lower ....
P. Sweeney and F. Tip. A Study of Dead Data Members in C++ Applications. Technical Report RC-21051, IBM T.J. Watson Center, July 1997.
....implemented in C and thus, do not use the object oriented approach employed in Dakota. Wilson s pointer analysis [26, 24] is implemented in the SUIF compiler discussed above. Because of its heavy use of multiple virtual inheritance, the NPIC system has been used as a benchmark by Sweeney and Tip [21] to demonstrate the effectiveness of object oriented optimizations. 7 In reality each CFG is owned by a function, which has the task of serializes its formals. 10 void main( int x, y; f( x=y 5; void f( Version4.0 OhioFileofPCG ohioexample example.prj start of the ohio file ....
Peter F. Sweeney and Frank Tip. A study of dead data members in C++ applications. In SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324--332, June 1998. SIGPLAN Notices, 33(5).
....used for the given application, and so can be removed without affecting execution. b) Method, field and class renaming. Clearly, if a class is renamed from something like ca.mcgill.sable.soot.jimple.Main to M) then all references to methods, fields of this class consume less space. Consult [ST98] for more details on dead code elimination, and study [Das] for further ideas on program compaction. Results should include the size of classfiles before and after the compaction, as well as the execution times of the compaction procedure. As with all of the projects, it is crucial that the ....
Peter F. Sweeney and Frank Tip. A study of dead data members in C++ applications. In Proceedings of the ACM SIGPLAN'98 Conference on Programming Language Design and Implementation (PLDI), pages 324--332, Montreal, Canada, 17--19 June 1998.
....optimization heavily depends on inlining, which often causes code blow up. Grammar based analysis and transformation can be applied to methods across classes without inlining. A direct application would be to improve techniques for eliminating dead data members, as noted by Sweeney and Tip [53] Even though this paper focuses on dead code analysis and dead code elimination for recursive data, the framework for representing recursive substructures using general regular tree grammars and the algorithms for computing them applies to other analyses and optimizations on recursive data as ....
P. F. Sweeney and F. Tip. A study of dead data members in c++ applications. In Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324--332. ACM, New York, June 1998.
....This transformation is the extension to higher order programming of a variety of dead code elimination optimizations that are important in compilers for firstorder imperative languages. ffl Such variables may be result from program maintenance or other engineering considerations. For example, ST98] finds that an average of 12.5 of the data members in realistic C benchmark programs were useless. We present an analysis and transformation to eliminate useless variables from programs. This analysis and transformation is similar to one proposed by Shivers [Shi91] Our major contribution is a ....
Peter F. Sweeney and Frank Tip. A study of dead data members in C++ applications. In Proc. ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324--332. ACM, June 1998.
....This transformation is the extension to higher order programming of a variety of dead code elimination optimizations that are important in compilers for first order imperative languages. ffl Such variables may be result from program maintenance or other engineering considerations. For example, [ST98] finds that an average of 12.5 of the data members in realistic C benchmark programs were useless. We present an analysis and transformation to eliminate useless variables from programs. This analysis and transformation is similar to one proposed by Shivers [Shi91] Our major contribution is a ....
Peter F. Sweeney and Frank Tip. A study of dead data members in C++ applications. In Proc. ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324-- 332. ACM, June 1998.
....optimization heavily depends on inlining, which often causes code blow up. Grammar based analysis and transformation can be applied to methods across classes without inlining. A direct application would be to improve techniques for eliminating dead data members, as noted by Sweeney and Tip [52] Even though this paper focuses on dead code analysis and dead code elimination for recursive data, the framework for representing recursive substructures using general regular tree grammars and the algorithms for computing them applies to other analyses and optimizations on recursive data as ....
P. F. Sweeney and F. Tip. A study of dead data members in c++ applications. In Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324--332. ACM, New York, June 1998.
....the performance of the overall system and Java applications. A large collection of work addresses optimizations specific to object oriented languages, such as class analysis, both intraprocedural [10] and interprocedural (see related work in [20] class hierarchy analysis and optimizations [37, 35], receiver class prediction [16, 21, 9] method specialization [37] and call graph construction (see related work in [20] Other optimizations relevant to Java include bounds check elimination [30] and semantic inlining [39] 12 Conclusions and Future Work The use of Java in many important ....
Peter F. Sweeney and Frank Tip. A study of dead data members in C++ applications. In SIGPLAN '98 Conference on Programming Language Design and Implementation, pages 324--332, June 1998. SIGPLAN Notices, 33(5).
....for a program, the number of alias sets far exceeds the number of program constructs 8 . Another observation is that static measurements are not a good indication of dynamic behavior. From the static measurements, it appears that npic would have significant object oriented overhead. Other work [25] has confirmed these observations with respect to studying dead data members in C applications. Finally, Table 16 illustrates how compiler generated fields in idl objects are distributed between language features with respect to each memory layout. The compiler generated field overhead does not ....
....approach does not utilize any form of program analysis of method bodies to reduce space overhead. Analysis of method bodies could allow us to remove dead language feature entries by determining if a particular language feature for a particular class is ever used in an application. Previous work [25] explored this question only for user defined fields and found promising results. There are broader families of memory layouts that could be considered by creating new sets of patterns. For example, selective replication of virtual function entries can eliminate accessing a virtual base s class ....
P. F. Sweeney and F. Tip. A study of dead data members in C++ applications. In In Proceedings of ACM SIGPLAN '98 Conference on Programming Language Design and Implementation (PLDI'98), (Montreal, Canada), pages 324--333, June 1998. Also published as ACM SIGPLAN Notices 33(6). 24
....the elimination of fields. In our example, x is only accessed from A.f, and since A.f is unreachable, x may be removed from the application without affecting program behavior. Fields that are only written to (but not read) can also be removed since their value cannot affect the program s behavior [19]. In addition to removing the field itself, this involves removal of the instructions that store the value in the field. In our example, field A.y is write only, and can be eliminated. Figure 2 depicts a source to source view of the successive transformations performed by Jax (in reality, all ....
....[7] Due to the importance of class libraries for Java, we found that the accurate treatment of methods that override methods in external class libraries is important for reducing archive size. The detection of useless fields, including write only fields, was previously studied by Sweeney and Tip [19], and Tip et al. 20] for C . Sweeney and Tip used RTA to construct a call graph, and measured an average percentage 12.5 useless fields in a set of C applications. In the context of Jax, we found that, on average, 53.8 of all fields are useless. We conjecture that this difference is partly ....
SWEENEY, P. F., AND TIP, F. A study of dead data members in C++ applications. In Proceedings of the ACM SIGPLAN'98 Conference on ProgrammingLanguageDesignandImplementation(Montreal, Canada, June 1998), pp. 324--332. ACM SIGPLAN Notices 33(6).
....the elimination of fields. In our example, x is only accessed from A.f, and since A.f is unreachable, x may be removed from the application without affecting program behavior. Fields that are only written to (but not read) can also be removed since their value cannot affect the program s behavior [21]. In 2 addition to removing the field itself, this involves removal of the instructions that store the value in the field. In our example, field A.y is write only, and can be eliminated. Figure 2 depicts a source to source view of the successive transformations performed by Jax (in reality, all ....
....[8] Due to the importance of class libraries for Java, we found that the accurate treatment of methods that override methods in external class libraries is important for reducing archive size. The detection of useless fields, including write only fields, was previously studied by Sweeney and Tip [21], and Tip et al. 22] for C . Sweeney and Tip used RTA to construct a call graph, and measured an average percentage 12.5 useless fields in a set of C applications. In the context of Jax, we found that, on average, 54.1 of all fields are useless. We conjecture that this difference is partly ....
Sweeney, P. F., and Tip, F. A study of dead data members in C++ applications. In Proceedings of the ACM SIGPLAN'98 Conference on Programming Language Design and Implementation (Montreal, Canada, June 1998), pp. 324--332. ACM SIGPLAN Notices 33(6).
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC