Patent ID: 8122430

Claim:
A computer readable storage medium containing programming instructions for automatic replacement of object classes, the programming instructions comprising: performing static analysis on a program containing a plurality of objects in order to determine constraints on transformations that can be applied and to detect unused functionality in one or more of the objects to be replaced; analyzing the plurality of objects to detect usage patterns of functionality in the one or more objects replaced; analyzing at least one execution of the program to collect profile information for the one or more objects; and generating customized classes based upon the static analysis and the usage patterns detected and the profile information which has been collected; wherein the generating customized classes based upon the usage patterns detected includes: identifying a customizable container class C with superclass B; creating a class CustomC which contains methods and fields that are identical to those in class C, wherein if B is not customizable, then CustomC's superclass is B, otherwise CustomC's superclass is CustomB; introducing a type C T , and making both C and CustomC a subtype of C T and wherein type C T contains declarations of all methods in C that are not declared in any superclass of C; and introducing a type C ⊥ , and making C ⊥ a subclass of both C and CustomC, wherein type C ⊥ contains no methods, and wherein C T and C ⊥ are intermediate types not provided as output during the generating of custom classes; determining at least one equivalence class E of declaration elements and expressions that must have a same type.