Index: src/platform-win32.cc |
diff --git a/src/platform-win32.cc b/src/platform-win32.cc |
index 9b09aa3458f234625fbe16d1302ce164f7da7f42..54eed4a3b54a142590ddf5f06587f22de4890b7e 100644 |
--- a/src/platform-win32.cc |
+++ b/src/platform-win32.cc |
@@ -1806,37 +1806,32 @@ class Sampler::PlatformData : public Malloced { |
// Loop until the sampler is disengaged, keeping the specified samling freq. |
for ( ; sampler_->IsActive(); Sleep(sampler_->interval_)) { |
#ifdef ENABLE_CPP_PROFILES_PROCESSOR |
- if (Logger::state() == GC) continue; |
- |
- TickSample* sample = NULL; |
+ TickSample* sample = CpuProfiler::TickSampleEvent(); |
+ if (sample == NULL) continue; |
+ sample->pc = NULL; // Impossible value if sampling succeeds. |
+ sample->frames_count = 0; |
#else |
TickSample sample_obj; |
TickSample* sample = &sample_obj; |
+#endif // ENABLE_CPP_PROFILES_PROCESSOR |
// We always sample the VM state. |
sample->state = Logger::state(); |
-#endif // ENABLE_CPP_PROFILES_PROCESSOR |
- |
// If profiling, we record the pc and sp of the profiled thread. |
if (sampler_->IsProfiling() |
&& SuspendThread(profiled_thread_) != (DWORD)-1) { |
context.ContextFlags = CONTEXT_FULL; |
if (GetThreadContext(profiled_thread_, &context) != 0) { |
-#ifdef ENABLE_CPP_PROFILES_PROCESSOR |
- sample = CpuProfiler::TickSampleEvent(); |
-#endif |
- if (sample != NULL) { |
#if V8_HOST_ARCH_X64 |
- sample->pc = reinterpret_cast<Address>(context.Rip); |
- sample->sp = reinterpret_cast<Address>(context.Rsp); |
- sample->fp = reinterpret_cast<Address>(context.Rbp); |
+ sample->pc = reinterpret_cast<Address>(context.Rip); |
+ sample->sp = reinterpret_cast<Address>(context.Rsp); |
+ sample->fp = reinterpret_cast<Address>(context.Rbp); |
#else |
- sample->pc = reinterpret_cast<Address>(context.Eip); |
- sample->sp = reinterpret_cast<Address>(context.Esp); |
- sample->fp = reinterpret_cast<Address>(context.Ebp); |
+ sample->pc = reinterpret_cast<Address>(context.Eip); |
+ sample->sp = reinterpret_cast<Address>(context.Esp); |
+ sample->fp = reinterpret_cast<Address>(context.Ebp); |
#endif |
- sampler_->SampleStack(sample); |
- } |
+ sampler_->SampleStack(sample); |
} |
ResumeThread(profiled_thread_); |
} |