|
|
DescriptionProfiler: resolve top of stack address to a function
When we cannot map top frame's pc to a code object and top frame is JS frame we now assume that it was a frameless invocation of a native function (e.g. __fmod) and try to resolve address on top of the stack into a JS function.
BUG=chromium:529931
LOG=Y
Committed: https://crrev.com/aee75623aad0af2d43135b8dbbfe948168ce2a24
Cr-Commit-Position: refs/heads/master@{#30688}
Patch Set 1 #
Total comments: 2
Patch Set 2 : moved tos analysis before line number resolution #Messages
Total messages: 23 (10 generated)
yurys@chromium.org changed reviewers: + alph@chromium.org
The CQ bit was checked by yurys@chromium.org to run a CQ dry run
The CQ bit was unchecked by yurys@chromium.org
The CQ bit was checked by yurys@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1315683007/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1315683007/1
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_presubmit on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_presubmit/builds/5662)
yurys@chromium.org changed reviewers: + jkummerow@chromium.org
lgtm https://codereview.chromium.org/1315683007/diff/1/src/profile-generator.cc File src/profile-generator.cc (right): https://codereview.chromium.org/1315683007/diff/1/src/profile-generator.cc#ne... src/profile-generator.cc:645: *entry++ = code_map_.FindEntry(sample.tos, &start); You can omit the second argument.
What happens if sample.tos is not a valid pc? For example, we might be in a frameless stub invocation, and the stub may have pushed a value onto the stack (which it'll pop before it returns); this happens frequently on ia32 where we have very few registers. LGTM if such cases don't cause trouble.
On 2015/09/10 10:51:06, Jakob wrote: > What happens if sample.tos is not a valid pc? For example, we might be in a > frameless stub invocation, and the stub may have pushed a value onto the stack > (which it'll pop before it returns); this happens frequently on ia32 where we > have very few registers. > > LGTM if such cases don't cause trouble. This is possible though seems unlikely since the value on top of the stack should be a valid address of generated code, otherwise code_map_.FindEntry will return NULL and we are fine. We decided that it is a reasonable trade-off. https://codereview.chromium.org/1315683007/diff/1/src/profile-generator.cc File src/profile-generator.cc (right): https://codereview.chromium.org/1315683007/diff/1/src/profile-generator.cc#ne... src/profile-generator.cc:645: *entry++ = code_map_.FindEntry(sample.tos, &start); On 2015/09/10 06:20:36, alph wrote: > You can omit the second argument. Done. Also I did more clean-up in another CL: https://codereview.chromium.org/1332683002/
The CQ bit was checked by yurys@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1315683007/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1315683007/20001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by yurys@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from alph@chromium.org, jkummerow@chromium.org Link to the patchset: https://codereview.chromium.org/1315683007/#ps20001 (title: "moved tos analysis before line number resolution")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1315683007/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1315683007/20001
Message was sent while issue was closed.
Committed patchset #2 (id:20001)
Message was sent while issue was closed.
Patchset 2 (id:??) landed as https://crrev.com/aee75623aad0af2d43135b8dbbfe948168ce2a24 Cr-Commit-Position: refs/heads/master@{#30688}
Message was sent while issue was closed.
We're getting a new msan flake once in a while since this change. See e.g.: http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20s... http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20s... Could you take a look if there's a connection? |