IP Library Granted Patent US 7,032,216
Granted Patent B1
US 7,032,216 · App. 09/792,070 · Granted Apr 18, 2006

Native compilation and safe deployment of virtual machine code

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,032,216
App. No.
09/792,070
Granted
Apr 18, 2006
Kind
B1
Abstract

Fragile native compilation of virtual machine code is described, in which a native code optimizer inspects external code entities such as Java base classes and emits target code based on an inter-procedural analysis of the code and data structure invariants and other properties of the external code entity. The fragile compiler also records which properties of the external code entities were used to produce the optimized code in a “fragile set”, so that the virtual machine at which the compiled code is deployed and executed can detect if the recorded properties of the external code entities are compatible with the properties of the corresponding entities on the deployment virtual machine. If the code entities are incompatible, the compiled native code is rejected and the virtual machine reverts to interpreting the virtual machine code.

Claims (43)

1. A method of compiling virtual machine code into native code, comprising the steps of:

compiling the virtual machine code into the native code, including optimizing the native code based on a property of an external virtual machine entity that is outside of the virtual machine code;

recording an indication of the external virtual machine entity; and

constructing instructions for deploying the native code based on the recorded indication of the external virtual machine entity, wherein said instructions for deploying the native code, when executed within a run-time environment, cause one or more processors to perform the steps of:

determining whether the native code is compatible in the run-time environment based on the recorded indication of the external virtual machine entity;

if the native code is compatible, then loading the native code into the run-time environment; and

if the native code is not compatible, then rejecting the native code.

2. The method according to claim 1 , wherein the indication of the external virtual machine entity indicates the property of the external virtual machine entity.

3. The method according to claim 1 , wherein the indication of the external virtual machine entity includes a checksum of the bytes of the external virtual machine entity.

4. A method of compiling a class into native code, comprising the steps of:

compiling the class code into the native code, including optimizing the native code based on an external class outside of the class;

recording an indication of the external class in a fragile set; and

constructing instructions for deploying the native code based on the fragile set, wherein said instructions for deploying the native code, when executed within a run-time environment, cause one or more processors to perform the steps of:

determining whether the native code is compatible in the run-time environment based on the fragile set;

if the native code is compatible, then loading the native code into the run-time environment; and

if the native code is not compatible, then rejecting the native code.

5. The method according to claim 4 , wherein the indication of the external class indicates the property of the external class.

6. The method according to claim 5 , wherein the property includes a layout of an instance of the external class.

7. The method according to claim 5 , wherein the property includes a layout of a virtual table.

8. The method according to claim 4 , wherein the indication of the external class includes a checksum of the bytes of the external class.

9. The method according to claim 4 , wherein the indication of the external virtual machine entity includes an indication of a signature of the external class or a checksum of the bytes of the external class.

10. The method according to claim 9 , wherein:

the indication of the signature of the external class is used only if the external class contributes layout information.

11. The method according to claim 9 , wherein:

the checksum of the bytes of the external class is used if the external class contributes virtual machine code.

12. A method of loading a native code module from a deployment module into a run-time environment executing virtual machine code, comprising the steps of:

determining whether the native code is compatible with an external virtual machine entity that is included in the virtual machine code in the run-time environment;

if the native code is compatible, then loading the native code into the run-time environment; and

if the native code is not compatible, then rejecting the native code.

13. The method according to claim 12 , wherein the step of determining whether the native code is compatible with the external virtual machine entity includes the steps of:

accessing an indication of the external virtual machine entity that is associated with the deployment module; and

determining whether the native code is compatible with the external virtual machine entity based on the indication of the external virtual machine entity.

14. The method according to claim 13 , wherein the indication of the external virtual machine entity indicates a property of the external virtual machine entity.

15. The method according to claim 13 , wherein the indication of the external virtual machine entity includes a checksum of the bytes of the external virtual machine entity.

16. The method according to claim 13 , wherein the indication of the external virtual machine entity includes an indication of a signature of the external virtual machine entity or a checksum of the bytes of the external virtual machine entity.

17. The method according to claim 16 , wherein:

the indication of the signature of the external virtual machine entity is used only if the external virtual machine entity contributes layout information.

18. The method according to claim 16 , wherein:

the checksum of the bytes of the external virtual machine entity is used if the external virtual machine entity contributes virtual machine code.

19. The method according to claim 12 , further comprising the step of activating an interpreted version of the native code, if the native code is not compatible.

20. The method according to claim 12 , wherein the deployment module includes instructions for deploying the native code.

21. A computer non-volatile or volatile readable medium bearing instructions for compiling virtual machine code into native code, said instructions being arranged, upon execution by one or more processors, to cause the one or more processors to perform the steps of the method according to claim 1 .

22. A computer readable non-volatile or volatile medium bearing instructions for loading a native code module from a deployment module into a run-time environment executing virtual machine code, said instructions being arranged, upon execution by one or more processors, to cause the one or more processors to perform the steps of the method according to claim 4 .

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2003
From: ORACLE CORPORATION
To: ORACLE INTERNATIONAL CORPORATION (OIC)
Reel/Frame 014725/0372 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2001
From: NIZHEGORODOV, DMITRY
To: ORACLE CORPORATION
Reel/Frame 012194/0732 →