System and methods for optimizing object-oriented compilations
AssigneeBorland International, Inc.
InventorPeter Kukol
Life of this patent
Estimating the term…
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.
Claims13
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.
In a system for generating machine code executable by a computer, the computer including an Intel 80.times.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.
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.
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.
Dependencies are inferred from the claim text.