| Index: src/d8.cc
|
| diff --git a/src/d8.cc b/src/d8.cc
|
| index 169bc263934a8f1344419ac53ee0d88b8431d50f..287c6a0f7a00f98c3c63f7942a9013ad30ea2626 100644
|
| --- a/src/d8.cc
|
| +++ b/src/d8.cc
|
| @@ -19,6 +19,7 @@
|
|
|
| #ifndef V8_SHARED
|
| #include <algorithm>
|
| +#include <fstream>
|
| #include <vector>
|
| #endif // !V8_SHARED
|
|
|
| @@ -1276,6 +1277,21 @@ struct CounterAndKey {
|
| inline bool operator<(const CounterAndKey& lhs, const CounterAndKey& rhs) {
|
| return strcmp(lhs.key, rhs.key) < 0;
|
| }
|
| +
|
| +void Shell::WriteIgnitionDispatchCountersFile(v8::Isolate* isolate) {
|
| + HandleScope handle_scope(isolate);
|
| + Local<Context> context = Context::New(isolate);
|
| + Context::Scope context_scope(context);
|
| +
|
| + Local<Object> dispatch_counters = reinterpret_cast<i::Isolate*>(isolate)
|
| + ->interpreter()
|
| + ->GetDispatchCountersObject();
|
| + std::ofstream dispatch_counters_stream(
|
| + i::FLAG_trace_ignition_dispatches_output_file);
|
| + dispatch_counters_stream << *String::Utf8Value(
|
| + JSON::Stringify(context, dispatch_counters).ToLocalChecked());
|
| +}
|
| +
|
| #endif // !V8_SHARED
|
|
|
|
|
| @@ -1314,12 +1330,6 @@ void Shell::OnExit(v8::Isolate* isolate) {
|
| delete [] counters;
|
| }
|
|
|
| - if (i::FLAG_trace_ignition_dispatches) {
|
| - reinterpret_cast<i::Isolate*>(isolate)
|
| - ->interpreter()
|
| - ->WriteDispatchCounters();
|
| - }
|
| -
|
| delete counters_file_;
|
| delete counter_map_;
|
| #endif // !V8_SHARED
|
| @@ -2484,6 +2494,12 @@ int Shell::Main(int argc, char* argv[]) {
|
| RunShell(isolate);
|
| }
|
|
|
| +#ifndef V8_SHARED
|
| + if (i::FLAG_ignition && i::FLAG_trace_ignition_dispatches) {
|
| + WriteIgnitionDispatchCountersFile(isolate);
|
| + }
|
| +#endif
|
| +
|
| // Shut down contexts and collect garbage.
|
| evaluation_context_.Reset();
|
| #ifndef V8_SHARED
|
|
|