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 "vm/isolate.h" | 5 #include "vm/isolate.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 #include "include/dart_native_api.h" | 8 #include "include/dart_native_api.h" |
9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
10 #include "platform/text_buffer.h" | 10 #include "platform/text_buffer.h" |
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
653 return MessageHandler::kShutdown; | 653 return MessageHandler::kShutdown; |
654 } | 654 } |
655 } | 655 } |
656 } | 656 } |
657 return MessageHandler::kError; | 657 return MessageHandler::kError; |
658 } | 658 } |
659 | 659 |
660 | 660 |
661 MessageHandler::MessageStatus IsolateMessageHandler::ProcessUnhandledException( | 661 MessageHandler::MessageStatus IsolateMessageHandler::ProcessUnhandledException( |
662 const Error& result) { | 662 const Error& result) { |
663 NOT_IN_PRODUCT( | |
664 if (I->IsReloading()) { | |
665 I->ReportReloadError(result); | |
666 return kOK; | |
667 } | |
668 ) | |
669 // Generate the error and stacktrace strings for the error message. | 663 // Generate the error and stacktrace strings for the error message. |
670 String& exc_str = String::Handle(T->zone()); | 664 String& exc_str = String::Handle(T->zone()); |
671 String& stacktrace_str = String::Handle(T->zone()); | 665 String& stacktrace_str = String::Handle(T->zone()); |
672 if (result.IsUnhandledException()) { | 666 if (result.IsUnhandledException()) { |
673 Zone* zone = T->zone(); | 667 Zone* zone = T->zone(); |
674 const UnhandledException& uhe = UnhandledException::Cast(result); | 668 const UnhandledException& uhe = UnhandledException::Cast(result); |
675 const Instance& exception = Instance::Handle(zone, uhe.exception()); | 669 const Instance& exception = Instance::Handle(zone, uhe.exception()); |
676 Object& tmp = Object::Handle(zone); | 670 Object& tmp = Object::Handle(zone); |
677 tmp = DartLibraryCalls::ToString(exception); | 671 tmp = DartLibraryCalls::ToString(exception); |
678 if (!tmp.IsString()) { | 672 if (!tmp.IsString()) { |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1082 return !ServiceIsolate::IsServiceIsolateDescendant(this) && | 1076 return !ServiceIsolate::IsServiceIsolateDescendant(this) && |
1083 is_runnable() && !IsReloading() && (no_reload_scope_depth_ == 0) && | 1077 is_runnable() && !IsReloading() && (no_reload_scope_depth_ == 0) && |
1084 IsolateCreationEnabled(); | 1078 IsolateCreationEnabled(); |
1085 #else | 1079 #else |
1086 return false; | 1080 return false; |
1087 #endif | 1081 #endif |
1088 } | 1082 } |
1089 | 1083 |
1090 | 1084 |
1091 #ifndef PRODUCT | 1085 #ifndef PRODUCT |
1092 void Isolate::ReportReloadError(const Error& error) { | |
1093 ASSERT(IsReloading()); | |
1094 reload_context_->AbortReload(error); | |
1095 } | |
1096 | |
1097 | |
1098 bool Isolate::ReloadSources(JSONStream* js, | 1086 bool Isolate::ReloadSources(JSONStream* js, |
1099 bool force_reload, | 1087 bool force_reload, |
1100 bool dont_delete_reload_context) { | 1088 bool dont_delete_reload_context) { |
1101 ASSERT(!IsReloading()); | 1089 ASSERT(!IsReloading()); |
1102 has_attempted_reload_ = true; | 1090 has_attempted_reload_ = true; |
1103 reload_context_ = new IsolateReloadContext(this, js); | 1091 reload_context_ = new IsolateReloadContext(this, js); |
1104 reload_context_->Reload(force_reload); | 1092 reload_context_->Reload(force_reload); |
1105 bool success = !reload_context_->reload_aborted(); | 1093 bool success = !reload_context_->reload_aborted(); |
1106 if (!dont_delete_reload_context) { | 1094 if (!dont_delete_reload_context) { |
1107 DeleteReloadContext(); | 1095 DeleteReloadContext(); |
(...skipping 1789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2897 void IsolateSpawnState::DecrementSpawnCount() { | 2885 void IsolateSpawnState::DecrementSpawnCount() { |
2898 ASSERT(spawn_count_monitor_ != NULL); | 2886 ASSERT(spawn_count_monitor_ != NULL); |
2899 ASSERT(spawn_count_ != NULL); | 2887 ASSERT(spawn_count_ != NULL); |
2900 MonitorLocker ml(spawn_count_monitor_); | 2888 MonitorLocker ml(spawn_count_monitor_); |
2901 ASSERT(*spawn_count_ > 0); | 2889 ASSERT(*spawn_count_ > 0); |
2902 *spawn_count_ = *spawn_count_ - 1; | 2890 *spawn_count_ = *spawn_count_ - 1; |
2903 ml.Notify(); | 2891 ml.Notify(); |
2904 } | 2892 } |
2905 | 2893 |
2906 } // namespace dart | 2894 } // namespace dart |
OLD | NEW |