Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(677)

Unified Diff: runtime/vm/profiler.cc

Issue 455833002: Only read PC marker when we are executing Dart code (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/profiler.cc
diff --git a/runtime/vm/profiler.cc b/runtime/vm/profiler.cc
index 83e2235f51636015c73abf847d78940388e50d31..444a5794af298c96df4cedc4fce1e47b828e44cb 100644
--- a/runtime/vm/profiler.cc
+++ b/runtime/vm/profiler.cc
@@ -1681,6 +1681,7 @@ static void SetPCMarkerIfSafe(Sample* sample) {
// the pc marker, because we are reading it from a different thread on
// Windows. The marker is below fp and the previous page may be a guard
// page.
+ COMPILE_ASSERT(kPcMarkerSlotFromFp < 0);
const intptr_t kPageMask = VirtualMemory::PageSize() - 1;
if ((sample->fp() & kPageMask) == 0) {
return;
@@ -2048,12 +2049,10 @@ void Profiler::RecordSampleInterruptCallback(
sample->set_user_tag(isolate->user_tag());
sample->set_sp(state.sp);
sample->set_fp(state.fp);
-#if !(defined(TARGET_OS_WINDOWS) && defined(TARGET_ARCH_X64))
- // It is never safe to read other thread's stack unless on Win64
- // other thread is inside Dart code.
- SetPCMarkerIfSafe(sample);
-#endif
-
+ if (isolate->vm_tag() == VMTag::kDartTagId) {
+ // We should only read the PC marker when executing Dart code.
+ SetPCMarkerIfSafe(sample);
+ }
// Walk the call stack.
if (FLAG_profile_vm) {
// Always walk the native stack collecting both native and Dart frames.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698