Index: runtime/vm/intermediate_language_arm.cc |
diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc |
index 9515ea3abb214b142b6ffbf94775ea1ac9dcd5c1..077636d0548d49ab785e55726f7c864e1c51bcf8 100644 |
--- a/runtime/vm/intermediate_language_arm.cc |
+++ b/runtime/vm/intermediate_language_arm.cc |
@@ -7009,6 +7009,27 @@ void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
} |
+LocationSummary* SmiRangeComparisonInstr::MakeLocationSummary(Zone* zone, |
+ bool opt) const { |
+ const intptr_t kNumInputs = 1; |
+ const intptr_t kNumTemps = 0; |
+ LocationSummary* locs = new (zone) |
+ LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kNoCall); |
+ locs->set_in(0, Location::RequiresRegister()); |
+ return locs; |
+} |
+ |
+ |
+Condition SmiRangeComparisonInstr::EmitComparisonCode( |
+ FlowGraphCompiler* compiler, |
+ BranchLabels labels) { |
+ Register in = locs()->in(0).reg(); |
+ __ sub(TMP, in, Operand(Smi::RawValue(from_))); |
+ __ cmp(TMP, Operand(Smi::RawValue(to_ - from_))); |
+ return is_negated() ? HI : LS; |
+} |
+ |
+ |
LocationSummary* StrictCompareInstr::MakeLocationSummary(Zone* zone, |
bool opt) const { |
const intptr_t kNumInputs = 2; |