IP Library Granted Patent US 7,386,686
Granted Patent B2
US 7,386,686 · App. 10/402,520 · Granted Jun 10, 2008

Inlining with stack trace cache-based dynamic profiling

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,386,686
App. No.
10/402,520
Granted
Jun 10, 2008
Kind
B2
Abstract

A method and system are provided for improving inlining using stack trace cache-based dynamic profiling. In one embodiment, a relationship map is provided to map a key representing a caller-callee relationship with a corresponding value indicating a frequency of call site executions. Whether a last stack frame of a stack frame trace is cached is determined. A caller-callee relationship is recorded if the last stack frame is not cached, wherein the caller-callee relationship is recorded in the relationship map, and the relationship map is updated with the recorded caller-callee relationship and then monitored via a recompilation scheduler, the monitoring to determine when a compilation or recompilation of callers and callees is to be performed. A turning on or turning off of dynamic profiling is conducted to perform partial unwinding of the frames in the stack trace.

Claims (50)

1. A method, comprising:

providing a relationship map to map a key representing a caller-callee relationship with a corresponding value indicating a frequency of call site executions, wherein the frequency of call site executions indicates a number of times a call was executed;

determining whether a last stack frame of a stack frame trace is cached, wherein stack frames in the stack frame trace represent caller-callee relationships;

recording a caller-callee relationship if the last stack frame is not cached, wherein the caller-callee relationship is recorded in the relationship map;

updating the relationship map with the recorded caller-callee relationship;

monitoring the relationship map via a recompilation scheduler, the monitoring to determine when a compilation or recompilation of callers and callees is to be performed; and

performing turning on or turning off of dynamic profiling to perform unwinding of the frames in the stack trace.

2. The method of claim 1 , further comprising:

initializing the stack frame trace with a default value;

tagging the last stack frame that is not cached as cached; and

unwinding to a next stack frame of the stack frame trace.

3. The method of claim 2 , wherein initializing comprises initializing an instruction pointer and a stack frame data structure, the stack frame data structure having a method lookup table.

4. The method of claim 3 , wherein the method lookup table comprises

code addresses corresponding to a caller and a callee of the caller-callee relationship, the code addresses having starting and ending addresses of each method.

5. The method of claim 1 , further comprising:

detecting the next stack frame of the stack frame trace;

determining whether the next stack frame of the stack frame trace is cached; and

exiting unwinding if the next stack frame is cached.

6. The method of claim 1 , further comprising:

detecting a bottom stack frame of the stack frame trace; and

exiting unwinding if the bottom stack frame of the stack frame trace has been reached.

7. The method of claim 1 , further comprising upon completion of full unwinding, tagging the stack frames of the stack frame trace as cached.

8. The method of claim 1 , wherein the stack frames comprise stack trace information indexed by pairs of instruction pointers and stack pointers.

9. A system, comprising:

a storage medium; and

a processor coupled wit the storage medium, the processor to:

provide a relationship map to map a key representing a caller-callee relationship with a corresponding value indicating a frequency of call site executions, wherein the frequency of call site executions indicates a number of times a call was executed;

determine whether a last stack frame of a stack frame trace is cached wherein stack frames in the stack frame trace represent caller-callee relationships;

record a caller-callee relationship if the last stack frame is not cached, wherein the caller-callee relationship is recorded in the relationship map;

update the relationship map with the recorded caller-callee relationship;

monitor the relationship map via a recompilation scheduler, the monitoring to determine when a compilation or recompilation of callers and callees is to be performed; and

perform turning on or turning off of dynamic profiling to perform unwinding of the frames in the stack trace.

10. The system of claim 9 , further comprises a compiler, the compiler having one or more of a Java Virtual Machine, a Java Just-In-Time compiler, a Java compiler, and a Java chip.

11. The system of claim 9 , wherein the processor is further to provide a recompilation scheduler to check the relationship map to periodically monitor caller-callee pairs.

12. A tangible machine-readable storage medium having instructions which, when executed, cause a machine to:

provide a relationship map to map a key representing a caller-callee relationship with a corresponding value indicating a frequency of call site executions, wherein the frequency of call site executions indicates a number of times a call was executed;

determine whether a last stack frame of a stack frame trace is cached wherein stack frames in the stack frame trace represent caller-callee relationships;

record a caller-callee relationship if the last stack frame is not cached, wherein the caller-callee relationship is recorded in the relationship map;

update the relationship map with the recorded caller-callee relationship;

monitor the relationship map via a recompilation scheduler, the monitoring to determine when a compilation or recompilation of callers and callees is to be performed; and

perform turning on or turning off of dynamic profiling to perform unwinding of the frames in the stack trace.

13. The tangible machine-readable storage medium of claim 12 , wherein the instructions when executed, further cause the machine to:

initializing the stack frame trace with a default value;

tagging the last stack frame that is not cached as cached; and

unwinding to a next stack frame of the stack frame trace.

14. The tangible machine-readable storage medium of claim 13 , wherein initializing comprises initializing an instruction pointer and a stack frame data structure, the stack frame data structure having a method lookup table.

15. The tangible machine-readable storage medium of claim 12 , wherein the instructions when executed, further cause the machine to:

detect the next stack frame of the stack frame trace;

determine whether the next frame of The stack frame trace is cached; and

exit unwinding if the next stack frame is in cache.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2016
From: INTEL CORPORATION
To: BEIJING XIAOMI MOBILE SOFTWARE CO., LTD.
Reel/Frame 037733/0440 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2003
From: WU, GANSHA; LUEH, GUEI-YUAN
To: INTEL CORPORATION, INC.
Reel/Frame 014310/0261 →