Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

Systems and methods for increasing the execution speed of virtual machine instructions for a function are provided. A portion of the virtual machine instructions of the function are compiled into native machine instructions so that the function includes both virtual and native machine instructions. Execution of the native machine instructions may be accomplished by overwriting a virtual machine instruction of the function with a virtual machine instruction that specifies execution of the native machine instructions. Additionally, the original virtual machine instruction may be stored so that the original virtual machine instructions can be regenerated.

InventorsLars Bak, Robert Griesemer
Original AssigneeSun Microsystems, Inc.
Primary Examiner: Lewis A. Bullock, Jr.
Attorney: Beyer Weaver & Thomas LLP
Current U.S. Classification717/151; 712/E09.037; 717/139; 717/148; 717/159; 718/1
International Classification: G06F009/45; G06F009/455

View patent at USPTO
Search USPTO Assignment Database
Download USPTO Public PAIR data

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US5329611Jun 21, 1993Jul 12, 1994International Business Machines Corp.Scalable flow virtual learning neurocomputer
US5367685Dec 22, 1992Nov 22, 1994FirstPerson, Inc.Method and apparatus for resolving data references in generated code
US5586328Oct 21, 1994Dec 17, 1996Microsoft CorporationModule dependency based incremental compiler and method
US5758162Jan 22, 1996May 26, 1998Matsushita Electric Industrial Co., LTD.Program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions
US5768593Mar 22, 1996Jun 16, 1998Connectix CorporationDynamic cross-compilation system and method
US5845298Apr 23, 1997Dec 1, 1998Sun Microsystems, Inc.Write barrier system and method for trapping garbage collection page boundary crossing pointer stores
US5898850Mar 31, 1997Apr 27, 1999International Business Machines CorporationMethod and system for executing a non-native mode-sensitive instruction within a computer system
US5905895Mar 7, 1997May 18, 1999International Business Machines CorporationMethod and system for optimizing non-native bytecodes before bytecode interpretation
US5925123Jan 23, 1997Jul 20, 1999Sun Microsystems, Inc.Processor for executing instruction sets received from a network or from a local memory
US5953736Apr 23, 1997Sep 14, 1999Sun Microsystems, Inc.Write barrier system and method including pointer-specific instruction variant replacement mechanism
US5995754Oct 6, 1997Nov 30, 1999Sun Microsystems, Inc.Method and apparatus for dynamically optimizing byte-coded programs
US6038394Jan 8, 1998Mar 14, 2000Loran Network Management Ltd.Condition handling using script interpreters
US6044220Feb 25, 1997Mar 28, 2000Motorola, Inc.Method and apparatus for operating a data processor to execute software written using a foreign instruction set
US6118940Nov 25, 1997Sep 12, 2000International Business Machines Corp.Method and apparatus for benchmarking byte code sequences
US6170083Nov 12, 1997Jan 2, 2001Intel CorporationMethod for performing dynamic optimization of computer code
US6292883Sep 28, 1998Sep 18, 2001U.S. Philips CorporationConverting program-specific virtual machine instructions into variable instruction set
US6332216Mar 9, 1999Dec 18, 2001Hewlett-Packard CompanyHybrid just-in-time compiler that consumes minimal resource
US6349377Sep 28, 1998Feb 19, 2002U.S. Philips CorporationProcessing device for executing virtual machine instructions that includes instruction refeeding means

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US7124283Jun 10, 2003Oct 17, 2006Renesas Technology Corp.Hardware accelerator for a platform-independent code
US7574700Mar 31, 2005Aug 11, 2009Sun Microsystems, Inc.Supporting dynamically-typed languages in typed assembly languages
US7669191Jun 14, 2005Feb 23, 2010Xilinx, Inc.Compile-time dispatch of operations on type-safe heterogeneous containers
US7840951Aug 22, 2003Nov 23, 2010Oracle America, Inc.Reducing the overhead involved in executing native code in a virtual machine through binary reoptimization
US8160725May 20, 2009Apr 17, 2012VEGA Grieshaber KGEnergy saving control for a field device

Claims

1. In a computer system, a method for increasing the execution speed of virtual machine instructions at runtime, the method comprising:

receiving a first virtual machine instruction;

generating, at runtime, a new virtual machine instruction that represents or references one or more native instructions that can be executed instead of said first virtual machine instruction; and

executing said new virtual machine instruction instead of said first virtual machine instruction.

2. The method of claim 1, further comprising overwriting a selected virtual machine instruction with a new virtual machine instruction, the new virtual machine instruction specifying execution of the at least one native machine instruction.

3. The method of claim 2, wherein the new virtual instruction includes a pointer to the at least one native machine instruction.

4. The method of claim 2, further comprising storing the selected virtual machine instruction before it is overwritten.

5. The method of claim 2, further comprising storing a back pointer to a location of the new virtual machine instruction.

6. The method of claim 2, wherein the new virtual machine instruction includes a pointer to a data block in which is stored the at least one native machine instruction, a copy of the selected virtual machine instruction, and a back pointer to location of the new virtual machine instruction.

7. The method of claim 6, further comprising generating the virtual machine instruction that were input by storing the copy of the selected virtual machine instruction stored in the data block at the location specified by the back pointer.

8. In a computer system, a method for increasing the execution speed of virtual machine instructions, the method comprising:

inputting virtual machine instructions for a function;

compiling a portion of the function into at least one native machine instruction so that the function includes both virtual and native machine instruction;

representing said at least one native machine instruction with a new virtual machine instruction that is executed after the compiling of the fuction.

9. A stored data structure of hybrid virtual and native machine instructions, comprising:

a sequence of virtual machine instructions for a function including a new virtual machine instruction;

at least one native machine instruction specified by the new virtual machine instruction for execution with the sequence of virtual machine instructions; and

a computer readable medium that stores the sequence of virtual machine instructions and the at least one native machine instruction;

wherein

the at least one native machine instruction is stored in a data block, and
the data block stores a copy of a selected virtual machine instruction that was overwritten in the sequence of virtual machine instructions by the new virtual machine instruction.

10. The stored data structure of claim 9, wherein the new virtual machine instruction includes a pointer to the at least one native machine instruction.

11. The stored data structure of claim 9, wherein the block stores a pointer to a location of the new virtual machine instruction in the sequence of virtual machine instructions.

12. The stored data structure of claim 9, wherein the data block is stored in an array of blocks.

13. The stored data structure of claim 9, wherein the at least one native machine instruction is generated from a compilation of a portion of the sequence of virtual machine instructions beginning with the selected virtual machine instruction.

14. The stored data structure of claim 9, wherein the virtual machine instruction are Java virtual machine instructions.