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

Unified Diff: src/d8.cc

Issue 1828633003: [Interpreter] Enable tracing of bytecode handler dispatches. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@count-bc
Patch Set: No need for a std::map Created 4 years, 8 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/d8.cc
diff --git a/src/d8.cc b/src/d8.cc
index c23c1a4a9c722f0839fd4ca4976c41e90b10cda0..e511df6b80b3cbf442d99a19e11f11e535d91a71 100644
--- a/src/d8.cc
+++ b/src/d8.cc
@@ -12,6 +12,7 @@
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
+#include <fstream>
#ifdef V8_SHARED
#include <assert.h>
@@ -41,6 +42,7 @@
#include "src/base/platform/platform.h"
#include "src/base/sys-info.h"
#include "src/basic-block-profiler.h"
+#include "src/interpreter/interpreter.h"
#include "src/snapshot/natives.h"
#include "src/utils.h"
#include "src/v8.h"
@@ -1275,6 +1277,53 @@ struct CounterAndKey {
inline bool operator<(const CounterAndKey& lhs, const CounterAndKey& rhs) {
return strcmp(lhs.key, rhs.key) < 0;
}
+
+void Shell::WriteInterpreterDispatchCounters(Isolate* isolate) {
+ std::ofstream stream(i::FLAG_trace_ignition_dispatches_output_file);
+
+ uintptr_t* handler_to_handler_dispatch_counters =
rmcilroy 2016/04/08 16:40:31 update variable name.
Stefano Sanfilippo 2016/04/08 17:01:05 Done.
+ reinterpret_cast<i::Isolate*>(isolate)
+ ->interpreter()
+ ->bytecode_dispatch_count_table();
+
+ static const int kCountersTableRowSize =
+ static_cast<int>(i::interpreter::Bytecode::kLast) + 1;
+
+ stream << '{';
rmcilroy 2016/04/08 16:40:31 nit - brief comment explaining this emits the outp
Stefano Sanfilippo 2016/04/08 17:01:05 Done.
+
+ for (int from_index = 0; from_index < kCountersTableRowSize; ++from_index) {
+ if (from_index > 0) stream << ",\n ";
+
+ i::interpreter::Bytecode from_bytecode =
+ i::interpreter::Bytecodes::FromByte(from_index);
+ stream << "\"" << i::interpreter::Bytecodes::ToString(from_bytecode)
+ << "\": {";
+
+ bool emitted_first_non_zero_cell_of_the_row = false;
rmcilroy 2016/04/08 16:40:31 This name is a bit long winded, how about just emi
Stefano Sanfilippo 2016/04/08 17:01:05 Done.
+ for (int to_index = 0; to_index < kCountersTableRowSize; ++to_index) {
+ uintptr_t counter =
+ handler_to_handler_dispatch_counters[from_index *
+ kCountersTableRowSize +
+ to_index];
+ if (counter > 0) {
+ if (emitted_first_non_zero_cell_of_the_row) {
+ stream << ", ";
+ } else {
+ emitted_first_non_zero_cell_of_the_row = true;
+ }
+
+ i::interpreter::Bytecode to_bytecode =
+ i::interpreter::Bytecodes::FromByte(to_index);
+ stream << '"' << i::interpreter::Bytecodes::ToString(to_bytecode)
+ << "\": " << counter;
+ }
+ }
+
+ stream << "}";
+ }
+ stream << '}';
+}
+
#endif // !V8_SHARED
@@ -1312,6 +1361,11 @@ void Shell::OnExit(v8::Isolate* isolate) {
"-------------+\n");
delete [] counters;
}
+
+ if (i::FLAG_trace_ignition_dispatches) {
+ WriteInterpreterDispatchCounters(isolate);
+ }
+
delete counters_file_;
delete counter_map_;
#endif // !V8_SHARED
« no previous file with comments | « src/d8.h ('k') | src/external-reference-table.cc » ('j') | src/interpreter/interpreter.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698