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

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

Issue 2149993006: DBC: Make unoptimized static calls call through ICData (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address comments Created 4 years, 5 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
« no previous file with comments | « runtime/vm/intermediate_language_dbc.cc ('k') | runtime/vm/simulator_dbc.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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_reload.h" 5 #include "vm/isolate_reload.h"
6 6
7 #include "vm/become.h" 7 #include "vm/become.h"
8 #include "vm/code_generator.h" 8 #include "vm/code_generator.h"
9 #include "vm/compiler.h" 9 #include "vm/compiler.h"
10 #include "vm/dart_api_impl.h" 10 #include "vm/dart_api_impl.h"
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 ASSERT((index >= 0) && (index < library_infos_.length())); 730 ASSERT((index >= 0) && (index < library_infos_.length()));
731 return library_infos_[index].dirty; 731 return library_infos_[index].dirty;
732 } 732 }
733 733
734 734
735 void IsolateReloadContext::PostCommit() { 735 void IsolateReloadContext::PostCommit() {
736 TIMELINE_SCOPE(PostCommit); 736 TIMELINE_SCOPE(PostCommit);
737 set_saved_root_library(Library::Handle()); 737 set_saved_root_library(Library::Handle());
738 set_saved_libraries(GrowableObjectArray::Handle()); 738 set_saved_libraries(GrowableObjectArray::Handle());
739 InvalidateWorld(); 739 InvalidateWorld();
740 TIR_Print("---- DONE COMMIT\n");
740 } 741 }
741 742
742 743
743 bool IsolateReloadContext::ValidateReload() { 744 bool IsolateReloadContext::ValidateReload() {
744 TIMELINE_SCOPE(ValidateReload); 745 TIMELINE_SCOPE(ValidateReload);
745 if (has_error_) { 746 if (has_error_) {
746 return false; 747 return false;
747 } 748 }
748 749
749 // Validate libraries. 750 // Validate libraries.
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 code_ = func.CurrentCode(); 903 code_ = func.CurrentCode();
903 ASSERT(!code_.IsNull()); 904 ASSERT(!code_.IsNull());
904 const bool clear_code = IsFromDirtyLibrary(func); 905 const bool clear_code = IsFromDirtyLibrary(func);
905 const bool stub_code = code_.IsStubCode(); 906 const bool stub_code = code_.IsStubCode();
906 907
907 // Zero edge counters. 908 // Zero edge counters.
908 func.ZeroEdgeCounters(); 909 func.ZeroEdgeCounters();
909 910
910 if (!stub_code) { 911 if (!stub_code) {
911 if (clear_code) { 912 if (clear_code) {
913 VTIR_Print("Marking %s for recompilation, clearning code\n",
914 func.ToCString());
912 ClearAllCode(func); 915 ClearAllCode(func);
913 } else { 916 } else {
914 PreserveUnoptimizedCode(); 917 PreserveUnoptimizedCode();
915 } 918 }
916 } 919 }
917 920
918 // Clear counters. 921 // Clear counters.
919 func.set_usage_counter(0); 922 func.set_usage_counter(0);
920 func.set_deoptimization_counter(0); 923 func.set_deoptimization_counter(0);
921 func.set_optimized_instruction_count(0); 924 func.set_optimized_instruction_count(0);
(...skipping 25 matching lines...) Expand all
947 Object& handle_; 950 Object& handle_;
948 Class& owning_class_; 951 Class& owning_class_;
949 Library& owning_lib_; 952 Library& owning_lib_;
950 Code& code_; 953 Code& code_;
951 IsolateReloadContext* reload_context_; 954 IsolateReloadContext* reload_context_;
952 }; 955 };
953 956
954 957
955 void IsolateReloadContext::MarkAllFunctionsForRecompilation() { 958 void IsolateReloadContext::MarkAllFunctionsForRecompilation() {
956 TIMELINE_SCOPE(MarkAllFunctionsForRecompilation); 959 TIMELINE_SCOPE(MarkAllFunctionsForRecompilation);
960 TIR_Print("---- MARKING ALL FUNCTIONS FOR RECOMPILATION\n");
957 NoSafepointScope no_safepoint; 961 NoSafepointScope no_safepoint;
958 HeapIterationScope heap_iteration_scope; 962 HeapIterationScope heap_iteration_scope;
959 MarkFunctionsForRecompilation visitor(isolate_, this); 963 MarkFunctionsForRecompilation visitor(isolate_, this);
960 isolate_->heap()->VisitObjects(&visitor); 964 isolate_->heap()->VisitObjects(&visitor);
961 } 965 }
962 966
963 967
964 void IsolateReloadContext::InvalidateWorld() { 968 void IsolateReloadContext::InvalidateWorld() {
969 TIR_Print("---- INVALIDATING WORLD\n");
965 ResetMegamorphicCaches(); 970 ResetMegamorphicCaches();
966 DeoptimizeFunctionsOnStack(); 971 DeoptimizeFunctionsOnStack();
967 ResetUnoptimizedICsOnStack(); 972 ResetUnoptimizedICsOnStack();
968 MarkAllFunctionsForRecompilation(); 973 MarkAllFunctionsForRecompilation();
969 } 974 }
970 975
971 976
972 RawClass* IsolateReloadContext::MappedClass(const Class& replacement_or_new) { 977 RawClass* IsolateReloadContext::MappedClass(const Class& replacement_or_new) {
973 UnorderedHashMap<ClassMapTraits> map(class_map_storage_); 978 UnorderedHashMap<ClassMapTraits> map(class_map_storage_);
974 Class& cls = Class::Handle(); 979 Class& cls = Class::Handle();
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 ASSERT(!super_cls.IsNull()); 1132 ASSERT(!super_cls.IsNull());
1128 super_cls.AddDirectSubclass(cls); 1133 super_cls.AddDirectSubclass(cls);
1129 } 1134 }
1130 } 1135 }
1131 } 1136 }
1132 } 1137 }
1133 1138
1134 #endif // !PRODUCT 1139 #endif // !PRODUCT
1135 1140
1136 } // namespace dart 1141 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language_dbc.cc ('k') | runtime/vm/simulator_dbc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698