Chromium Code Reviews| Index: src/regexp/regexp-macro-assembler.cc |
| diff --git a/src/regexp/regexp-macro-assembler.cc b/src/regexp/regexp-macro-assembler.cc |
| index caf8b51fe548d6a9e68365654110473ddbdea9b5..89e162a802ef08a4dbb452e1be51c8aedfbd5f6f 100644 |
| --- a/src/regexp/regexp-macro-assembler.cc |
| +++ b/src/regexp/regexp-macro-assembler.cc |
| @@ -23,6 +23,21 @@ RegExpMacroAssembler::~RegExpMacroAssembler() { |
| } |
| +void RegExpMacroAssembler::CheckNotInSurrogatePair(int cp_offset, |
| + Label* on_failure) { |
| + Label ok; |
| + // Check that current character is not a trail surrogate. |
| + LoadCurrentCharacter(cp_offset, &ok, true, 1); |
|
erikcorry
2016/01/26 16:25:06
True, 1 are default args and not needed.
Yang
2016/01/27 09:06:06
Done.
|
| + CheckCharacterNotInRange(kTrailSurrogateStart, kTrailSurrogateEnd, &ok); |
| + // Check that previous character is not a lead surrogate. |
| + LoadCurrentCharacter(cp_offset - 1, &ok, true, 1); |
| + CheckCharacterNotInRange(kLeadSurrogateStart, kLeadSurrogateEnd, &ok); |
|
erikcorry
2016/01/26 16:25:06
CheckCharacterInRange(on_failure) ?
Yang
2016/01/27 09:06:06
Done.
|
| + // Looks like we are right in between a lead and a trail surrogate. |
| + GoTo(on_failure); |
| + Bind(&ok); |
| +} |
| + |
| + |
| #ifndef V8_INTERPRETED_REGEXP // Avoid unused code, e.g., on ARM. |
| NativeRegExpMacroAssembler::NativeRegExpMacroAssembler(Isolate* isolate, |