|
|
Created:
3 years, 10 months ago by Jarin Modified:
3 years, 10 months ago Reviewers:
Benedikt Meurer CC:
v8-reviews_googlegroups.com, Yang Target Ref:
refs/pending/heads/master Project:
v8 Visibility:
Public. |
Description[profiler] Fix attribution for the top-most interpreted frame.
Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame.
For example, consider the program
function inner() {
var s = 0;
for (var i = 0; i < 100000; i++) {
s += i * i;
}
return s;
}
function trivial() {
return inner();
}
for (var i = 0; i < 2000; i++) {
trivial();
}
Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce:
[JavaScript]:
ticks total nonlib name
4885 83.4% 83.5% Function: ~trivial a.js:15:17
759 13.0% 13.0% Function: ~inner a.js:7:15
After this change, we get
[JavaScript]:
ticks total nonlib name
5486 95.9% 96.2% Function: ~inner a.js:7:15
4 0.1% 0.1% Function: ~trivial a.js:15:17
Review-Url: https://codereview.chromium.org/2667253004
Cr-Original-Commit-Position: refs/heads/master@{#42894}
Committed: https://chromium.googlesource.com/v8/v8/+/d07f6540c1f9628ed2ba1fa6507c90db07ccc5f5
Review-Url: https://codereview.chromium.org/2667253004
Cr-Commit-Position: refs/heads/master@{#42924}
Committed: https://chromium.googlesource.com/v8/v8/+/e82880b65d6cf73892523f0d0a054838540e75c5
Patch Set 1 #Patch Set 2 : Tweak #Patch Set 3 : Added conservative check for interpreted frame. #Patch Set 4 : ASAN workaround #Messages
Total messages: 30 (20 generated)
Description was changed from ========== [profiler] Fix attribution for the top-most interpreted frame. ========== to ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter from to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, --prof and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 ==========
The CQ bit was checked by jarin@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
jarin@chromium.org changed reviewers: + bmeurer@chromium.org
Could you take a look, please?
lgtm
The CQ bit was checked by jarin@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Description was changed from ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter from to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, --prof and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 ========== to ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter from to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 ==========
Description was changed from ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter from to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 ========== to ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 ==========
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: v8_linux_arm_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_arm_rel_ng/builds/...) v8_linux_arm_rel_ng_triggered on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_arm_rel_ng_trigger...)
The CQ bit was checked by jarin@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by jarin@chromium.org
The CQ bit was checked by jarin@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from bmeurer@chromium.org Link to the patchset: https://codereview.chromium.org/2667253004/#ps40001 (title: "Added conservative check for interpreted frame.")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 40001, "attempt_start_ts": 1486044824278760, "parent_rev": "8ae463d736c1a85d66babf2593fd4397162a80f0", "commit_rev": "d07f6540c1f9628ed2ba1fa6507c90db07ccc5f5"}
Message was sent while issue was closed.
Description was changed from ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 ========== to ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 Review-Url: https://codereview.chromium.org/2667253004 Cr-Commit-Position: refs/heads/master@{#42894} Committed: https://chromium.googlesource.com/v8/v8/+/d07f6540c1f9628ed2ba1fa6507c90db07c... ==========
Message was sent while issue was closed.
Committed patchset #3 (id:40001) as https://chromium.googlesource.com/v8/v8/+/d07f6540c1f9628ed2ba1fa6507c90db07c...
Message was sent while issue was closed.
ASan is complaining about SafeStackFrameIterator, see e.g. https://build.chromium.org/p/client.v8/builders/V8%20Mac64%20ASAN/builds/1073...
Message was sent while issue was closed.
A revert of this CL (patchset #3 id:40001) has been created in https://codereview.chromium.org/2670843005/ by machenbach@chromium.org. The reason for reverting is: Flaky crashes on mac asan: https://build.chromium.org/p/client.v8/builders/V8%20Mac64%20ASAN/builds/10739.
Message was sent while issue was closed.
Description was changed from ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 Review-Url: https://codereview.chromium.org/2667253004 Cr-Commit-Position: refs/heads/master@{#42894} Committed: https://chromium.googlesource.com/v8/v8/+/d07f6540c1f9628ed2ba1fa6507c90db07c... ========== to ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 Review-Url: https://codereview.chromium.org/2667253004 Cr-Commit-Position: refs/heads/master@{#42894} Committed: https://chromium.googlesource.com/v8/v8/+/d07f6540c1f9628ed2ba1fa6507c90db07c... ==========
The CQ bit was checked by jarin@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from bmeurer@chromium.org Link to the patchset: https://codereview.chromium.org/2667253004/#ps60001 (title: "ASAN workaround")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 60001, "attempt_start_ts": 1486124588145240, "parent_rev": "bff24112faa64c43f00cb68c0fbd5f6987f248ab", "commit_rev": "e82880b65d6cf73892523f0d0a054838540e75c5"}
Message was sent while issue was closed.
Description was changed from ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 Review-Url: https://codereview.chromium.org/2667253004 Cr-Commit-Position: refs/heads/master@{#42894} Committed: https://chromium.googlesource.com/v8/v8/+/d07f6540c1f9628ed2ba1fa6507c90db07c... ========== to ========== [profiler] Fix attribution for the top-most interpreted frame. Before this change, we attributed samples for the top-most interpreter frame to the second-topmost frame if we were in a bytecode handler with elided frame. With this change we try to detect that we are in a handler without a frame. If we are, we do not drop the topmost frame. For example, consider the program function inner() { var s = 0; for (var i = 0; i < 100000; i++) { s += i * i; } return s; } function trivial() { return inner(); } for (var i = 0; i < 2000; i++) { trivial(); } Before this change, d8 --prof --ignition --nocrankshaft and linux-tick-processor would produce: [JavaScript]: ticks total nonlib name 4885 83.4% 83.5% Function: ~trivial a.js:15:17 759 13.0% 13.0% Function: ~inner a.js:7:15 After this change, we get [JavaScript]: ticks total nonlib name 5486 95.9% 96.2% Function: ~inner a.js:7:15 4 0.1% 0.1% Function: ~trivial a.js:15:17 Review-Url: https://codereview.chromium.org/2667253004 Cr-Original-Commit-Position: refs/heads/master@{#42894} Committed: https://chromium.googlesource.com/v8/v8/+/d07f6540c1f9628ed2ba1fa6507c90db07c... Review-Url: https://codereview.chromium.org/2667253004 Cr-Commit-Position: refs/heads/master@{#42924} Committed: https://chromium.googlesource.com/v8/v8/+/e82880b65d6cf73892523f0d0a054838540... ==========
Message was sent while issue was closed.
Committed patchset #4 (id:60001) as https://chromium.googlesource.com/v8/v8/+/e82880b65d6cf73892523f0d0a054838540... |