DescriptionFix edge case where profiler would miss the caller of the top frame.
Some stubs (and intrinsics) do not push a frame onto the stack leaving
the frame pointer in the caller.
PC -> STUB
FP -> DART3 <-+
DART2 <-| <- TOP FRAME RETURN ADDRESS.
DART1 <-|
.....
In this case, traversing the linked stack frames will not collect a PC
inside DART3. The stack will incorrectly be: STUB, DART2, DART1.
In Dart code, after pushing the FP onto the stack, an IP in the current
function is pushed onto the stack as well. This stack slot is called
the PC marker. We can use the PC marker to insert DART3 into the stack
so that it will correctly be: STUB, DART3, DART2, DART1. Note the
inserted PC may not accurately reflect the true return address from STUB.
R=asiva@google.com, srdjan@google.com
Committed: https://code.google.com/p/dart/source/detail?r=35762
Patch Set 1 #Patch Set 2 : #Patch Set 3 : #Patch Set 4 : #
Total comments: 9
Patch Set 5 : #
Total comments: 14
Patch Set 6 : #Patch Set 7 : #Patch Set 8 : #Patch Set 9 : #Patch Set 10 : #
Total comments: 4
Patch Set 11 : #
Messages
Total messages: 8 (0 generated)
|