IP Library Granted Patent US 7,831,965
Granted Patent B1
US 7,831,965 · App. 10/918,674 · Granted Nov 9, 2010

Method and apparatus for facilitating intermediate linking of binary files in a virtual machine

Assignee: Oracle America, Inc.
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,831,965
App. No.
10/918,674
Granted
Nov 9, 2010
Kind
B1
Abstract

One embodiment of the present invention provides a system that resolves references in an in-place execution file for a platform-independent virtual machine into physical addresses. During operation, the system receives an in-place execution file in which references have been replaced with in-place encoded metadata specifying attributes of the references. The system then resolves a reference by obtaining in-place encoded metadata for the reference from a location in the in-place execution file, using the in-place encoded metadata to determine an address of an associated referent, and then replacing the in-place encoded metadata at the location in the in-place execution file with the address of the referent.

Claims (80)

1. A method for executing a JAVA application using a platform-independent virtual machine installed in a memory-constrained device, comprising:

receiving an in-place execution file in the memory-constrained device, wherein the in-place execution file is a standard binary image file of the JAVA application comprising a sequence of words, and wherein one or more words in the sequence comprise an unresolved reference that includes in-place encoded metadata specifying attributes of the reference;

resolving a reference within a word in the in-place execution file by,

obtaining the in-place encoded metadata in the word for the unresolved reference;

if a first bit in the in-place encoded metadata has a first value indicating that the in-place encoded metadata includes an offset, replacing an existing offset in the in-place encoded metadata with an adjusted offset, wherein the adjusted offset is computed by summing the existing offset and a difference between an address of the in-place execution file at creation and a load address of the in-place execution file, or

if the first bit in the in-place encoded metadata has a second value indicating that the in-place encoded metadata includes a symbolic reference,

obtaining a type from the in-place encoded metadata;

obtaining a sub-type from the in-place encoded metadata, wherein the sub-type is interpreted based on the obtained type;

obtaining specific data from the in-place encoded metadata, wherein the specific data is interpreted based on the obtained sub-type; and

using the type, the subtype, and the specific data to look up an address of the referent; and

replacing the symbolic reference in the in-place encoded metadata with the address; and

executing the in-place execution file in the memory-constrained device.

2. The method of claim 1 , wherein prior to resolving references in the in-place execution file, the method further comprises:

loading a collection of executable files; and

converting the collection of executable files into the in-place execution file.

3. The method of claim 2 , wherein the collection of executable files is a JAVA Archive File.

4. The method of claim 1 , wherein the type includes at least one of:

text;

data; and

a heap.

5. The method of claim 1 , wherein the sub-type includes

an instance class.

6. The method of claim 1 , wherein the platform-independent virtual machine is a JAVA Virtual Machine.

7. The method of claim 1 , wherein using the type, the subtype, and the specific data to look up an address of the referent comprises:

using the specific data to look up a class in a class list, wherein the specific data includes a class ID, and wherein the referent is a class; and

retrieving the address of the class from the class list.

8. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for executing a JAVA application using a platform-independent virtual machine installed in a memory-constrained device, the method comprising:

receiving the in-place execution file in the memory-constrained device, wherein the in-place execution file is a standard binary image file of the JAVA application comprising a sequence of words, and wherein one or more words in the sequence comprise an unresolved reference that includes in-place encoded metadata specifying attributes of the reference;

resolving a reference within a word the in-place execution file by,

obtaining the in-place encoded metadata in the word for the unresolved reference;

a first bit in the in-place encoded metadata has a first value indicating that the in-place encoded metadata includes an offset, replacing an existing offset in the in-place encoded metadata with an adjusted offset, wherein the adjusted offset is computed by summing the existing offset and a difference between an address of the in-place execution file at creation and a load address of the in-place execution file, or

if the first bit in the in-place encoded metadata has a second value indicating that the in-place encoded metadata includes a symbolic reference,

obtaining a type from the in-place encoded metadata;

obtaining a sub-type from the in-place encoded metadata, wherein the sub-type is interpreted based on the obtained type;

obtaining specific data from the in-place encoded metadata, wherein the specific data is interpreted based on the obtained sub-type; and

using the type, the subtype, and the specific data to look up an address of the referent; and

replacing the symbolic reference in the in-place encoded metadata with the address; and

executing the in-place execution file in the memory-constrained device.

9. The computer-readable storage medium of claim 8 , wherein prior to resolving references in the in-place execution file, the method further comprises:

loading a collection of executable files; and

converting the collection of executable files into the in-place execution file.

10. The computer-readable storage medium of claim 9 , wherein the collection of executable files is a JAVA Archive File.

11. The computer-readable storage medium of claim 8 , wherein the type includes at least one of:

text;

data; and

a heap.

12. The computer-readable storage medium of claim 8 , wherein the sub-type includes

an instance class.

13. The computer-readable storage medium of claim 8 , wherein the platform-independent virtual machine is a JAVA Virtual Machine.

14. The computer-readable storage medium of claim 8 , wherein using the type, the subtype, and the specific data to look up an address of the referent comprises:

using the specific data to look up a class in a class list, wherein the specific data includes a class ID, and wherein the referent is a class; and

retrieving the address of the class from the class list.

15. An apparatus for executing a JAVA application using a platform-independent virtual machine installed in a memory-constrained device, comprising:

a processor;

a memory;

a receiving mechanism configured to receive the in-place execution file in the memory-constrained device, wherein the in-place execution file is a standard binary image file of the JAVA application comprising a sequence of words; and wherein one or more words in the sequence comprise an unresolved reference that includes in-place encoded metadata specifying attributes of the reference;

a resolution mechanism configured to resolve a reference within a word in the in-place execution file by,

obtaining the in-place encoded metadata in the word for the unresolved reference;

if a first bit in the in-place encoded metadata has a first value indicating that the in-place encoded metadata includes an offset, replacing an existing offset in the in-place encoded metadata with an adjusted offset, wherein the adjusted offset is computed by summing the existing offset and a difference between an address of the in-place execution file at creation and a load address of the in-place execution file, or

if the first bit in the in-place encoded metadata has a second value indicating that the in-place encoded metadata includes a symbolic reference,

obtaining a type from the in-place encoded metadata;

obtaining a sub-type from the in-place encoded metadata, wherein the sub-type is interpreted based on the obtained type;

obtaining specific data from the in-place encoded metadata, wherein the specific data is interpreted based on the obtained sub-type; and

using the type, the subtype, and the specific data to look up an address of the referent; and

replacing the symbolic reference in the in-place encoded metadata with the address; and

an execution mechanism configured to execute the in-place execution file in the memory-constrained device.

16. The apparatus of claim 15 , further comprising:

a loading mechanism configured to load a collection of executable files; and

a conversion mechanism configured to convert the collection of executable files into the in-place execution file.

17. The apparatus of claim 16 , wherein the collection of executable files is a JAVA Archive File.

18. The apparatus of claim 15 , wherein the type includes at least one of:

text;

data; and

a heap.

19. The apparatus of claim 15 , wherein the sub-type includes

an instance class.

20. The apparatus of claim 15 , wherein the platform-independent virtual machine is a JAVA Virtual Machine.

21. The apparatus of claim 15 , wherein using the type, the subtype, and the specific data to look up an address of the referent comprises:

using the specific data to look up a class in a class list, wherein the specific data includes a class ID, and wherein the referent is a class; and

retrieving the address of the class from the class list.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037306/0556 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 12, 2004
From: PITTORE, WILLIAM F.; TAIVALSAARI, ANTERO K.P.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 015691/0665 →