From 8fc97078caeb97eb74b860a89280404a37665564 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 23 Aug 2016 16:16:22 -0700 Subject: [PATCH] =?UTF-8?q?Add=20=E2=80=9C=E2=80=94endless-trace-buffer?= =?UTF-8?q?=E2=80=9D=20to=20switch=20to=20an=20endless=20buffer=20from=20a?= =?UTF-8?q?=20ring=20buffer=20while=20tracing.=20(flutter/engine#2966)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- engine/src/flutter/common/settings.h | 1 + engine/src/flutter/runtime/dart_init.cc | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/engine/src/flutter/common/settings.h b/engine/src/flutter/common/settings.h index 7187412975..b0c8bc376a 100644 --- a/engine/src/flutter/common/settings.h +++ b/engine/src/flutter/common/settings.h @@ -20,6 +20,7 @@ struct Settings { bool start_paused = false; bool enable_dart_checked_mode = false; bool trace_startup = false; + bool endless_trace_buffer = false; std::string aot_snapshot_path; std::string aot_isolate_snapshot_file_name; std::string aot_vm_isolate_snapshot_file_name; diff --git a/engine/src/flutter/runtime/dart_init.cc b/engine/src/flutter/runtime/dart_init.cc index 9bc9a188da..0ebe20564c 100644 --- a/engine/src/flutter/runtime/dart_init.cc +++ b/engine/src/flutter/runtime/dart_init.cc @@ -115,6 +115,9 @@ static const char* kDartStartPausedArgs[]{ static const char* kDartTraceStartupArgs[]{ "--timeline_streams=Compiler,Dart,Embedder,GC", +}; + +static const char* kDartEndlessTraceBufferArgs[]{ "--timeline_recorder=endless", }; @@ -339,7 +342,8 @@ DartJniIsolateData* GetDartJniDataForCurrentIsolate() { #if DART_ALLOW_DYNAMIC_RESOLUTION -constexpr char kDartVmIsolateSnapshotBufferName[] = "kDartVmIsolateSnapshotBuffer"; +constexpr char kDartVmIsolateSnapshotBufferName[] = + "kDartVmIsolateSnapshotBuffer"; constexpr char kDartIsolateSnapshotBufferName[] = "kDartIsolateSnapshotBuffer"; constexpr char kInstructionsSnapshotName[] = "kInstructionsSnapshot"; constexpr char kDataSnapshotName[] = "kDataSnapshot"; @@ -422,7 +426,8 @@ void* _DartSymbolLookup(const char* symbol_name) { const char* file_name = symbol_asset.file_name; const std::string* settings_override = reinterpret_cast( - reinterpret_cast(&settings) + symbol_asset.settings_offset); + reinterpret_cast(&settings) + + symbol_asset.settings_offset); if (!settings_override->empty()) file_name = settings_override->c_str(); @@ -580,8 +585,16 @@ void InitDartVM() { if (settings.start_paused) PushBackAll(&args, kDartStartPausedArgs, arraysize(kDartStartPausedArgs)); - if (settings.trace_startup) + if (settings.endless_trace_buffer || settings.trace_startup) { + // If we are tracing startup, make sure the trace buffer is endless so we + // don't lose early traces. + PushBackAll(&args, kDartEndlessTraceBufferArgs, + arraysize(kDartEndlessTraceBufferArgs)); + } + + if (settings.trace_startup) { PushBackAll(&args, kDartTraceStartupArgs, arraysize(kDartTraceStartupArgs)); + } for (size_t i = 0; i < settings.dart_flags.size(); i++) args.push_back(settings.dart_flags[i].c_str());