Data processing: software development – installation – and managem – Software program development tool – Translation of code
Reexamination Certificate
1998-12-14
2003-11-25
Ingberg, Todd (Department: 2124)
Data processing: software development, installation, and managem
Software program development tool
Translation of code
C717S151000
Reexamination Certificate
active
06654951
ABSTRACT:
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention generally relates to object-oriented programming (OOP), and in particular to OOP systems supporting the C++ and Java programming languages.
2. Background Description
Object-oriented programming languages provide a number of features such as classes, inheritance, multiple inheritance, and virtual inheritance. These object-oriented features have several advantages. Most importantly, they enable the creation of class libraries that can be reused in many different applications. Class libraries are typically shipped independently from applications that use them. Libraries are commonly shipped as a combination of the executable (object) code, in combination with the library's interface. In order to use a library, a client application calls functions specified in the library's interface, and includes (links) the library's object code. This model has the advantage that a library has to be shipped and installed only once, even when multiple applications use it. An additional benefit of this approach is that the library's source code need not be exposed. Only the library's external interface needs to be visible.
However, the unavailability of a library's source code complicates so-called whole-program analysis of its client applications, which rely on the availability of the complete source code of an application. In particular, the unavailability of a library's source code complicates the problem of determining which methods in the client application are “live” (i.e., possibly reached in some execution of the application, which is referred to below as being “reachable”) or “dead” (i.e., never reached in any execution of the application). The source for this problem is related to the fact that certain methods in the application code may be called indirectly from within the (unavailable) library code by way of a virtual method dispatch.
The prior art has focused on the elimination of unused methods for programs that do not use class libraries. An example of such prior art is Srivastava, “Unreachable procedures in object oriented programming”, ACM Letters on Programming Languages and Systems, 1(4), pp. 355-364, December 1992.
Therefore, there is a need in the art to provide a mechanism for identifying unused methods for programs that use class libraries without requiring access to the source code for such class libraries.
SUMMARY OF THE INVENTION
The problems presented above and the related problems of the prior art are solved by the present invention, method and apparatus for finding of reachable methods in applications that use class libraries. The present invention analyzes an application A and computes a set reachable methods in A by determining the methods in A that may be called from another reachable method in A, or from within a class library L used by A without analyzing the classes in L.
The invention may be used as an optimization to reduce application size by eliminating unreachable methods. In the alternative, the invention may be used as a basis for optimizations that reduce execution time (e.g., by means of call devirtualization), and as a basis for tools for program understanding and debugging.
REFERENCES:
patent: 5845119 (1998-12-01), Kozuka et al.
patent: 5901314 (1999-05-01), Boehme et al.
patent: 5946490 (1999-08-01), Lieberherr et al.
patent: 5966539 (1999-10-01), Srivastava
patent: 5999737 (1999-12-01), Srivastava
patent: 6070006 (2000-05-01), Iriuchijima et al.
patent: 6182283 (2001-01-01), Thomson
patent: 6230314 (2001-05-01), Sweeney et al.
“Client/Server Programming with JAVA and CORBA” Second Edition, Robert Orfali et al, Chapter 32 Jan. 30, 1997.*
“Unreachable Procedures in Object Oriented Programming”, Amitabh Srivastava, ACM Letters on Programming Languages an Systems Vol 1, No 4, Dec. 1992, pp. 355-364.*
“Principles of Object-Oriented Analysis and Design”, James Martin, published Jun. 1, 1992, p. 269.*
“A C++Data Model Supporting Reachability Analysis and Dead Code Detection”, Yih-Farn Chen et al, IEEE Transactions on Software Engineering, Vol 24, No 9, Sep. 1998, pp. 682-694□□.*
“Decomposition of Inheritance Hierarchy DAGs for Object-Oriented Software Metrics”, Timothy K Shih et al, IEEE May 1997, pp. 238-245□□.*
“Inheritance Graph Assessment Using Metrics”, Jean Mayrand et al, IEEE Proceedings of Metrics, Aug. 1996, pp. 54-63.*
“Inheritance Tree Shapes and Reuse”, Byung-Kyoo Kang et al, IEEE, Aug. 1997, pp. 34-42.*
“Representation Inheritance A Safe Form of “White Box” Code Inheritance”, Stephan H Edwards, IEEE Transactions on Software Engineering, vol. 23, No. 3, Feb. 1997, pp. 83-92.*
“Testing Inheritance hiearchies in the ClassBench Framework”, Jason McDonald et al, IEEE, 1996, pp. 229-240.*
“Computing Prioritized Circumscription Via Compilation Into Stratified Logic Programs”. Toshiko Wakasi et al, ITESM, 1996, pp. 362-369.
Bacon David Francis
Laffra Johannes C.
Sweeney Peter Francis
Tip Frank
F. Chau & Associates LLP
Ingberg Todd
International Business Machines - Corporation
LandOfFree
Removal of unreachable methods in object-oriented... does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with Removal of unreachable methods in object-oriented..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Removal of unreachable methods in object-oriented... will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-3128075