IP Library Granted Patent US 7,421,687
Granted Patent B1
US 7,421,687 · App. 10/939,194 · Granted Sep 2, 2008

Optimizing branch condition expressions in a JIT compiler

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,421,687
App. No.
10/939,194
Granted
Sep 2, 2008
Kind
B1
Abstract

A Java virtual machine includes a just in time (JIT) Java compiler. The JIT compiler includes at least one optimizer. Each of the at least one optimizer includes logic for recognizing a pattern in a received Java byte code, logic for optimizing the recognized pattern to produce optimized native code and logic for outputting optimized native code. A method of producing optimized native code is also provided.

Claims (41)

1. A computer system comprising:

a processor;

a memory system;

an operating system; and

a Java virtual machine including:

a just in time (JIT) Java compiler including at least one optimizer, each one of the at least one optimizer including:

logic for recognizing a pattern in a received Java byte code, wherein the pattern includes a conditional branch instruction;

logic for optimizing the recognized pattern to produce optimized native code including:

logic for analyzing the conditional branch instruction and a subsequent set of instructions;

logic for replacing the conditional branch instruction with a conditional instruction; and

logic for compiling the conditional instruction in native code; and

logic for outputting optimized native code.

2. The system of claim 1 , wherein the least one optimizer is at least partially coded in logic circuitry.

3. The system of claim 1 , wherein the least one optimizer is at least partially coded in software.

4. A computer system comprising:

a processor;

a memory system;

an operating system; and

a Java virtual machine including:

a just in time (JIT) Java compiler including at least one optimizer that is at least partially coded in logic circuitry, each one of the at least one optimizer including:

logic for recognizing a pattern in a received Java byte code that includes a branching instruction that can be optimized in a native code conditional instruction;

logic for optimizing the recognized pattern to produce optimized native code including:

logic for analyzing the conditional branch instruction and a subsequent set of instructions;

logic for replacing the conditional branch instruction with a conditional instruction; and

logic for compiling the conditional instruction in native code; and

logic for outputting optimized native code to a native processing platform.

5. A method of optimizing a Java byte code comprising:

receiving the Java byte code in a JIT compiler;

analyzing the Java byte code to determine if the Java byte code includes one of a plurality of preselected patterns wherein the pattern includes a conditional branch instruction;

producing an optimized native code from the Java byte code including one of the plurality of preselected patterns including:

analyzing the conditional branch instruction and a subsequent set of instructions;

replacing the conditional branch instruction with a conditional instruction; and

compiling the conditional instruction in native code; and

outputting the optimized native code.

6. The method of claim 5 , wherein the JT compiler is included in a Java virtual machine.

7. The method of claim 5 , wherein analyzing the Java byte code to determine if the Java byte code includes one of the plurality of preselected patterns includes recognizing a trigger-type instruction.

8. The method of claim 7 , wherein the trigger-type instruction is a forward branching instruction.

9. The method of claim 7 , wherein the plurality of preselected patterns are encoded in the JIT compiler.

10. The method of claim 7 , wherein if the trigger-type instruction is recognized, further comprising examining a number of subsequent instructions from the Java byte code.

11. The method of claim 10 , wherein the number of subsequent instructions to be examined is determined by the recognized trigger-type instruction.

12. The method of claim 5 , wherein outputting the optimized native code includes outputting the optimized native code to a processor platform.

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 037303/0349 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2004
From: YELLIN, FRANK N.; LAM, YIN ZIN MARK
To: SUN MICROSYSTEMS, INC
Reel/Frame 015784/0922 →