Index: src/regexp/regexp-macro-assembler.h |
diff --git a/src/regexp/regexp-macro-assembler.h b/src/regexp/regexp-macro-assembler.h |
index 20599334cd3f7450e9991e188a29bab2b1fe0f55..a80d961b1bd374e20e3527d4bc2294803ec36eb6 100644 |
--- a/src/regexp/regexp-macro-assembler.h |
+++ b/src/regexp/regexp-macro-assembler.h |
@@ -11,6 +11,13 @@ |
namespace v8 { |
namespace internal { |
+static const uc32 kLeadSurrogateStart = 0xd800; |
+static const uc32 kLeadSurrogateEnd = 0xdbff; |
+static const uc32 kTrailSurrogateStart = 0xdc00; |
+static const uc32 kTrailSurrogateEnd = 0xdfff; |
+static const uc32 kNonBmpStart = 0x10000; |
+static const uc32 kNonBmpEnd = 0x10ffff; |
+ |
struct DisjunctDecisionRow { |
RegExpCharacterClass cc; |
Label* on_match; |
@@ -146,6 +153,9 @@ class RegExpMacroAssembler { |
virtual void ClearRegisters(int reg_from, int reg_to) = 0; |
virtual void WriteStackPointerToRegister(int reg) = 0; |
+ // Check that we are not in the middle of a surrogate pair. |
+ void CheckNotInSurrogatePair(int cp_offset, Label* on_failure); |
+ |
// Controls the generation of large inlined constants in the code. |
void set_slow_safe(bool ssc) { slow_safe_compiler_ = ssc; } |
bool slow_safe() { return slow_safe_compiler_; } |