From 33961a5d4d6d1c4faf0be2f791dc8b19cef9a3e9 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 3 Dec 2015 12:43:37 -0800 Subject: [PATCH] Instrument dart_init.cc and remove the idle wait on the service load port --- sky/engine/core/script/dart_init.cc | 52 ++++++++++++++++++----------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/sky/engine/core/script/dart_init.cc b/sky/engine/core/script/dart_init.cc index 4f7225932f6..e7a9d45c3a6 100644 --- a/sky/engine/core/script/dart_init.cc +++ b/sky/engine/core/script/dart_init.cc @@ -109,6 +109,7 @@ Dart_Isolate IsolateCreateCallback(const char* script_uri, Dart_IsolateFlags* flags, void* callback_data, char** error) { + TRACE_EVENT0("flutter", __func__); if (IsServiceIsolateURL(script_uri)) { DartState* dart_state = new DartState(); Dart_Isolate isolate = Dart_CreateIsolate( @@ -206,6 +207,7 @@ const char* kDartApplicationLibraryPath = static void* DartLookupSymbolInLibrary(const char* symbol_name, const char* library) { + TRACE_EVENT0("flutter", __func__); if (symbol_name == nullptr) { return nullptr; } @@ -219,6 +221,7 @@ static void* DartLookupSymbolInLibrary(const char* symbol_name, } void* _DartSymbolLookup(const char* symbol_name) { + TRACE_EVENT0("flutter", __func__); if (symbol_name == nullptr) { return nullptr; } @@ -242,6 +245,7 @@ static const uint8_t* PrecompiledInstructionsSymbolIfPresent() { } bool IsRunningPrecompiledCode() { + TRACE_EVENT0("flutter", __func__); return PrecompiledInstructionsSymbolIfPresent() != nullptr; } @@ -258,8 +262,12 @@ bool IsRunningPrecompiledCode() { #endif // DART_ALLOW_DYNAMIC_RESOLUTION void InitDartVM() { - TRACE_EVENT0("flutter", "InitDartVM"); - dart::bin::BootstrapDartIo(); + TRACE_EVENT0("flutter", __func__); + + { + TRACE_EVENT0("flutter", "dart::bin::BootstrapDartIo"); + dart::bin::BootstrapDartIo(); + } DartMojoInternal::SetHandleWatcherProducerHandle( mojo::dart::HandleWatcher::Start()); @@ -279,28 +287,32 @@ void InitDartVM() { args.append(kDartCheckedModeArgs, arraysize(kDartCheckedModeArgs)); CHECK(Dart_SetVMFlags(args.size(), args.data())); - // This should be called before calling Dart_Initialize. - DartDebugger::InitDebugger(); - CHECK( - Dart_Initialize( - reinterpret_cast(DART_SYMBOL(kDartVmIsolateSnapshotBuffer)), - PrecompiledInstructionsSymbolIfPresent(), IsolateCreateCallback, - nullptr, // Isolate interrupt callback. - UnhandledExceptionCallback, IsolateShutdownCallback, - // File IO callbacks. - nullptr, nullptr, nullptr, nullptr, - // Entroy source - nullptr, - // VM service assets archive - GetVMServiceAssetsArchiveCallback) == nullptr); + + { + TRACE_EVENT0("flutter", "DartDebugger::InitDebugger"); + // This should be called before calling Dart_Initialize. + DartDebugger::InitDebugger(); + } + + { + TRACE_EVENT0("flutter", "Dart_Initialize"); + CHECK(Dart_Initialize(reinterpret_cast( + DART_SYMBOL(kDartVmIsolateSnapshotBuffer)), + PrecompiledInstructionsSymbolIfPresent(), + IsolateCreateCallback, + nullptr, // Isolate interrupt callback. + UnhandledExceptionCallback, IsolateShutdownCallback, + // File IO callbacks. + nullptr, nullptr, nullptr, nullptr, + // Entroy source + nullptr, + // VM service assets archive + GetVMServiceAssetsArchiveCallback) == nullptr); + } // Allow streaming of stdout and stderr by the Dart vm. Dart_SetServiceStreamCallbacks(&ServiceStreamListenCallback, &ServiceStreamCancelCallback); - - // Wait for load port- ensures handle watcher and service isolates are - // running. - Dart_ServiceWaitForLoadPort(); } } // namespace blink