|
Fix issue 553: function frame is skipped in profile when compare stub is called.
The problem appeared due to a fact that stubs doesn't create a stack
frame, reusing the stack frame of the caller function. When building
stack traces, the current function is retrieved from PC, and its
callees are retrieved by traversing the stack backwards. Thus, for
stubs, the stub itself was discovered via PC, and then stub's caller's
caller was retrieved from stack.
To fix this problem, a pointer to JSFunction object is now captured
from the topmost stack frame, and is saved into stack trace log
record. Then a simple heuristics is applied whether a referred
function should be added to decoded stack, or not, to avoid reporting
the same function twice (from PC and from the pointer.)
BUG= 553
TEST=added to mjsunit/tools/tickprocessor
Committed: http://code.google.com/p/v8/source/detail?r=3673
Total comments: 10
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+399 lines, -103 lines) |
Patch |
|
M |
src/frames.h
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
|
M |
src/handles.cc
|
View
|
1
|
1 chunk |
+6 lines, -2 lines |
0 comments
|
Download
|
|
M |
src/log.h
|
View
|
1
|
4 chunks |
+20 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/log.cc
|
View
|
1
|
8 chunks |
+93 lines, -20 lines |
0 comments
|
Download
|
|
M |
src/mark-compact.h
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
|
M |
src/mark-compact.cc
|
View
|
1
|
5 chunks |
+15 lines, -11 lines |
0 comments
|
Download
|
|
M |
src/platform.h
|
View
|
|
1 chunk |
+12 lines, -5 lines |
0 comments
|
Download
|
|
M |
src/platform-freebsd.cc
|
View
|
|
1 chunk |
+9 lines, -9 lines |
0 comments
|
Download
|
|
M |
src/platform-linux.cc
|
View
|
|
1 chunk |
+12 lines, -12 lines |
0 comments
|
Download
|
|
M |
src/platform-macos.cc
|
View
|
|
1 chunk |
+3 lines, -3 lines |
0 comments
|
Download
|
|
M |
src/platform-win32.cc
|
View
|
|
1 chunk |
+6 lines, -6 lines |
0 comments
|
Download
|
|
M |
src/runtime.cc
|
View
|
1
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
|
M |
src/spaces.cc
|
View
|
|
1 chunk |
+1 line, -3 lines |
0 comments
|
Download
|
|
M |
test/cctest/test-log.cc
|
View
|
|
2 chunks |
+4 lines, -3 lines |
0 comments
|
Download
|
|
M |
test/cctest/test-log-stack-tracer.cc
|
View
|
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
|
M |
test/mjsunit/tools/logreader.js
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
|
M |
test/mjsunit/tools/tickprocessor.js
|
View
|
|
2 chunks |
+5 lines, -2 lines |
0 comments
|
Download
|
|
A |
test/mjsunit/tools/tickprocessor-test.func-info
|
View
|
|
1 chunk |
+29 lines, -0 lines |
0 comments
|
Download
|
|
M |
test/mjsunit/tools/tickprocessor-test.log
|
View
|
1
|
1 chunk |
+14 lines, -13 lines |
0 comments
|
Download
|
|
A |
test/mjsunit/tools/tickprocessor-test-func-info.log
|
View
|
1
|
1 chunk |
+13 lines, -0 lines |
0 comments
|
Download
|
|
M |
tools/codemap.js
|
View
|
|
1 chunk |
+12 lines, -0 lines |
0 comments
|
Download
|
|
M |
tools/logreader.js
|
View
|
|
1 chunk |
+3 lines, -2 lines |
0 comments
|
Download
|
|
M |
tools/profile.js
|
View
|
1
|
4 chunks |
+52 lines, -0 lines |
0 comments
|
Download
|
|
M |
tools/tickprocessor.js
|
View
|
1
|
5 chunks |
+41 lines, -4 lines |
0 comments
|
Download
|
|
M |
tools/tickprocessor.py
|
View
|
1
|
6 chunks |
+40 lines, -4 lines |
0 comments
|
Download
|
Total messages: 3 (0 generated)
|