IP Library › Granted Patent US 8,522,222
Granted Patent B2
US 8,522,222 · App. 12/819,242 · Granted Aug 27, 2013

Tracing just-in-time compilation with pointers to local variables

Inventor: Nikolai Tillmann (Redmond, WA)
Assignee: Microsoft Corporation
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,522,222
App. No.
12/819,242
Granted
Aug 27, 2013
Kind
B2
Abstract

In one embodiment, a trace optimizing engine may create an optimized trace of an operation segment of a software program. A memory may store a trace of an operation segment and an inherited stack frame from the operation segment. An optimizing trace compiler may resolve a local pointer of the operation segment to a memory object and insert a guard in the trace that invalidates the trace if the local pointer does not resolve to the memory object. A just in time compiler may receive in the trace a stack pointer to the inherited stack frame, move the stack pointer to create a storage space, and store an intermediate value for a local variable in a temporary variable in the storage space.

Claims (49)

1. A machine-implemented method for just-in-time trace compilation, comprising:

collecting a trace of an operation segment of a profiling code;

resolving a local pointer of the operation segment to a memory object;

inserting a guard in the trace that invalidates the trace if the local pointer does not resolve to the memory object;

receiving in the trace a stack pointer to an inherited stack frame from the operation segment;

moving the stack pointer to create a storage space; and

storing an intermediate value for a local variable in a temporary variable in the storage space.

2. The method of claim 1 , wherein the memory object is at least one of a local variable, a struct, a stack location, a heap location, and an inner pointer.

3. The method of claim 1 , wherein the operation segment is a machine language loop.

4. The method of claim 3 , further comprising:

selecting the machine language loop based on a counter.

5. The method of claim 1 , further comprising:

converting the trace to an optimized trace; and

replacing the operation segment with the optimized trace.

6. The method of claim 1 , further comprising:

reconstructing a register to match a state of the operation segment if the trace is invalidated.

7. The method of claim 1 , further comprising:

creating a reconstructed stack frame using the intermediate value.

8. The method of claim 7 , further comprising:

storing the reconstructed stack frame in the storage space.

9. The method of claim 1 , further comprising:

moving the stack pointer to release the temporary variable.

10. A tangible non-transitory machine-readable medium having a set of instructions detailing a method stored thereon that when executed by one or more processors cause the one or more processors to perform the method, the method comprising:

collecting a trace of an operation segment of a profiling code;

resolving a local pointer of the operation segment to a memory object; and

inserting a guard in the trace that invalidates the trace if the local pointer does not resolve to the memory object

receiving in the trace a stack pointer to an inherited stack frame from the operation segment;

moving the stack pointer to create an auxiliary storage space; and

storing an intermediate value for a local variable in a temporary variable in the storage space.

11. The tangible machine-readable medium of claim 10 , wherein the method further comprises:

creating a reconstructed stack frame using the intermediate value for return to the profiling code.

12. The tangible machine-readable medium of claim 11 , wherein the method further comprises:

storing the reconstructed stack frame in the storage space.

13. The tangible machine-readable medium of claim 10 , wherein the method further comprises:

reconstructing a register to match a state of the operation segment.

14. The tangible machine-readable medium of claim 10 , wherein the method further comprises:

moving the stack pointer to release the temporary variable upon return to the profiling code.

15. The tangible machine-readable medium of claim 10 , wherein the method further comprises:

converting the trace to an optimized trace; and

replacing the operation segment with the optimized trace.

16. A trace optimizing engine for a computing device, comprising:

a memory to store a trace of an operation segment of a profiling code and an inherited stack frame from the operation segment; and

a processor to execute:

an optimizing trace compiler that resolves a local pointer of the operation segment to a memory object and inserts a guard in the trace that invalidates the trace if the local pointer does not resolve to the memory object; and

a just-in-time compiler that receives in the trace a stack pointer to the inherited stack frame, moves the stack pointer to create a storage space, and stores an intermediate value for a local variable in a temporary variable in the storage space.

17. The trace optimizing engine of claim 16 , wherein the just-in-time compiler creates a reconstructed stack frame using the intermediate value.

18. The trace optimizing engine of claim 17 , wherein the just-in-time compiler stores the reconstructed stack frame in the storage space.

19. The trace optimizing engine of claim 16 , wherein the just-in-time compiler moves the stack pointer to release the temporary variable upon return to the profiling code.

20. The trace optimizing engine of claim 16 , wherein the operation segment is a machine language loop selected based on a counter.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2010
From: TILLMANN, NIKOLAI
To: MICROSOFT CORPORATION
Reel/Frame 024648/0060 →
Continuity (1)
Related Publication 20110314452A1 · Dec 22, 2011