Index: runtime/vm/flow_graph_range_analysis.cc |
diff --git a/runtime/vm/flow_graph_range_analysis.cc b/runtime/vm/flow_graph_range_analysis.cc |
index ed335dab73c5c99d3f5d62f2eb6dc8ea2aab8bdf..61d45289e34b7f74121f5ce3349f95744ebf6dd4 100644 |
--- a/runtime/vm/flow_graph_range_analysis.cc |
+++ b/runtime/vm/flow_graph_range_analysis.cc |
@@ -2826,6 +2826,22 @@ void LoadIndexedInstr::InferRange(RangeAnalysis* analysis, Range* range) { |
} |
+void LoadCodeUnitsInstr::InferRange(RangeAnalysis* analysis, Range* range) { |
+ ASSERT(class_id() == kOneByteStringCid || |
+ class_id() == kTwoByteStringCid); |
+ switch (class_id()) { |
+ case kOneByteStringCid: |
+ case kTwoByteStringCid: |
+ *range = Range(RangeBoundary::FromConstant(0), |
+ RangeBoundary::FromConstant(kMaxUint32)); |
+ break; |
+ default: |
+ UNREACHABLE(); |
+ break; |
+ } |
+} |
+ |
+ |
void IfThenElseInstr::InferRange(RangeAnalysis* analysis, Range* range) { |
const intptr_t min = Utils::Minimum(if_true_, if_false_); |
const intptr_t max = Utils::Maximum(if_true_, if_false_); |