IP Library Granted Patent US 8,091,077
Granted Patent B1
US 8,091,077 · App. 11/545,578 · Granted Jan 3, 2012

System and method for handling rare events by modification of executable code

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 8,091,077
App. No.
11/545,578
Granted
Jan 3, 2012
Kind
B1
Abstract

Systems and methods for the efficient handling of rare events by modification of executable code is provided. The present invention eliminates the need for event checking code and handling in the primary execution path of compiled code by using a patch table to modify code during execution. Accordingly, event handling does not introduce additional instructions to the primary execution path, and thus will not interfere with compiler optimizations for maximal performance along the primary execution path. The present invention, therefore, provides event handling for events that occur rarely while reducing the size of the code for execution on memory-constrained devices.

Claims (34)

1. A method in a data processing system for generating an event handling patch table for a program, the data processing system including a compiler for compiling the program and a memory, comprising the steps of:

selecting at least one location in a function of the program to perform event handling;

at compile-time, generating a patch table including substitution code for event handling at the selected location during execution of compiled program code of the function, wherein the generating includes recording in the patch table the at least one selected location and a corresponding event handler that is not part of the program unless an event of the corresponding event handler is triggered; and

storing the patch table in association with the compiled program code; wherein upon detecting the occurrence of the event to be handled at run-time, the patch table is consulted to patch the substitution code into the compiled program code to call the corresponding event handler at the at least one selected location free of polling.

2. The method of claim 1 , wherein the step of selecting at least one location in the program includes selecting a branch instruction.

3. The method of claim 1 , wherein the step of selecting at least one location in the program includes selecting a function call.

4. The method of claim 1 , wherein the step of selecting at least one location in the program includes selecting a function return.

5. The method of claim 1 , wherein the step of selecting at least one location in the program includes selecting long linear sequence of instructions.

6. The method of claim 1 , further comprising compressing the patch table.

7. The method of claim 6 , wherein the step of compressing the patch table includes:

determining whether two consequent entries in the patch table differ only by an offset value; and

removing the entry with the greatest offset value, when the two consequent entries differ only by an offset value.

8. The method of claim 1 , wherein the at least one location comprises an offset value.

9. A computer-readable medium storing computer executable instructions for performing a method of event handling using a patch table during execution of a compiled program, the method comprising the steps of:

selecting at least one location in a function of a program to perform event handling;

at compile-time, generating a patch table including substitution code for event handling at the selected location during execution of compiled program code of the function, wherein the generating includes recording in the patch table the at least one selected location and a corresponding event handler that is not part of the program unless an event of the corresponding event handler is triggered;

storing the patch table in association with the compiled program code;

detecting the occurrence of the event to be handled at run-time;

patching based on the patch table the substitution code into the compiled program code to call the corresponding event handler for handling the event at the at least one selected location free of polling; and

executing the corresponding event handler.

10. The computer-readable medium of claim 9 , further comprising replacing an instruction at the at least one location with a call to a global event handler.

11. The computer-readable medium of claim 10 , further comprising calling the global event handler to execute the corresponding event handler.

12. The computer-readable medium of claim 11 , further comprising storing the program state of the compiled program code before executing the corresponding event handler.

13. The computer-readable medium of claim 9 , further comprising determining whether the event is detected while user code is active.

14. The computer-readable medium of claim 13 , wherein when user code is not active, waiting until program control returns to a user thread before handling the event.

15. The computer-readable medium of claim 14 , further comprising storing the detection of the event.

16. The computer-readable medium of claim 9 , where in the program is executed on a Java Virtual Machine.

17. A data processing system for handling events during execution of program code, comprising:

a memory storing a virtual machine;

a processor for executing the virtual machine; and

a compiler stored on the memory for:

selecting at least one location in a function of a program to perform event handling;

at compile-time, generating a patch table including substitution code for event handling at the selected location during execution of compiled program code of the function, wherein the generating includes recording in the patch table the at least one selected location and a corresponding event handler that is not part of the program unless an event of the corresponding event handler is triggered; and

storing the patch table in association with the compiled program code; wherein upon detecting the occurrence of the event to be handled at run-time, the virtual machine consults the patch table to patch the substitution code into the compiled program code to call the corresponding event handler at the selected location free of polling.

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 037311/0134 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2006
From: PLISS, OLEG A.; LAM, IOI K.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 018401/0848 →