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

Unified Diff: src/profiler/tick-sample.h

Issue 1952393002: Split TickSample and Sampler. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 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
Index: src/profiler/tick-sample.h
diff --git a/src/profiler/tick-sample.h b/src/profiler/tick-sample.h
new file mode 100644
index 0000000000000000000000000000000000000000..85e3642472bf13f774e44dd31e2a9f7f7a1fd489
--- /dev/null
+++ b/src/profiler/tick-sample.h
@@ -0,0 +1,66 @@
+// Copyright 2013 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef V8_PROFILER_TICK_SAMPLE_H_
+#define V8_PROFILER_TICK_SAMPLE_H_
+
+#include "include/v8.h"
+
+#include "src/base/platform/time.h"
+#include "src/frames.h"
+
+namespace v8 {
+namespace internal {
+
+class Isolate;
+
+// ----------------------------------------------------------------------------
+// Sampler
+//
+// A sampler periodically samples the state of the VM and optionally
+// (if used for profiling) the program counter and stack pointer for
+// the thread that created it.
+
+// TickSample captures the information collected for each sample.
+struct TickSample {
+ // Internal profiling (with --prof + tools/$OS-tick-processor) wants to
+ // include the runtime function we're calling. Externally exposed tick
+ // samples don't care.
+ enum RecordCEntryFrame { kIncludeCEntryFrame, kSkipCEntryFrame };
+
+ TickSample()
+ : state(OTHER),
+ pc(NULL),
+ external_callback_entry(NULL),
+ frames_count(0),
+ has_external_callback(false),
+ update_stats(true),
+ top_frame_type(StackFrame::NONE) {}
+ void Init(Isolate* isolate, const v8::RegisterState& state,
+ RecordCEntryFrame record_c_entry_frame, bool update_stats);
+ static void GetStackSample(Isolate* isolate, const v8::RegisterState& state,
+ RecordCEntryFrame record_c_entry_frame,
+ void** frames, size_t frames_limit,
+ v8::SampleInfo* sample_info);
+ StateTag state; // The state of the VM.
+ Address pc; // Instruction pointer.
+ union {
+ Address tos; // Top stack value (*sp).
+ Address external_callback_entry;
+ };
+ static const unsigned kMaxFramesCountLog2 = 8;
+ static const unsigned kMaxFramesCount = (1 << kMaxFramesCountLog2) - 1;
+ Address stack[kMaxFramesCount]; // Call stack.
+ base::TimeTicks timestamp;
+ unsigned frames_count : kMaxFramesCountLog2; // Number of captured frames.
+ bool has_external_callback : 1;
+ bool update_stats : 1; // Whether the sample should update aggregated stats.
+ StackFrame::Type top_frame_type : 5;
+};
+
+
+} // namespace internal
+} // namespace v8
+
+#endif // V8_PROFILER_TICK_SAMPLE_H_

Powered by Google App Engine
This is Rietveld 408576698