Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(642)

Side by Side Diff: runtime/vm/isolate.cc

Issue 2070873002: Bug fixes for hot reload (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: fix an error message Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 795 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 deopt_context_(NULL), 806 deopt_context_(NULL),
807 is_service_isolate_(false), 807 is_service_isolate_(false),
808 stacktrace_(NULL), 808 stacktrace_(NULL),
809 stack_frame_index_(-1), 809 stack_frame_index_(-1),
810 last_allocationprofile_accumulator_reset_timestamp_(0), 810 last_allocationprofile_accumulator_reset_timestamp_(0),
811 last_allocationprofile_gc_timestamp_(0), 811 last_allocationprofile_gc_timestamp_(0),
812 object_id_ring_(NULL), 812 object_id_ring_(NULL),
813 tag_table_(GrowableObjectArray::null()), 813 tag_table_(GrowableObjectArray::null()),
814 deoptimized_code_array_(GrowableObjectArray::null()), 814 deoptimized_code_array_(GrowableObjectArray::null()),
815 sticky_error_(Error::null()), 815 sticky_error_(Error::null()),
816 sticky_reload_error_(Error::null()),
816 background_compiler_(NULL), 817 background_compiler_(NULL),
817 background_compiler_disabled_depth_(0), 818 background_compiler_disabled_depth_(0),
818 pending_service_extension_calls_(GrowableObjectArray::null()), 819 pending_service_extension_calls_(GrowableObjectArray::null()),
819 registered_service_extension_handlers_(GrowableObjectArray::null()), 820 registered_service_extension_handlers_(GrowableObjectArray::null()),
820 metrics_list_head_(NULL), 821 metrics_list_head_(NULL),
821 compilation_allowed_(true), 822 compilation_allowed_(true),
822 all_classes_finalized_(false), 823 all_classes_finalized_(false),
823 next_(NULL), 824 next_(NULL),
824 pause_loop_monitor_(NULL), 825 pause_loop_monitor_(NULL),
825 loading_invalidation_gen_(kInvalidGen), 826 loading_invalidation_gen_(kInvalidGen),
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1059 1060
1060 #ifndef PRODUCT 1061 #ifndef PRODUCT
1061 void Isolate::ReportReloadError(const Error& error) { 1062 void Isolate::ReportReloadError(const Error& error) {
1062 ASSERT(IsReloading()); 1063 ASSERT(IsReloading());
1063 reload_context_->AbortReload(error); 1064 reload_context_->AbortReload(error);
1064 delete reload_context_; 1065 delete reload_context_;
1065 reload_context_ = NULL; 1066 reload_context_ = NULL;
1066 } 1067 }
1067 1068
1068 1069
1069 void Isolate::OnStackReload() {
1070 ReloadSources();
1071 }
1072
1073
1074 void Isolate::ReloadSources(bool test_mode) { 1070 void Isolate::ReloadSources(bool test_mode) {
1075 ASSERT(!IsReloading()); 1071 ASSERT(!IsReloading());
1076 has_attempted_reload_ = true; 1072 has_attempted_reload_ = true;
1077 reload_context_ = new IsolateReloadContext(this, test_mode); 1073 reload_context_ = new IsolateReloadContext(this, test_mode);
1078 reload_context_->StartReload(); 1074 reload_context_->StartReload();
1079 } 1075 }
1080 1076
1081 #endif 1077 #endif
1082 1078
1083 1079
1084 void Isolate::DoneFinalizing() { 1080 void Isolate::DoneFinalizing() {
1085 NOT_IN_PRODUCT( 1081 NOT_IN_PRODUCT(
1086 if (IsReloading()) { 1082 if (IsReloading()) {
1087 reload_context_->FinishReload(); 1083 reload_context_->FinishReload();
1088 if (reload_context_->has_error() && reload_context_->test_mode()) { 1084 if (reload_context_->has_error() && reload_context_->test_mode()) {
1089 // If the reload has an error and we are in test mode keep the reload 1085 // If the reload has an error and we are in test mode keep the reload
1090 // context on the isolate so that it can be used by unit tests. 1086 // context on the isolate so that it can be used by unit tests.
1091 return; 1087 return;
1092 } 1088 }
1089 if (reload_context_->has_error()) {
1090 // Remember the reload error.
1091 sticky_reload_error_ = reload_context_->error();
1092 }
1093 if (!reload_context_->has_error()) { 1093 if (!reload_context_->has_error()) {
1094 reload_context_->ReportSuccess(); 1094 reload_context_->ReportSuccess();
1095 } 1095 }
1096 delete reload_context_; 1096 delete reload_context_;
1097 reload_context_ = NULL; 1097 reload_context_ = NULL;
1098 } 1098 }
1099 ) 1099 )
1100 } 1100 }
1101 1101
1102 1102
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
1745 background_compiler()->VisitPointers(visitor); 1745 background_compiler()->VisitPointers(visitor);
1746 } 1746 }
1747 1747
1748 // Visit the deoptimized code array which is stored in the isolate. 1748 // Visit the deoptimized code array which is stored in the isolate.
1749 visitor->VisitPointer( 1749 visitor->VisitPointer(
1750 reinterpret_cast<RawObject**>(&deoptimized_code_array_)); 1750 reinterpret_cast<RawObject**>(&deoptimized_code_array_));
1751 1751
1752 visitor->VisitPointer( 1752 visitor->VisitPointer(
1753 reinterpret_cast<RawObject**>(&sticky_error_)); 1753 reinterpret_cast<RawObject**>(&sticky_error_));
1754 1754
1755 visitor->VisitPointer(
1756 reinterpret_cast<RawObject**>(&sticky_reload_error_));
1757
1755 // Visit the pending service extension calls. 1758 // Visit the pending service extension calls.
1756 visitor->VisitPointer( 1759 visitor->VisitPointer(
1757 reinterpret_cast<RawObject**>(&pending_service_extension_calls_)); 1760 reinterpret_cast<RawObject**>(&pending_service_extension_calls_));
1758 1761
1759 // Visit the registered service extension handlers. 1762 // Visit the registered service extension handlers.
1760 visitor->VisitPointer( 1763 visitor->VisitPointer(
1761 reinterpret_cast<RawObject**>(&registered_service_extension_handlers_)); 1764 reinterpret_cast<RawObject**>(&registered_service_extension_handlers_));
1762 1765
1763 // Visit the boxed_field_list_. 1766 // Visit the boxed_field_list_.
1764 // 'boxed_field_list_' access via mutator and background compilation threads 1767 // 'boxed_field_list_' access via mutator and background compilation threads
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1998 // old space GC and remove the keep_code flag. 2001 // old space GC and remove the keep_code flag.
1999 deoptimized_code.Add(code); 2002 deoptimized_code.Add(code);
2000 } 2003 }
2001 2004
2002 2005
2003 void Isolate::clear_sticky_error() { 2006 void Isolate::clear_sticky_error() {
2004 sticky_error_ = Error::null(); 2007 sticky_error_ = Error::null();
2005 } 2008 }
2006 2009
2007 2010
2011 void Isolate::clear_sticky_reload_error() {
2012 sticky_reload_error_ = Error::null();
2013 }
2014
2015
2008 void Isolate::set_pending_service_extension_calls( 2016 void Isolate::set_pending_service_extension_calls(
2009 const GrowableObjectArray& value) { 2017 const GrowableObjectArray& value) {
2010 pending_service_extension_calls_ = value.raw(); 2018 pending_service_extension_calls_ = value.raw();
2011 } 2019 }
2012 2020
2013 2021
2014 void Isolate::set_registered_service_extension_handlers( 2022 void Isolate::set_registered_service_extension_handlers(
2015 const GrowableObjectArray& value) { 2023 const GrowableObjectArray& value) {
2016 registered_service_extension_handlers_ = value.raw(); 2024 registered_service_extension_handlers_ = value.raw();
2017 } 2025 }
(...skipping 779 matching lines...) Expand 10 before | Expand all | Expand 10 after
2797 void IsolateSpawnState::DecrementSpawnCount() { 2805 void IsolateSpawnState::DecrementSpawnCount() {
2798 ASSERT(spawn_count_monitor_ != NULL); 2806 ASSERT(spawn_count_monitor_ != NULL);
2799 ASSERT(spawn_count_ != NULL); 2807 ASSERT(spawn_count_ != NULL);
2800 MonitorLocker ml(spawn_count_monitor_); 2808 MonitorLocker ml(spawn_count_monitor_);
2801 ASSERT(*spawn_count_ > 0); 2809 ASSERT(*spawn_count_ > 0);
2802 *spawn_count_ = *spawn_count_ - 1; 2810 *spawn_count_ = *spawn_count_ - 1;
2803 ml.Notify(); 2811 ml.Notify();
2804 } 2812 }
2805 2813
2806 } // namespace dart 2814 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/isolate_reload_test.cc » ('j') | runtime/vm/service.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698