A mechanism is provided that eliminates redundant components from objects
of a program. Specifically, the mechanism is capable of detecting
situations where a member of a given class is used by some, but not all
instances of that class, and the elimination of this member from the
instances where it is not needed. This is accomplished by an analysis of
the program and its class hierarchy, followed by the construction of a
new, specialized class hierarchy and a transformation of the program.
These operations preserve the original behavior of the program, and have
the effect of "optimizing away" unneeded class members from objects. The
invention is also capable of replacing class hierarchies that exhibit
virtual inheritance with class hierarchies that only exhibit nonvirtual
inheritance, and is applicable across a broad spectrum of inheritance
structures. Transformation of virtual into nonvirtual inheritance improves
program performance because it reduces the time required to access members
that are located in virtual base classes. In addition, it may reduce the
space required to represent objects.
Ένας μηχανισμός παρέχεται που αποβάλλει τα περιττά συστατικά από τα αντικείμενα ενός προγράμματος. Συγκεκριμένα, ο μηχανισμός είναι σε θέση τις καταστάσεις όπου ένα μέλος μιας δεδομένης κατηγορίας χρησιμοποιείται από μερικές, αλλά όχι όλες τις περιπτώσεις εκείνης της κατηγορίας, και της αποβολής αυτού του μέλους από τις περιπτώσεις όπου δεν απαιτείται. Αυτό ολοκληρώνεται από μια ανάλυση του προγράμματος και της ιεραρχίας κατηγορίας του, που ακολουθείται από την κατασκευή μιας νέας, ειδικευμένης ιεραρχίας κατηγορίας και έναν μετασχηματισμό του προγράμματος. Αυτές οι διαδικασίες συντηρούν την αρχική συμπεριφορά του προγράμματος, και έχουν την επίδραση "να βελτιστοποιήσουν μακριά" τα αχρείαστα μέλη κατηγορίας από τα αντικείμενα. Η εφεύρεση είναι επίσης σε θέση τις ιεραρχίες κατηγορίας που εκθέτουν την εικονική κληρονομιά με τις ιεραρχίες κατηγορίας που εκθέτουν μόνο την nonvirtual κληρονομιά, και ισχύουν πέρα από ένα ευρύ φάσμα των δομών κληρονομιάς. Ο μετασχηματισμός εικονικού στην nonvirtual κληρονομιά βελτιώνει την εκτέλεση προγράμματος επειδή μειώνει το χρόνο που απαιτείται για να έχει πρόσβαση στα μέλη που βρίσκονται στις εικονικές κατηγορίες βάσεων. Επιπλέον, μπορεί να μειώσει το διάστημα που απαιτείται για να αντιπροσωπεύσει τα αντικείμενα.