Code implants for compilers

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S152000

Reexamination Certificate

active

06289504

ABSTRACT:

FIELD OF THE INVENTION
This invention relates generally to compilers for computers, and more particularly to code implants for such compilers.
BACKGROUND OF THE INVENTION
Traditionally, computer programs are written in a computer programming language such that the programs are specific to a particular type of computer. For example, a program written in the computer programming language C++ for the Microsoft™ WindowS™ operating system is usually not able to also run on a computer in which the Apple™ MacOS™ operating system is installed. This means that computer programmers must write different versions of their programs for each different type of computer on which the programs are desired to be run.
With the advent of more universal programming languages such as Java, however, programs may be written such that ideally they can be run on any type of computer. For example, a program written in Java ideally is able to run on a computer on which the Microsoft™ Windows™ operating system is installed, as well as on a computer on which the Apple™ MacOS™ operating system is installed. The computer programmer is not forced to rewrite the program for each different type of computer on which the program is desired to be run.
One manner by which programming languages such as Java provide for this write-once-run-anywhere capability is to have a two-step compilation process. A computer program is written in source code by a computer programmer, and is first compiled from source code to an intermediate code, which is known as byte code in the case of Java. When the program is run on a specific computer, a just-in-time compiler then compiles the byte code to machine code that the specific computer understands.
Furthermore, this machine code is executed on the specific computer in conjunction with a run-time system known as a virtual machine, which acts as an intermediary between the computer program and the operating system installed on the specific computer. However, the just-in-time compiler, in compiling the byte code to machine code, may need to ensure that various conditions and operations of the code (i.e., such as which registers are being used by the code, and which are unused) are being properly reported to the virtual machine. That is, the just-in-time compiler typically needs to interact with the virtual machine on the specific computer.
Typically, this is accomplished by inserting a function call within the machine code to the virtual machine for execution when the computer program is run. For example, what are known in the art as garbage collection routines (i.e., specialized memory management routines) are usually implemented at the virtual machine, such that during execution the machine code may have to at times call a garbage collection routine to provide information the routine needs in the form of what is known in the art as a write barrier instruction. Frequently, however, this run-time function call within the machine code becomes a bottleneck, slowing down the execution of the computer program.
A limited solution to this problem is to have the just-in-time compiler be aware of the specific routines within a virtual machine, such that the compiler can itself insert code for the routines when compiling byte code to machine code, thus eliminating the need for inserting a run-time function call to the virtual machine. However, a disadvantage to this solution is that it is counter to the philosophy of write-once-run-anywhere capability. If the specific routines change, without a corresponding change to the code inserted by the compiler, then the resulting machine code into which the incorrect code is inserted may not operate when the program is executed. That is, this limited solution trades flexibility for speed of execution. These and other disadvantages are addressed by the present invention.
SUMMARY OF THE INVENTION
The invention relates to code implants for compilers. In one embodiment of the invention, a computerized system includes a virtual machine, a module within the virtual machine, and a compiler. The module within the virtual machine provides a predetermined functionality (for example, in one particular embodiment, garbage collection). The compiler is desirably a just-in-time compiler, and compiles a first code (for example, in one particular embodiment, byte code in the case of the Java programming language) into a second code, (for example, in one particular embodiment, machine code). The compiler calls the module within the virtual machine during compilation to receive a code implant associated with the module for inclusion into the second code. In addition to this embodiment, the invention includes other embodiments, including computerized systems, methods, computers, and computer-readable media of varying scope.


REFERENCES:
patent: 5761513 (1998-06-01), Yellin et al.
patent: 5845298 (1998-12-01), O'Connor et al.
patent: 5848423 (1998-12-01), Ebrahim et al.
patent: 5857210 (1999-01-01), Tremblay et al.
patent: 5873104 (1999-02-01), Tremblay et al.
patent: 5903899 (1999-05-01), Steele, Jr.
patent: 6131191 (2000-10-01), Cierniak et al.
Hsieh, C.A., et al., “Optimizing NET Compilers for Improved Java Performance”,IEEE, No. 0018-9162/97, 67-75, (Jun. 1997).
Jones, R., et al., “Garbage Collection: Algorithms for Automatic Dynamic Memory Mangement”,John Wiley & Sons, 4 pages, (1996).

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Code implants for compilers does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Code implants for compilers, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Code implants for compilers will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2470738

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.