Index: runtime/vm/code_generator.cc |
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc |
index 51e70e8a0bee2ff314c1267803ffcaf20f8c51f3..f48684a7217dc6ff94e584ca8b708316ed13a78f 100644 |
--- a/runtime/vm/code_generator.cc |
+++ b/runtime/vm/code_generator.cc |
@@ -1106,16 +1106,21 @@ DEFINE_RUNTIME_ENTRY(SingleTargetMiss, 1) { |
} |
if (old_target.raw() == target_function.raw()) { |
- intptr_t lower, upper; |
+ intptr_t lower, upper, unchecked_lower, unchecked_upper; |
if (receiver.GetClassId() < cache.lower_limit()) { |
lower = receiver.GetClassId(); |
+ unchecked_lower = receiver.GetClassId(); |
upper = cache.upper_limit(); |
+ unchecked_upper = cache.lower_limit() - 1; |
} else { |
lower = cache.lower_limit(); |
+ unchecked_lower = cache.upper_limit() + 1; |
upper = receiver.GetClassId(); |
+ unchecked_upper = receiver.GetClassId(); |
} |
- if (IsSingleTarget(isolate, zone, lower, upper, target_function, name)) { |
+ if (IsSingleTarget(isolate, zone, unchecked_lower, unchecked_upper, |
+ target_function, name)) { |
cache.set_lower_limit(lower); |
cache.set_upper_limit(upper); |
// Return the ICData. The single target stub will jump to continue in the |