Index: runtime/vm/class_finalizer.cc |
=================================================================== |
--- runtime/vm/class_finalizer.cc (revision 32176) |
+++ runtime/vm/class_finalizer.cc (working copy) |
@@ -36,7 +36,7 @@ |
// 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; |
@@ -56,7 +56,8 @@ |
for (intptr_t f = 0; f < num_functions; f++) { |
function ^= array.At(f); |
ASSERT(!function.IsNull()); |
- if (function.HasOptimizedCode()) { |
+ if (function.HasCode() && |
+ Code::Handle(function.CurrentCode()).has_used_cha()) { |
function.SwitchToUnoptimizedCode(); |
} |
} |
@@ -2195,7 +2196,7 @@ |
CheckForLegalConstClass(cls); |
} |
if (FLAG_use_cha) { |
- RemoveOptimizedCode(added_subclass_to_cids); |
+ RemoveCHAOptimizedCode(added_subclass_to_cids); |
} |
} |