diff options
Diffstat (limited to 'deps/v8/src/compiler/instruction-selector-impl.h')
-rw-r--r-- | deps/v8/src/compiler/instruction-selector-impl.h | 17 |
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: |