Chromium Code Reviews| Index: runtime/vm/dart_api_impl.cc |
| diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc |
| index ddc4591ec468d102924b7dc67f332e7a5ef73884..cd2415b4b1ce9cc8aaf111790f94d0fd25c28828 100644 |
| --- a/runtime/vm/dart_api_impl.cc |
| +++ b/runtime/vm/dart_api_impl.cc |
| @@ -1289,6 +1289,16 @@ DART_EXPORT Dart_Handle Dart_DebugName() { |
| } |
| +DART_EXPORT bool Dart_RegisterEmbedderThread(const char* name) { |
| + OSThread* os_thread = OSThread::Current(); |
| + if (os_thread == NULL) { |
| + os_thread = new OSThread(); |
| + OSThread::SetCurrent(os_thread); |
| + os_thread->set_name(name); |
| + } |
| + return true; |
| +} |
| + |
| DART_EXPORT void Dart_EnterIsolate(Dart_Isolate isolate) { |
| CHECK_NO_ISOLATE(Isolate::Current()); |
| @@ -5728,6 +5738,10 @@ DART_EXPORT bool Dart_TimelineGetTrace(Dart_StreamConsumer consumer, |
| DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer, |
| void* user_data) { |
| + // To support various embedders, it must be possible to call this function |
| + // from a thread for which we have not entered an Isolate and set up a Thread |
| + // TLS object. Therefore, a Zone may not be available, a StackZone cannot be |
| + // created, and no ZoneAllocated objects can be allocated. |
| if (consumer == NULL) { |
| return false; |
| } |
| @@ -5736,8 +5750,6 @@ DART_EXPORT bool Dart_GlobalTimelineGetTrace(Dart_StreamConsumer consumer, |
| // Nothing has been recorded. |
| return false; |
| } |
| - Thread* T = Thread::Current(); |
| - StackZone zone(T); |
| Timeline::ReclaimCachedBlocksFromThreads(); |
|
Ivan Posva
2015/12/01 05:08:42
Please add a test that does request a timeline tra
zra
2015/12/01 16:55:13
Done.
|
| JSONStream js; |
| TimelineEventFilter filter; |