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

Unified Diff: runtime/vm/class_finalizer.cc

Issue 150923002: Mark optimized code that used CHA for optimization so that lazy class 'finalization' does not inval… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 10 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
Index: runtime/vm/class_finalizer.cc
===================================================================
--- runtime/vm/class_finalizer.cc (revision 32284)
+++ runtime/vm/class_finalizer.cc (working copy)
@@ -36,30 +36,18 @@
// optimizations may have become invalid.
// Only methods which owner classes where subclasses can be invalid.
// TODO(srdjan): Be even more precise by recording the exact CHA optimization.
-static void RemoveOptimizedCode(
+static void RemoveCHAOptimizedCode(
const GrowableArray<intptr_t>& added_subclass_to_cids) {
ASSERT(FLAG_use_cha);
if (added_subclass_to_cids.is_empty()) return;
- // Deoptimize all live frames.
- DeoptimizeIfOwner(added_subclass_to_cids);
// Switch all functions' code to unoptimized.
const ClassTable& class_table = *Isolate::Current()->class_table();
Class& cls = Class::Handle();
- Array& array = Array::Handle();
- Function& function = Function::Handle();
for (intptr_t i = 0; i < added_subclass_to_cids.length(); i++) {
intptr_t cid = added_subclass_to_cids[i];
cls = class_table.At(cid);
ASSERT(!cls.IsNull());
- array = cls.functions();
- const intptr_t num_functions = array.IsNull() ? 0 : array.Length();
- for (intptr_t f = 0; f < num_functions; f++) {
- function ^= array.At(f);
- ASSERT(!function.IsNull());
- if (function.HasOptimizedCode()) {
- function.SwitchToUnoptimizedCode();
- }
- }
+ cls.DisableCHAOptimizedCode();
}
}
@@ -2195,7 +2183,7 @@
CheckForLegalConstClass(cls);
}
if (FLAG_use_cha) {
- RemoveOptimizedCode(added_subclass_to_cids);
+ RemoveCHAOptimizedCode(added_subclass_to_cids);
}
}
« no previous file with comments | « runtime/vm/cha.cc ('k') | runtime/vm/code_generator.h » ('j') | runtime/vm/isolate.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698