Index: src/regexp/jsregexp.cc |
diff --git a/src/regexp/jsregexp.cc b/src/regexp/jsregexp.cc |
index 441c76b95d4fc5419f68b9d1c954a71f77146d1d..9e1941fc0a9e70414129822316abbe8e79d5fdbe 100644 |
--- a/src/regexp/jsregexp.cc |
+++ b/src/regexp/jsregexp.cc |
@@ -27,7 +27,7 @@ |
#include "src/unicode-decoder.h" |
#ifdef V8_I18N_SUPPORT |
-#include "unicode/uset.h" |
+#include "unicode/uniset.h" |
#include "unicode/utypes.h" |
#endif // V8_I18N_SUPPORT |
@@ -5114,30 +5114,22 @@ void AddUnicodeCaseEquivalents(RegExpCompiler* compiler, |
// Use ICU to compute the case fold closure over the ranges. |
DCHECK(compiler->unicode()); |
DCHECK(compiler->ignore_case()); |
- USet* set = uset_openEmpty(); |
+ icu::UnicodeSet set; |
for (int i = 0; i < ranges->length(); i++) { |
- uset_addRange(set, ranges->at(i).from(), ranges->at(i).to()); |
+ set.add(ranges->at(i).from(), ranges->at(i).to()); |
} |
ranges->Clear(); |
- uset_closeOver(set, USET_CASE_INSENSITIVE); |
+ set.closeOver(USET_CASE_INSENSITIVE); |
// Full case mapping map single characters to multiple characters. |
// Those are represented as strings in the set. Remove them so that |
// we end up with only simple and common case mappings. |
- uset_removeAllStrings(set); |
- int item_count = uset_getItemCount(set); |
- int item_result = 0; |
- UErrorCode ec = U_ZERO_ERROR; |
+ set.removeAllStrings(); |
Zone* zone = compiler->zone(); |
- for (int i = 0; i < item_count; i++) { |
- uc32 start = 0; |
- uc32 end = 0; |
- item_result += uset_getItem(set, i, &start, &end, nullptr, 0, &ec); |
- ranges->Add(CharacterRange::Range(start, end), zone); |
+ for (int i = 0; i < set.getRangeCount(); i++) { |
+ ranges->Add(CharacterRange::Range(set.getRangeStart(i), set.getRangeEnd(i)), |
+ zone); |
} |
// No errors and everything we collected have been ranges. |
- DCHECK_EQ(U_ZERO_ERROR, ec); |
- DCHECK_EQ(0, item_result); |
- uset_close(set); |
#else |
// Fallback if ICU is not included. |
CharacterRange::AddCaseEquivalents(compiler->isolate(), compiler->zone(), |