← Back to Patent Explorer
US6546551B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Method for accurately extracting library-based object-oriented applications

Assignee: International Business Machines Corp
•
Filing: 1999-09-28
•
Granted: 2003-04-08
•
Expires: 2019-09-28
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention is capable of accurately extracting multiple applications with respect to a class library. The invention relies on a configuration file for an application program and/or library, which describes how program components in the program/library should be preserved under specified conditions. The invention may be used in application extraction tools, and in tools that aim at enhancing performance using whole-program optimizations. 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.

Inventors

  • 👤 Peter Francis Sweeney
  • 👤 Frank Tip

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-01 18:40
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/43; G06F8/433; G06F9/00; G06F9/06; G06F9/44; G06F9/445; G06F9/44521

Claims Analysis

Total Claims: 22
Claim 1
Independent Claim 151 words
A method for analyzing an object-oriented program implementing reflection comprising a plurality of components, the method comprising the steps of: providing data including at least one conditional directive, wherein the conditional directive specifies i) a condition associated with a first set of components, and ii) a second set of components that are to be classified as live if the condition is satisfied, wherein the plurality of components comprise classes, methods, and fields; determining whether a given class is live when the given class may be instantiated by refection during any execution of the program; determining whether a given method is live when the given method may be called by refection during any execution of the program; determining whether a given field is live when the given field may be accessed by refection during any execution of the program; and generating data identifying components that are live based upon the conditional directive.
Claim 2
Independent Claim 151 words
A method for analyzing an object-oriented program implementing reflection comprising a plurality of components, the method comprising the steps of: providing data including at least one conditional directive, wherein the conditional directive specifies i) a condition associated with a first set of components, and ii) a second set of components that are to be classified as live if the condition is satisfied, wherein the plurality of components comprise classes, methods, and fields; determining whether a given class is live when the given class may be instantiated by refection during any execution of the program; determining whether a given method is live when the given method may be called by refection during any execution of the program; determining whether a given field is live when the given field may be accessed by refection during any execution of the program; and generating data identifying components that are live based upon the conditional directive.
Claim 3
Dependent Claim 80 words
The method of claim 1 , wherein the generating step comprises the steps of: (a) constructing an initial call graph of the program; (b) extending the call graph using information about components that have been classified as live; (c) extending the call graph using the conditional directive; and (d) identifying in the program any component that is classified as live; where steps (b), (c), and (d) are preferably performed repeatedly until no further components are added to the call graph.
Claim 4
Dependent Claim 32 words
The method of claim 2 , wherein the condition associated with the first set of components is based upon usefulness of the first set of components during any execution of the program.
Claim 5
Dependent Claim 37 words
The method of claim 3 , wherein the condition associated with the first set of components is satisfied if at least one component in the first set of components is used during any execution of the program.
Claim 6
Dependent Claim 21 words
The method of claim 1 , further comprising the step of generating a representation of the program based upon the data.
Claim 7
Dependent Claim 21 words
The method of claim 5 , wherein the representation of the program omits components that are determined not to be live.
Claim 8
Dependent Claim 37 words
The method of claim 1 , further comprising the step of identifying at least one component of the program that is live, and reporting the at least one component to a user via a graphical user interface.
Claim 9
Dependent Claim 24 words
The method of claim 1 , wherein the first set of components include components that are part of a library used by the program.
Claim 10
Dependent Claim 45 words
The method of claim 1 , wherein the data including at least one conditional directive is derived from at least two distinct files, wherein one of the distinct files is associated with program, and wherein another of the distinct files is associated with the library.
Claim 11
Dependent Claim 26 words
The method of claim 1 , wherein one of the distinct files includes an import directive that provides a mechanism to import directives from another file.
Claim 12
Dependent Claim 169 words
A program storage device readable by a machine, tangibly embodying a series of instructions executable by the machine to perform method steps for analyzing an object-oriented program implementing reflection comprising a plurality of components, the method steps comprising: providing data including at least one conditional directive, wherein the conditional directive specifies i) a condition associated with a first set of components, and ii) a second set of components that are to be classified as live if the condition is satisfied, wherein the plurality of components comprise classes, methods, and fields; determining whether a given class is live when the given class may be instantiated by refection during any execution of the program; determining whether a given method is live when the given method may be called by refection during any execution of the program; determining whether a given field is live when the given field may be accessed by refection during any execution of the program; and generating data identifying components that are live based upon the conditional directive.
Claim 13
Dependent Claim 169 words
A program storage device readable by a machine, tangibly embodying a series of instructions executable by the machine to perform method steps for analyzing an object-oriented program implementing reflection comprising a plurality of components, the method steps comprising: providing data including at least one conditional directive, wherein the conditional directive specifies i) a condition associated with a first set of components, and ii) a second set of components that are to be classified as live if the condition is satisfied, wherein the plurality of components comprise classes, methods, and fields; determining whether a given class is live when the given class may be instantiated by refection during any execution of the program; determining whether a given method is live when the given method may be called by refection during any execution of the program; determining whether a given field is live when the given field may be accessed by refection during any execution of the program; and generating data identifying components that are live based upon the conditional directive.
Claim 14
Dependent Claim 82 words
The program storage device of claim 11 , wherein the generating step comprises the steps of: (a) constructing an initial call graph of the program; (b) extending the call graph using information about components that have been classified as live; (c) extending the call graph using the conditional directive; and (d) identifying in the program any component that is classified as live; where steps (b), (c), and (d) are preferably performed repeatedly until no further components are added to the call graph.
Claim 15
Dependent Claim 34 words
The program storage device of claim 12 , wherein the condition associated with the first set of components is based upon usefulness of the first set of components during any execution of the program.
Claim 16
Dependent Claim 39 words
The program storage device of claim 13 , wherein the condition associated with the first set of components is satisfied if at least one component in the first set of components is used during any execution of the program.
Claim 17
Dependent Claim 23 words
The program storage device of claim 11 , further comprising the step of generating a representation of the program based upon the data.
Claim 18
Dependent Claim 23 words
The program storage device of claim 15 , wherein the representation of the program omits components that are determined not to be live.
Claim 19
Dependent Claim 39 words
The program storage device of claim 11 , further comprising the step of identifying at least one component of the program that is live, and reporting the at least one component to a user via a graphical user interface.
Claim 20
Dependent Claim 26 words
The program storage device of claim 11 , wherein the first set of components include components that are part of a library used by the program.
Claim 21
Dependent Claim 47 words
The program storage device of claim 11 , wherein the data including at least one conditional directive is derived from at least two distinct files, wherein one of the distinct files is associated with program, and wherein another of the distinct files is associated with the library.
Claim 22
Dependent Claim 28 words
The program storage device of claim 11 , wherein one of the distinct files includes an import directive that provides a mechanism to import directives from another file.

References Cited (Backward Citations)

US5241673A Cited
US5872973A Cited
US5915252A Cited
US5794041A Cited
US5907843A Cited
US5983020A Cited
US6230314B1 Cited
US6093216A Cited
US6401182B1 Cited
US6292933B1 Cited
US6442748B1 Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2006-04-07 2006-10-07 2007-04-08 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2010-04-07 2010-10-07 2011-04-08 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2014-04-07 2014-10-07 2015-04-08 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag