Index: src/regexp/x64/regexp-macro-assembler-x64.cc |
diff --git a/src/regexp/x64/regexp-macro-assembler-x64.cc b/src/regexp/x64/regexp-macro-assembler-x64.cc |
index 286f159cc8e5ac4d04416e6a2f32c7aec735aa06..c861d7a4896f5b406f983a93580ac8b860d8f1df 100644 |
--- a/src/regexp/x64/regexp-macro-assembler-x64.cc |
+++ b/src/regexp/x64/regexp-macro-assembler-x64.cc |
@@ -869,11 +869,14 @@ Handle<HeapObject> RegExpMacroAssemblerX64::GetCode(Handle<String> source) { |
__ testp(rdi, rdi); |
__ j(zero, &exit_label_, Label::kNear); |
// Advance current position after a zero-length match. |
+ Label advance; |
+ __ bind(&advance); |
if (mode_ == UC16) { |
__ addq(rdi, Immediate(2)); |
} else { |
__ incq(rdi); |
} |
+ if (global_unicode()) CheckNotInSurrogatePair(0, &advance); |
} |
__ jmp(&load_char_start_regexp); |