| 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 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 | 452 |
| 453 Dart_Handle Api::CheckAndFinalizePendingClasses(Thread* thread) { | 453 Dart_Handle Api::CheckAndFinalizePendingClasses(Thread* thread) { |
| 454 Isolate* isolate = thread->isolate(); | 454 Isolate* isolate = thread->isolate(); |
| 455 if (!isolate->AllowClassFinalization()) { | 455 if (!isolate->AllowClassFinalization()) { |
| 456 // Class finalization is blocked for the isolate. Do nothing. | 456 // Class finalization is blocked for the isolate. Do nothing. |
| 457 return Api::Success(); | 457 return Api::Success(); |
| 458 } | 458 } |
| 459 if (ClassFinalizer::ProcessPendingClasses()) { | 459 if (ClassFinalizer::ProcessPendingClasses()) { |
| 460 return Api::Success(); | 460 return Api::Success(); |
| 461 } | 461 } |
| 462 ASSERT(isolate->object_store()->sticky_error() != Object::null()); | 462 ASSERT(thread->sticky_error() != Object::null()); |
| 463 return Api::NewHandle(thread, isolate->object_store()->sticky_error()); | 463 return Api::NewHandle(thread, thread->sticky_error()); |
| 464 } | 464 } |
| 465 | 465 |
| 466 | 466 |
| 467 Dart_Isolate Api::CastIsolate(Isolate* isolate) { | 467 Dart_Isolate Api::CastIsolate(Isolate* isolate) { |
| 468 return reinterpret_cast<Dart_Isolate>(isolate); | 468 return reinterpret_cast<Dart_Isolate>(isolate); |
| 469 } | 469 } |
| 470 | 470 |
| 471 | 471 |
| 472 Dart_Handle Api::NewError(const char* format, ...) { | 472 Dart_Handle Api::NewError(const char* format, ...) { |
| 473 Thread* T = Thread::Current(); | 473 Thread* T = Thread::Current(); |
| (...skipping 1141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1615 data.monitor = &monitor; | 1615 data.monitor = &monitor; |
| 1616 data.done = false; | 1616 data.done = false; |
| 1617 I->message_handler()->Run( | 1617 I->message_handler()->Run( |
| 1618 Dart::thread_pool(), | 1618 Dart::thread_pool(), |
| 1619 NULL, RunLoopDone, reinterpret_cast<uword>(&data)); | 1619 NULL, RunLoopDone, reinterpret_cast<uword>(&data)); |
| 1620 while (!data.done) { | 1620 while (!data.done) { |
| 1621 ml.Wait(); | 1621 ml.Wait(); |
| 1622 } | 1622 } |
| 1623 ::Dart_EnterIsolate(Api::CastIsolate(I)); | 1623 ::Dart_EnterIsolate(Api::CastIsolate(I)); |
| 1624 } | 1624 } |
| 1625 if (I->object_store()->sticky_error() != Object::null()) { | 1625 if (T->sticky_error() != Object::null()) { |
| 1626 Dart_Handle error = Api::NewHandle(T, I->object_store()->sticky_error()); | 1626 Dart_Handle error = Api::NewHandle(T, T->sticky_error()); |
| 1627 I->object_store()->clear_sticky_error(); | 1627 T->clear_sticky_error(); |
| 1628 return error; | 1628 return error; |
| 1629 } | 1629 } |
| 1630 if (FLAG_print_class_table) { | 1630 if (FLAG_print_class_table) { |
| 1631 HANDLESCOPE(T); | 1631 HANDLESCOPE(T); |
| 1632 I->class_table()->Print(); | 1632 I->class_table()->Print(); |
| 1633 } | 1633 } |
| 1634 return Api::Success(); | 1634 return Api::Success(); |
| 1635 } | 1635 } |
| 1636 | 1636 |
| 1637 | 1637 |
| 1638 DART_EXPORT Dart_Handle Dart_HandleMessage() { | 1638 DART_EXPORT Dart_Handle Dart_HandleMessage() { |
| 1639 Thread* T = Thread::Current(); | 1639 Thread* T = Thread::Current(); |
| 1640 Isolate* I = T->isolate(); | 1640 Isolate* I = T->isolate(); |
| 1641 CHECK_API_SCOPE(T); | 1641 CHECK_API_SCOPE(T); |
| 1642 CHECK_CALLBACK_STATE(T); | 1642 CHECK_CALLBACK_STATE(T); |
| 1643 API_TIMELINE_BEGIN_END; | 1643 API_TIMELINE_BEGIN_END; |
| 1644 TransitionNativeToVM transition(T); | 1644 TransitionNativeToVM transition(T); |
| 1645 if (I->message_handler()->HandleNextMessage() != MessageHandler::kOK) { | 1645 if (I->message_handler()->HandleNextMessage() != MessageHandler::kOK) { |
| 1646 Dart_Handle error = Api::NewHandle(T, I->object_store()->sticky_error()); | 1646 Dart_Handle error = Api::NewHandle(T, T->sticky_error()); |
| 1647 I->object_store()->clear_sticky_error(); | 1647 T->clear_sticky_error(); |
| 1648 return error; | 1648 return error; |
| 1649 } | 1649 } |
| 1650 return Api::Success(); | 1650 return Api::Success(); |
| 1651 } | 1651 } |
| 1652 | 1652 |
| 1653 | 1653 |
| 1654 DART_EXPORT Dart_Handle Dart_HandleMessages() { | 1654 DART_EXPORT Dart_Handle Dart_HandleMessages() { |
| 1655 Thread* T = Thread::Current(); | 1655 Thread* T = Thread::Current(); |
| 1656 Isolate* I = T->isolate(); | 1656 Isolate* I = T->isolate(); |
| 1657 CHECK_API_SCOPE(T); | 1657 CHECK_API_SCOPE(T); |
| 1658 CHECK_CALLBACK_STATE(T); | 1658 CHECK_CALLBACK_STATE(T); |
| 1659 API_TIMELINE_BEGIN_END; | 1659 API_TIMELINE_BEGIN_END; |
| 1660 TransitionNativeToVM transition(T); | 1660 TransitionNativeToVM transition(T); |
| 1661 if (I->message_handler()->HandleAllMessages() != MessageHandler::kOK) { | 1661 if (I->message_handler()->HandleAllMessages() != MessageHandler::kOK) { |
| 1662 Dart_Handle error = Api::NewHandle(T, I->object_store()->sticky_error()); | 1662 Dart_Handle error = Api::NewHandle(T, T->sticky_error()); |
| 1663 I->object_store()->clear_sticky_error(); | 1663 T->clear_sticky_error(); |
| 1664 return error; | 1664 return error; |
| 1665 } | 1665 } |
| 1666 return Api::Success(); | 1666 return Api::Success(); |
| 1667 } | 1667 } |
| 1668 | 1668 |
| 1669 | 1669 |
| 1670 DART_EXPORT bool Dart_HandleServiceMessages() { | 1670 DART_EXPORT bool Dart_HandleServiceMessages() { |
| 1671 Thread* T = Thread::Current(); | 1671 Thread* T = Thread::Current(); |
| 1672 Isolate* I = T->isolate(); | 1672 Isolate* I = T->isolate(); |
| 1673 CHECK_API_SCOPE(T); | 1673 CHECK_API_SCOPE(T); |
| (...skipping 4456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6130 return Api::Success(); | 6130 return Api::Success(); |
| 6131 } | 6131 } |
| 6132 #endif // DART_PRECOMPILER | 6132 #endif // DART_PRECOMPILER |
| 6133 | 6133 |
| 6134 | 6134 |
| 6135 DART_EXPORT bool Dart_IsRunningPrecompiledCode() { | 6135 DART_EXPORT bool Dart_IsRunningPrecompiledCode() { |
| 6136 return Dart::IsRunningPrecompiledCode(); | 6136 return Dart::IsRunningPrecompiledCode(); |
| 6137 } | 6137 } |
| 6138 | 6138 |
| 6139 } // namespace dart | 6139 } // namespace dart |
| OLD | NEW |