| Index: src/regexp/jsregexp.cc
|
| diff --git a/src/regexp/jsregexp.cc b/src/regexp/jsregexp.cc
|
| index 982846f158d38c993732e4b5a6dd5dc89d156e6a..158e4a2a38562770540fbb9d340a2c703b9478b8 100644
|
| --- a/src/regexp/jsregexp.cc
|
| +++ b/src/regexp/jsregexp.cc
|
| @@ -4901,16 +4901,18 @@ UnicodeRangeSplitter::UnicodeRangeSplitter(Zone* zone,
|
| table_.AddRange(base->at(i), kBase, zone_);
|
| }
|
| // Add overlay ranges.
|
| - table_.AddRange(CharacterRange(0, kLeadSurrogateStart - 1), kBmpCodePoints,
|
| - zone_);
|
| - table_.AddRange(CharacterRange(kLeadSurrogateStart, kLeadSurrogateEnd),
|
| - kLeadSurrogates, zone_);
|
| - table_.AddRange(CharacterRange(kTrailSurrogateStart, kTrailSurrogateEnd),
|
| - kTrailSurrogates, zone_);
|
| - table_.AddRange(CharacterRange(kTrailSurrogateEnd + 1, kNonBmpStart - 1),
|
| + table_.AddRange(CharacterRange::Range(0, kLeadSurrogateStart - 1),
|
| kBmpCodePoints, zone_);
|
| - table_.AddRange(CharacterRange(kNonBmpStart, kNonBmpEnd), kNonBmpCodePoints,
|
| - zone_);
|
| + table_.AddRange(CharacterRange::Range(kLeadSurrogateStart, kLeadSurrogateEnd),
|
| + kLeadSurrogates, zone_);
|
| + table_.AddRange(
|
| + CharacterRange::Range(kTrailSurrogateStart, kTrailSurrogateEnd),
|
| + kTrailSurrogates, zone_);
|
| + table_.AddRange(
|
| + CharacterRange::Range(kTrailSurrogateEnd + 1, kNonBmpStart - 1),
|
| + kBmpCodePoints, zone_);
|
| + table_.AddRange(CharacterRange::Range(kNonBmpStart, kNonBmpEnd),
|
| + kNonBmpCodePoints, zone_);
|
| table_.ForEach(this);
|
| }
|
|
|
| @@ -5797,7 +5799,7 @@ static void AddClass(const int* elmv,
|
| DCHECK(elmv[elmc] == kRangeEndMarker);
|
| for (int i = 0; i < elmc; i += 2) {
|
| DCHECK(elmv[i] < elmv[i + 1]);
|
| - ranges->Add(CharacterRange(elmv[i], elmv[i + 1] - 1), zone);
|
| + ranges->Add(CharacterRange::Range(elmv[i], elmv[i + 1] - 1), zone);
|
| }
|
| }
|
|
|
| @@ -5814,10 +5816,10 @@ static void AddClassNegated(const int *elmv,
|
| for (int i = 0; i < elmc; i += 2) {
|
| DCHECK(last <= elmv[i] - 1);
|
| DCHECK(elmv[i] < elmv[i + 1]);
|
| - ranges->Add(CharacterRange(last, elmv[i] - 1), zone);
|
| + ranges->Add(CharacterRange::Range(last, elmv[i] - 1), zone);
|
| last = elmv[i + 1];
|
| }
|
| - ranges->Add(CharacterRange(last, String::kMaxCodePoint), zone);
|
| + ranges->Add(CharacterRange::Range(last, String::kMaxCodePoint), zone);
|
| }
|
|
|
|
|
| @@ -5935,7 +5937,7 @@ void CharacterRange::AddCaseEquivalents(Isolate* isolate, Zone* zone,
|
| uc32 range_from = c - (block_end - pos);
|
| uc32 range_to = c - (block_end - end);
|
| if (!(bottom <= range_from && range_to <= top)) {
|
| - ranges->Add(CharacterRange(range_from, range_to), zone);
|
| + ranges->Add(CharacterRange::Range(range_from, range_to), zone);
|
| }
|
| }
|
| pos = end + 1;
|
| @@ -6029,7 +6031,7 @@ static int InsertRangeInCanonicalList(ZoneList<CharacterRange>* list,
|
| CharacterRange to_replace = list->at(start_pos);
|
| int new_from = Min(to_replace.from(), from);
|
| int new_to = Max(to_replace.to(), to);
|
| - list->at(start_pos) = CharacterRange(new_from, new_to);
|
| + list->at(start_pos) = CharacterRange::Range(new_from, new_to);
|
| return count;
|
| }
|
| // Replace a number of existing ranges from start_pos to end_pos - 1.
|
| @@ -6040,7 +6042,7 @@ static int InsertRangeInCanonicalList(ZoneList<CharacterRange>* list,
|
| if (end_pos < count) {
|
| MoveRanges(list, end_pos, start_pos + 1, count - end_pos);
|
| }
|
| - list->at(start_pos) = CharacterRange(new_from, new_to);
|
| + list->at(start_pos) = CharacterRange::Range(new_from, new_to);
|
| return count - (end_pos - start_pos) + 1;
|
| }
|
|
|
| @@ -6104,12 +6106,13 @@ void CharacterRange::Negate(ZoneList<CharacterRange>* ranges,
|
| }
|
| while (i < range_count) {
|
| CharacterRange range = ranges->at(i);
|
| - negated_ranges->Add(CharacterRange(from, range.from() - 1), zone);
|
| + negated_ranges->Add(CharacterRange::Range(from, range.from() - 1), zone);
|
| from = range.to() + 1;
|
| i++;
|
| }
|
| if (from < String::kMaxCodePoint) {
|
| - negated_ranges->Add(CharacterRange(from, String::kMaxCodePoint), zone);
|
| + negated_ranges->Add(CharacterRange::Range(from, String::kMaxCodePoint),
|
| + zone);
|
| }
|
| }
|
|
|
| @@ -6188,8 +6191,9 @@ void DispatchTable::AddRange(CharacterRange full_range, int value,
|
| if (entry->from() < current.from() && entry->to() >= current.from()) {
|
| // Snap the overlapping range in half around the start point of
|
| // the range we're adding.
|
| - CharacterRange left(entry->from(), current.from() - 1);
|
| - CharacterRange right(current.from(), entry->to());
|
| + CharacterRange left =
|
| + CharacterRange::Range(entry->from(), current.from() - 1);
|
| + CharacterRange right = CharacterRange::Range(current.from(), entry->to());
|
| // The left part of the overlapping range doesn't overlap.
|
| // Truncate the whole entry to be just the left part.
|
| entry->set_to(left.to());
|
| @@ -6495,8 +6499,7 @@ class AddDispatchRange {
|
|
|
|
|
| void AddDispatchRange::Call(uc32 from, DispatchTable::Entry entry) {
|
| - CharacterRange range(from, entry.to());
|
| - constructor_->AddRange(range);
|
| + constructor_->AddRange(CharacterRange::Range(from, entry.to()));
|
| }
|
|
|
|
|
| @@ -6534,7 +6537,7 @@ void DispatchTableConstructor::AddInverse(ZoneList<CharacterRange>* ranges) {
|
| for (int i = 0; i < ranges->length(); i++) {
|
| CharacterRange range = ranges->at(i);
|
| if (last < range.from())
|
| - AddRange(CharacterRange(last, range.from() - 1));
|
| + AddRange(CharacterRange::Range(last, range.from() - 1));
|
| if (range.to() >= last) {
|
| if (range.to() == String::kMaxUtf16CodeUnit) {
|
| return;
|
| @@ -6543,7 +6546,7 @@ void DispatchTableConstructor::AddInverse(ZoneList<CharacterRange>* ranges) {
|
| }
|
| }
|
| }
|
| - AddRange(CharacterRange(last, String::kMaxUtf16CodeUnit));
|
| + AddRange(CharacterRange::Range(last, String::kMaxUtf16CodeUnit));
|
| }
|
|
|
|
|
| @@ -6552,7 +6555,7 @@ void DispatchTableConstructor::VisitText(TextNode* that) {
|
| switch (elm.text_type()) {
|
| case TextElement::ATOM: {
|
| uc16 c = elm.atom()->data()[0];
|
| - AddRange(CharacterRange(c, c));
|
| + AddRange(CharacterRange::Range(c, c));
|
| break;
|
| }
|
| case TextElement::CHAR_CLASS: {
|
|
|