Index: runtime/vm/intermediate_language_arm64.cc |
diff --git a/runtime/vm/intermediate_language_arm64.cc b/runtime/vm/intermediate_language_arm64.cc |
index 2e53e4458b22f3b23835da759c79f951bfe8f166..4db696150a4f47050c168ae960f4bf8122e7fe64 100644 |
--- a/runtime/vm/intermediate_language_arm64.cc |
+++ b/runtime/vm/intermediate_language_arm64.cc |
@@ -5829,6 +5829,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; |