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

Unified Diff: runtime/vm/deferred_objects.cc

Issue 1149403005: Prevent excessive deoptimization when optimistically assuming Smi in typed data stores. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: ws Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/vm/flow_graph_optimizer.cc » ('j') | runtime/vm/object.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/deferred_objects.cc
diff --git a/runtime/vm/deferred_objects.cc b/runtime/vm/deferred_objects.cc
index f3cb4d87a509f3975bd253ab7c6e53d83ad191f1..ba620c4558f4e59a2ff66d54a2c73cf42a7135d9 100644
--- a/runtime/vm/deferred_objects.cc
+++ b/runtime/vm/deferred_objects.cc
@@ -137,6 +137,10 @@ void DeferredRetAddr::Materialize(DeoptContext* deopt_context) {
CodePatcher::GetInstanceCallAt(pc, code, &ic_data);
if (!ic_data.IsNull()) {
ic_data.AddDeoptReason(deopt_context->deopt_reason());
+ // Propagate the reason to all ICData-s with same deopt_id since
+ // only unoptimized-code ICData (IC calls) are propagated.
+ function.SetDeoptReasonForAll(ic_data.deopt_id(),
+ deopt_context->deopt_reason());
}
} else {
if (deopt_context->HasDeoptFlag(ICData::kHoisted)) {
« no previous file with comments | « no previous file | runtime/vm/flow_graph_optimizer.cc » ('j') | runtime/vm/object.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698