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

Unified Diff: src/counters.cc

Issue 2296243002: [RuntimeCallStats] Move tracing runtime instrumentation closer to the original version. (Closed)
Patch Set: Rebase Created 4 years, 3 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 | « src/counters.h ('k') | src/counters-inl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/counters.cc
diff --git a/src/counters.cc b/src/counters.cc
index 8a5908c9af3d1dc981235cb5481b1798d0c938c9..20d0ee45633781b5f49b45e86ab0872841746588 100644
--- a/src/counters.cc
+++ b/src/counters.cc
@@ -282,18 +282,15 @@ void RuntimeCallCounter::Dump(std::stringstream& out) {
}
// static
-void RuntimeCallStats::Enter(Isolate* isolate, RuntimeCallTimer* timer,
+void RuntimeCallStats::Enter(RuntimeCallStats* stats, RuntimeCallTimer* timer,
CounterId counter_id) {
- RuntimeCallStats* stats = isolate->counters()->runtime_call_stats();
RuntimeCallCounter* counter = &(stats->*counter_id);
timer->Start(counter, stats->current_timer_);
stats->current_timer_ = timer;
}
// static
-void RuntimeCallStats::Leave(Isolate* isolate, RuntimeCallTimer* timer) {
- RuntimeCallStats* stats = isolate->counters()->runtime_call_stats();
-
+void RuntimeCallStats::Leave(RuntimeCallStats* stats, RuntimeCallTimer* timer) {
if (stats->current_timer_ == timer) {
stats->current_timer_ = timer->Stop();
} else {
@@ -307,9 +304,8 @@ void RuntimeCallStats::Leave(Isolate* isolate, RuntimeCallTimer* timer) {
}
// static
-void RuntimeCallStats::CorrectCurrentCounterId(Isolate* isolate,
+void RuntimeCallStats::CorrectCurrentCounterId(RuntimeCallStats* stats,
CounterId counter_id) {
- RuntimeCallStats* stats = isolate->counters()->runtime_call_stats();
DCHECK_NOT_NULL(stats->current_timer_);
RuntimeCallCounter* counter = &(stats->*counter_id);
stats->current_timer_->counter_ = counter;
@@ -364,5 +360,45 @@ void RuntimeCallStats::Reset() {
#undef RESET_COUNTER
}
+const char* RuntimeCallStats::Dump() {
+ buffer_.str(std::string());
+ buffer_.clear();
+ buffer_ << "{";
+#define DUMP_COUNTER(name) \
+ if (this->name.count > 0) this->name.Dump(buffer_);
+ FOR_EACH_MANUAL_COUNTER(DUMP_COUNTER)
+#undef DUMP_COUNTER
+
+#define DUMP_COUNTER(name, nargs, result_size) \
+ if (this->Runtime_##name.count > 0) this->Runtime_##name.Dump(buffer_);
+ FOR_EACH_INTRINSIC(DUMP_COUNTER)
+#undef DUMP_COUNTER
+
+#define DUMP_COUNTER(name) \
+ if (this->Builtin_##name.count > 0) this->Builtin_##name.Dump(buffer_);
+ BUILTIN_LIST_C(DUMP_COUNTER)
+#undef DUMP_COUNTER
+
+#define DUMP_COUNTER(name) \
+ if (this->API_##name.count > 0) this->API_##name.Dump(buffer_);
+ FOR_EACH_API_COUNTER(DUMP_COUNTER)
+#undef DUMP_COUNTER
+
+#define DUMP_COUNTER(name) \
+ if (this->Handler_##name.count > 0) this->Handler_##name.Dump(buffer_);
+ FOR_EACH_HANDLER_COUNTER(DUMP_COUNTER)
+#undef DUMP_COUNTER
+ buffer_ << "\"END\":[]}";
+ const std::string& buffer_str = buffer_.str();
+ size_t length = buffer_str.size();
+ if (length > len_) {
+ buffer_c_str_.reset(new char[length + 1]);
+ len_ = length;
+ }
+ strncpy(buffer_c_str_.get(), buffer_str.c_str(), length + 1);
+ in_use_ = false;
+ return buffer_c_str_.get();
+}
+
} // namespace internal
} // namespace v8
« no previous file with comments | « src/counters.h ('k') | src/counters-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698