| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "include/dart_api.h" | 5 #include "include/dart_api.h" | 
| 6 #include "include/dart_mirrors_api.h" | 6 #include "include/dart_mirrors_api.h" | 
| 7 #include "include/dart_native_api.h" | 7 #include "include/dart_native_api.h" | 
| 8 | 8 | 
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" | 
| 10 #include "lib/stacktrace.h" | 10 #include "lib/stacktrace.h" | 
| (...skipping 1592 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1603   ml.Notify(); | 1603   ml.Notify(); | 
| 1604 } | 1604 } | 
| 1605 | 1605 | 
| 1606 | 1606 | 
| 1607 DART_EXPORT Dart_Handle Dart_RunLoop() { | 1607 DART_EXPORT Dart_Handle Dart_RunLoop() { | 
| 1608   Thread* T = Thread::Current(); | 1608   Thread* T = Thread::Current(); | 
| 1609   Isolate* I = T->isolate(); | 1609   Isolate* I = T->isolate(); | 
| 1610   CHECK_API_SCOPE(T); | 1610   CHECK_API_SCOPE(T); | 
| 1611   CHECK_CALLBACK_STATE(T); | 1611   CHECK_CALLBACK_STATE(T); | 
| 1612   API_TIMELINE_BEGIN_END; | 1612   API_TIMELINE_BEGIN_END; | 
| 1613   Monitor monitor; | 1613   // The message handler run loop does not expect to have a current isolate | 
| 1614   MonitorLocker ml(&monitor); | 1614   // so we exit the isolate here and enter it again after the runloop is done. | 
|  | 1615   ::Dart_ExitIsolate(); | 
| 1615   { | 1616   { | 
| 1616     // The message handler run loop does not expect to have a current isolate | 1617     Monitor monitor; | 
| 1617     // so we exit the isolate here and enter it again after the runloop is done. | 1618     MonitorLocker ml(&monitor); | 
| 1618     Dart_ExitIsolate(); |  | 
| 1619     RunLoopData data; | 1619     RunLoopData data; | 
| 1620     data.monitor = &monitor; | 1620     data.monitor = &monitor; | 
| 1621     data.done = false; | 1621     data.done = false; | 
| 1622     I->message_handler()->Run( | 1622     I->message_handler()->Run( | 
| 1623         Dart::thread_pool(), | 1623         Dart::thread_pool(), | 
| 1624         NULL, RunLoopDone, reinterpret_cast<uword>(&data)); | 1624         NULL, RunLoopDone, reinterpret_cast<uword>(&data)); | 
| 1625     while (!data.done) { | 1625     while (!data.done) { | 
| 1626       ml.Wait(); | 1626       ml.Wait(); | 
| 1627     } | 1627     } | 
| 1628     ::Dart_EnterIsolate(Api::CastIsolate(I)); |  | 
| 1629   } | 1628   } | 
|  | 1629   ::Dart_EnterIsolate(Api::CastIsolate(I)); | 
| 1630   if (T->sticky_error() != Object::null()) { | 1630   if (T->sticky_error() != Object::null()) { | 
| 1631     Dart_Handle error = Api::NewHandle(T, T->sticky_error()); | 1631     Dart_Handle error = Api::NewHandle(T, T->sticky_error()); | 
| 1632     T->clear_sticky_error(); | 1632     T->clear_sticky_error(); | 
| 1633     return error; | 1633     return error; | 
| 1634   } | 1634   } | 
| 1635   if (FLAG_print_class_table) { | 1635   if (FLAG_print_class_table) { | 
| 1636     HANDLESCOPE(T); | 1636     HANDLESCOPE(T); | 
| 1637     I->class_table()->Print(); | 1637     I->class_table()->Print(); | 
| 1638   } | 1638   } | 
| 1639   return Api::Success(); | 1639   return Api::Success(); | 
| (...skipping 4554 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6194   return Api::Success(); | 6194   return Api::Success(); | 
| 6195 } | 6195 } | 
| 6196 #endif  // DART_PRECOMPILER | 6196 #endif  // DART_PRECOMPILER | 
| 6197 | 6197 | 
| 6198 | 6198 | 
| 6199 DART_EXPORT bool Dart_IsRunningPrecompiledCode() { | 6199 DART_EXPORT bool Dart_IsRunningPrecompiledCode() { | 
| 6200   return Dart::IsRunningPrecompiledCode(); | 6200   return Dart::IsRunningPrecompiledCode(); | 
| 6201 } | 6201 } | 
| 6202 | 6202 | 
| 6203 }  // namespace dart | 6203 }  // namespace dart | 
| OLD | NEW | 
|---|