IP Library Granted Patent US 7,080,366
Granted Patent B2
US 7,080,366 · App. 09/858,827 · Granted Jul 18, 2006

Dynamic compiler and method of compiling code to generate dominant path and to handle exceptions

Assignee: Esmertec AG
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,080,366
App. No.
09/858,827
Granted
Jul 18, 2006
Kind
B2
Abstract

A dynamic compiler and method of compiling code to generate a dominate path and handle exceptions. The dynamic compiler includes an execution history recorder that is configured to record the number of times a fragment of code is interpreted. When the code is interpreted a threshold number of times, the code is queued for compilation. The execution history recorder also keeps track of where transfer of control came from and where transfer of control goes to for each fragment of code that is executed, thereby allowing for compilation of a dominant path of code. If the execution of code deviates from the dominant path of compiled code (such as when an exception occurs), a fallback interpreter is utilized to interpret the fragment of code to be executed.

Claims (14)

1. A dynamic compiler, comprising:

an execution history recorder configured to record a fragment of code and the number of times the fragment of code is executed;

the execution history recorder having an interpreter, a compiler manager coupled thereto and a threshold number of executions for a threshold comparison with a recorded number of times to determine a dominant path having a fragment to be compiled therein;

a compiler queue of fragments to be compiled for receiving the fragment to be compiled and a successor fragment wherein the successor fragment is determined by the execution history recorder to be the most likely next fragment to be executed after the fragment to be compiled in accordance with a list of successor fragments and a count associated with each successor fragment in the list of successor fragments;

a compiler coupled to the compiler queue and arranged (i) to receive a received fragment to be compiled and the corresponding successor fragment of the received fragment to be compiled, and (ii) to create a compiled dominant path from the received fragment to be compiled, the corresponding successor fragment being compiled in accordance with its correspondence with the fragment to be compiled and independently of whether the number of executions of the corresponding successor fragment has reached the threshold number of executions;

the execution history recorder being further configured to record from where a transfer of control into the compiled dominant path came and to where control is transferred out of the compiled dominant path;

a queue duration determination including (i) a determination whether the length of the compiler queue has exceeded a predetermined length and (ii) a determination whether the predetermined queue length has been exceeded for a predetermined period of time;

a threshold tuner operable to adjust the threshold number of the execution history recorder in accordance with the queue duration determination to maintain the number of fragments to be compiled within predetermined limits; and

the compiler manager having a memory manager to make compilation more likely for fragments of code reaching the threshold relatively more times than for fragments of code reaching the threshold relatively fewer times by entering the fragments to be compiled into the same end of the compiler queue from which they are taken.

2. A dynamic compiler as claimed in claim 1 , wherein the compiler manager administers the queue of frequently executed fragments of code for compilation.

3. A dynamic compiler as claimed in claim 1 , further comprising a deleter coupled to the memory manager.

4. A dynamic compiler as claimed in claim 1 wherein the number of times a fragment of code is executed is recorded when the fragment of code is executed by the interpreter.

5. A dynamic compiler as claimed in claim 1 , wherein the dynamic compiler is a multi-threaded system and the compiler runs on a separate thread so the progress of code execution is not blocked.

6. A dynamic compiler as claimed in claim 1 , wherein the execution history recorder is further configured to alert the compiler manager when the fragment of code has been executed the threshold number of times.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CORPORATION
Reel/Frame 054486/0422 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: RPX CLEARINGHOUSE LLC; RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 054244/0566 →
PATENT SECURITY AGREEMENT Recorded Oct 23, 2020
From: RPX CLEARINGHOUSE LLC; RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 054198/0029 →
SECURITY INTEREST Recorded Jun 29, 2018
From: RPX CORPORATION
To: JEFFERIES FINANCE LLC
Reel/Frame 046486/0433 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2017
From: MYRIAD GROUP, AG
To: RPX CORPORATION
Reel/Frame 044087/0323 →
PATENTEE CHANGE OF ADDRESS Recorded Feb 5, 2016
From: MYRIAD GROUP, AG
To: MYRIAD GROUP, AG
Reel/Frame 037701/0866 →
CHANGE OF NAME Recorded Jul 9, 2009
From: ESMERTEC AG
To: MYRIAD GROUP AG
Reel/Frame 022928/0730 →
CHANGE OF NAME Recorded Jul 7, 2009
From: ESMERTEC AG
To: MYRIAD GROUP AG
Reel/Frame 022917/0525 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2004
From: INSIGNIA SOLUTIONS, INC.
To: ESMERTEC AG
Reel/Frame 014852/0297 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2003
From: INSIGNIA SOLUTIONS, PLC
To: ESMERTEC AG
Reel/Frame 014250/0761 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 17, 2001
From: KRAMSKOY, JEREMY PAUL; CHARNELL, WILLIAM THOMAS; DARNELL, STEPHEN; DIAS, BIAISE ABEL ALEC; GUTHRIE, PHILIPPA JOY; PLUMMER, WAYNE; SEXTON, JEREMY JAMES; WYNN, MICHAEL JOHN; RAUTENBACH, KEITH; THOMAS, STEPHEN PAUL
To: INSIGNIA SOLUTIONS, PLC
Reel/Frame 012093/0983 →
Priority Claims (1)
GB 9825102.8 · Nov 16, 1998 · national
Continuity (2)
Continuation PCTGB990078800 · Mar 16, 1999
Related Publication 20020112227A1 · Aug 15, 2002