US5481708A
Expired / Lapsed
US
⏱️ 0.0 years remaining
System and methods for optimizing object-oriented compilations
Assignee: CODEGEAR LLC
•
Filing: 1992-06-05
•
Granted: 1996-01-02
•
Expires: 2012-06-05
Abstract
Abstract An object-oriented development system of the present invention includes a language compiler having an optimizer for generating computer applications with improved speed and size. C++ optimization methods of the present invention are described, including virtual function and base optimization, using thunks for virtual member pointers, and passing classes by value. An object-oriented calling convention of the present invention, which affords rapid and efficient access to data and methods of objects, is also described.
Inventors
- 👤 Peter Kukol
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-10-28 06:08
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/443; G06F8/4434; G06F8/447; G06F9/00; G06F9/06; G06F9/44; G06F9/448; G06F9/4482; G06F9/4484; G06F9/4488; G06F9/449; G06F9/4491
Claims Analysis
Total Claims: 17
Claim 1
Independent Claim
131 words
In a system for generating code executable by a computer from object-oriented source listings, said source listings including definitions of classes of objects having data members and functions operative on said data members, the computer including a memory stack for creating automatic variables, a method for passing classes of objects by value to a function, the method comprising: (a) identifying by the system a class argument being passed by value as a parameter to a particular function, said class argument comprising an object to be instantiated from a particular class; (b) creating a surrogate variable for the class argument by allocating space on the memory stack for storing said value; and (c) determining an address of said surrogate variable on the memory stack when code referencing said class argument is generated.
Claim 2
Dependent Claim
131 words
In a system for generating code executable by a computer from object-oriented source listings, said source listings including definitions of classes of objects having data members and functions operative on said data members, the computer including a memory stack for creating automatic variables, a method for passing classes of objects by value to a function, the method comprising: (a) identifying by the system a class argument being passed by value as a parameter to a particular function, said class argument comprising an object to be instantiated from a particular class; (b) creating a surrogate variable for the class argument by allocating space on the memory stack for storing said value; and (c) determining an address of said surrogate variable on the memory stack when code referencing said class argument is generated.
Claim 3
Dependent Claim
42 words
The method of claim 1, wherein step (b) includes the substep: adjusting a pointer to said memory stack by an amount required for storing the value of the class argument, whereupon space is allocated on the memory stack for storing said value.
Claim 4
Dependent Claim
26 words
The method of claim 1, wherein step (b) includes the substep: marking said surrogate variable with a unique identifier for distinguishing it from non-surrogate automatic variables.
Claim 5
Dependent Claim
51 words
The method of claim 1, wherein said memory stack includes at least one frame pointer for accessing arguments and automatic variables within a stack frame, and wherein said address includes an offset from said at least one frame pointer for accessing said value at a memory location within said stack frame.
Claim 6
Dependent Claim
112 words
In a system for generating machine code executable by a computer, the computer including an Intel 80×86-compatible processor and a memory including a stack segment, said computer for executing program code comprising data and functions operative on said data, a method for passing classes of objects by value to a function, the method comprising: (a) identifying by the system a class argument which is being passed by value to a function; (b) creating a surrogate variable for the class argument by allocating space on the stack segment for storing said value; and (c) determining an address of said surrogate variable on the stack segment when code referencing said class argument is generated.
Claim 7
Dependent Claim
112 words
In a system for generating machine code executable by a computer, the computer including an Intel 80×86-compatible processor and a memory including a stack segment, said computer for executing program code comprising data and functions operative on said data, a method for passing classes of objects by value to a function, the method comprising: (a) identifying by the system a class argument which is being passed by value to a function; (b) creating a surrogate variable for the class argument by allocating space on the stack segment for storing said value; and (c) determining an address of said surrogate variable on the stack segment when code referencing said class argument is generated.
Claim 8
Dependent Claim
27 words
The method of claim 5, wherein step (b) includes adjusting a stack pointer (SP) register of said processor, whereby additional space is allocated on the stack segment.
Claim 9
Dependent Claim
44 words
The method of claim 5, wherein step (c) includes storing in a base pointer (BP) register of said processor a frame pointer for accessing arguments and automatic variables within a stack frame, wherein said address is referenced as an offset from said frame pointer.
Claim 10
Independent Claim
131 words
A system for developing compiled computer code, the system comprising: a computer having a processor and a memory, said memory including a stack segment for storing function arguments and local data; a compiler for generating computer code from source listings, said source listings including definitions of classes of objects having data members and methods operative on said data members; means, operably coupled to said compiler, for identifying by the system a class argument being passed to a function, said class argument being passed by value to the function; means, operably coupled to said compiler, for storing said value by allocating space on the stack segment; and means, operably coupled to said compiler, for determining an address of said value on the stack segment when code referencing said class argument is generated.
Claim 11
Independent Claim
131 words
A system for developing compiled computer code, the system comprising: a computer having a processor and a memory, said memory including a stack segment for storing function arguments and local data; a compiler for generating computer code from source listings, said source listings including definitions of classes of objects having data members and methods operative on said data members; means, operably coupled to said compiler, for identifying by the system a class argument being passed to a function, said class argument being passed by value to the function; means, operably coupled to said compiler, for storing said value by allocating space on the stack segment; and means, operably coupled to said compiler, for determining an address of said value on the stack segment when code referencing said class argument is generated.
Claim 12
Dependent Claim
42 words
The system of claim 8, wherein said processor includes a register for storing a frame pointer for accessing function arguments and local data stored in the stack segment, and wherein said address is formed by adding an offset to the frame pointer.
Claim 13
Dependent Claim
132 words
In a computer system for executing computer programs compiled from object-oriented source listings, the computer including a memory having a plurality of data and code segments and including a processor with a plurality of segment registers for addressing said plurality of data and code segments, a method for accessing objects created from classes of objects, the method comprising: (a) defining a class of objects, said class including data members and methods operative on said data members; (b) creating at least one object from said defined class by storing said data members of the class in a data segment of the memory, whereupon a selected one of said segment registers is loaded with an address of said data segment; and (c) accessing said at least one object with said loaded data segment address.
Claim 14
Dependent Claim
132 words
In a computer system for executing computer programs compiled from object-oriented source listings, the computer including a memory having a plurality of data and code segments and including a processor with a plurality of segment registers for addressing said plurality of data and code segments, a method for accessing objects created from classes of objects, the method comprising: (a) defining a class of objects, said class including data members and methods operative on said data members; (b) creating at least one object from said defined class by storing said data members of the class in a data segment of the memory, whereupon a selected one of said segment registers is loaded with an address of said data segment; and (c) accessing said at least one object with said loaded data segment address.
Claim 15
Dependent Claim
45 words
The method of claim 10, wherein step (c) includes the substeps: loading an offset address in another register of the processor; and accessing selected ones of said data members and methods with an address including said loaded data segment address and said loaded offset address.
Claim 16
Dependent Claim
30 words
The method of claim 11, wherein said processor assumes said data members are stored in a default data segment, whereby access to the data members only requires an offset address.
Claim 17
Dependent Claim
54 words
The method of claim 11, wherein said processor is an Intel 80×86-compatible microprocessor with a DS register for accessing the data segment and an SI register for accessing an offset within a selected segment of memory, and wherein a pointer for accessing said at least one object is constructed from a DS:SI register pair.
References Cited (Backward Citations)
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1999-01-01 | 1999-07-03 | 2000-01-02 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2003-01-01 | 2003-07-03 | 2004-01-02 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2007-01-01 | 2007-07-03 | 2008-01-02 | $7700.00 | Window Closed / Lapsed |