summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/instruction-selector-impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/instruction-selector-impl.h')
-rw-r--r--deps/v8/src/compiler/instruction-selector-impl.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/deps/v8/src/compiler/instruction-selector-impl.h b/deps/v8/src/compiler/instruction-selector-impl.h
index 257f0d8c04..27f37215df 100644
--- a/deps/v8/src/compiler/instruction-selector-impl.h
+++ b/deps/v8/src/compiler/instruction-selector-impl.h
@@ -45,14 +45,23 @@ class SwitchInfo {
}
}
+ // Ensure that comparison order of if-cascades is preserved.
+ std::vector<CaseInfo> CasesSortedByOriginalOrder() const {
+ std::vector<CaseInfo> result(cases_.begin(), cases_.end());
+ std::stable_sort(result.begin(), result.end());
+ return result;
+ }
+ std::vector<CaseInfo> CasesSortedByValue() const {
+ std::vector<CaseInfo> result(cases_.begin(), cases_.end());
+ std::stable_sort(result.begin(), result.end(),
+ [](CaseInfo a, CaseInfo b) { return a.value < b.value; });
+ return result;
+ }
+ const ZoneVector<CaseInfo>& CasesUnsorted() const { return cases_; }
int32_t min_value() const { return min_value_; }
int32_t max_value() const { return max_value_; }
size_t value_range() const { return value_range_; }
size_t case_count() const { return cases_.size(); }
- const CaseInfo& GetCase(size_t i) const {
- DCHECK_LT(i, cases_.size());
- return cases_[i];
- }
BasicBlock* default_branch() const { return default_branch_; }
private: