IP Library Granted Patent US 7,840,785
Granted Patent B1
US 7,840,785 · App. 11/227,417 · Granted Nov 23, 2010

Transparent concurrent atomic execution

Assignee: Azul Systems, 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,840,785
App. No.
11/227,417
Granted
Nov 23, 2010
Kind
B1
Abstract

Executing a block of code is disclosed. Executing includes receiving an indication that the block of code is to be executed using a synchronization mechanism and speculatively executing the block of code on a virtual machine. The block of code may include application code. The block of code does not necessarily indicate that the block of code should be speculatively executed.

Claims (56)

1. A method of executing an application and associated application code on a virtual machine, including:

receiving an indication of a synchronized block indicating that a block of the application code should be atomically executed such that intermediate states that represent partial execution of the block of application code are not observable by other applications;

determining whether to speculatively execute the block of application code based at least in part on whether a lock associated with the block of application code has been previously contended, wherein the determination comprises:

in the event that the lock has not been previously contended:

executing the block of application code without speculation; and

in the event that the lock has been previously contended:

determining whether to speculatively execute the block of application code based at least in part on dynamic information associated with an object associated with a synchronized block; and executing the block of application code speculatively; and

attempting to execute the block of application code again upon failure of speculation;

wherein:

the application code does not indicate that the block of application code should be speculatively executed; and

the lock associated with the block of application code having been previously contended includes at least one attempt to acquire the lock during previous executions of the block of application code by a previous thread.

2. A method as recited in claim 1 , wherein the block of application code includes a programming language object method.

3. A method as recited in claim 1 , wherein the block of application code includes an object oriented programming language object method.

4. A method as recited in claim 1 , wherein the indication includes a Java synchronized method.

5. A method as recited in claim 1 , wherein the indication includes a Java synchronized block.

6. A method as recited in claim 1 , wherein the indication includes a .NET synchronized method.

7. A method as recited in claim 1 , wherein the indication includes a .NET SyncBlock.

8. A method as recited in claim 1 , further including committing stores made to a cache as a result of speculative execution.

9. A method as recited in claim 1 , further including aborting stores made to a cache as a result of speculative execution.

10. A method as recited in claim 1 , wherein the block of application code is executed on a Java virtual machine.

11. A method as recited in claim 1 , wherein the block of application code is executed on a .NET Common Language Runtime (CLR).

12. A method as recited in claim 1 , further including executing the block of application code by acquiring a lock upon failure of speculation.

13. A method as recited in claim 1 , wherein the block of application code may be executed speculatively when associated with a first object, and may be executed without speculation when associated with a second object.

14. A method as recited in claim 1 , further including: in the event that it is determined that the block of application code is to be executed without speculation, acquiring a lock.

15. A method as recited in claim 1 , wherein the application code comprises a subset of all code associated with the application.

16. A method as recited in claim 1 , wherein determining whether to speculatively execute includes determining whether speculatively executing the block of application code is advised based at least in part on dynamic information associated with an object associated with a Java synchronized block.

17. A method as recited in claim 1 , wherein determining whether to speculatively execute includes determining whether speculatively executing the block of application code is advised based at least in part on dynamic information associated with an object associated with a .NET SyncBlock.

18. A system for executing an application and associated application code on a virtual machine, including:

a processor configured to:

receive an indication of a synchronized block indicating that a block of the application code should be atomically executed such that intermediate states that represent partial execution of the block of application code are not observable by other applications;

determine whether to speculatively execute the block of application code based at least in part on whether a lock associated with the block of application code has been previously contended, wherein the determination comprises:

in the event that the lock has not been previously contended:

execute the block of application code without speculation; and

in the event that the lock has been previously contended:

determine whether to speculatively execute the block of application code based at least in part on dynamic information associated with an object associated with a synchronized block; and execute the block of application code speculatively; and

attempt to execute the block of application code again upon failure of speculation;

wherein:

the application code does not indicate that the block of application code should be speculatively executed; and

the lock associated with the block of application code having been previously contended includes at least one attempt to acquire the lock during previous executions of the block of application code by a previous thread; and

a memory coupled with the processor, wherein the memory provides the processor with instructions.

19. A system as recited in claim 18 , wherein the indication includes a Java synchronized method.

20. A system as recited in claim 18 , wherein the block of application code includes a programming language object method.

21. A computer program product for executing an application and associated application code on a virtual machine, the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:

receiving an indication of a synchronized block indicating that a block of the application code should be atomically executed such that intermediate states that represent partial execution of the block of application code are not observable by the application other applications;

determining whether to speculatively execute the block of application code based at least in part on whether a lock associated with the block of application code has been previously contended, wherein the determination comprises:

in the event that the lock has not been previously contended:

executing the block of application code without speculation; and

in the event that the lock has been previously contended:

determining whether to speculatively execute the block of application code based at least in part on dynamic information associated with an object associated with a synchronized block; and

executing the block of application code speculatively; and

attempting to execute the block of application code again upon failure of speculation;

wherein:

the application code does not indicate that the block of application code should be speculatively executed; and

the lock associated with the block of application code having been previously contended includes at least one attempt to acquire the lock during previous executions of the block of application code by a previous thread.

22. A computer program product as recited in claim 21 , wherein the indication includes a Java synchronized method.

23. A computer program product as recited in claim 21 , wherein the block of application code includes a programming language object method.

Assignments (7)
RELEASE OF SECURITY INTERESTS IN PATENTS RECORDED AT REEL/FRAME 052293/0121 Recorded Dec 3, 2025
From: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
To: AZUL SYSTEMS, INC.
Reel/Frame 073466/0064 →
SECURITY INTEREST Recorded Dec 3, 2025
From: AZUL SYSTEMS, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 073828/0083 →
SECURITY INTEREST Recorded Apr 2, 2020
From: AZUL SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
Reel/Frame 052293/0121 →
RELEASE OF SECURITY INTEREST Recorded Feb 21, 2019
From: PARTNERS FOR GROWTH IV, L.P.
To: AZUL SYSTEMS, INC.
Reel/Frame 048411/0138 →
SECURITY INTEREST Recorded Mar 1, 2016
From: AZUL SYSTEMS, INC.
To: PARTNERS FOR GROWTH IV, L.P.
Reel/Frame 037959/0694 →
SECURITY INTEREST Recorded Feb 2, 2016
From: AZUL SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 037641/0665 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2005
From: TENE, GIL; WOLF, MICHAEL A.
To: AZUL SYSTEMS, INC.
Reel/Frame 017085/0662 →
Continuity (1)
Provisional Application 6061002800 · Sep 14, 2004