diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-11-11 23:37:35 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-11-11 23:37:35 +0100 |
commit | fa473930f424bf17a9e545b601c84dd2e61364e3 (patch) | |
tree | 41a29cb3ad0ebaf93f6b6248e92073fe4d8788ff /js/src/irregexp/RegExpMacroAssembler.h | |
parent | b00601953bade944cd6df9cde6fcdd1f10d76feb (diff) | |
download | uxp-fa473930f424bf17a9e545b601c84dd2e61364e3.tar.gz |
Issue #1279 - Implement regular expression lookbehind
Based on Tom Schuster's work, with extra minters for unicode.
Diffstat (limited to 'js/src/irregexp/RegExpMacroAssembler.h')
-rw-r--r-- | js/src/irregexp/RegExpMacroAssembler.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/js/src/irregexp/RegExpMacroAssembler.h b/js/src/irregexp/RegExpMacroAssembler.h index dca2edf905..c5def92f29 100644 --- a/js/src/irregexp/RegExpMacroAssembler.h +++ b/js/src/irregexp/RegExpMacroAssembler.h @@ -110,10 +110,10 @@ class MOZ_STACK_CLASS RegExpMacroAssembler virtual void CheckCharacterGT(char16_t limit, jit::Label* on_greater) = 0; virtual void CheckCharacterLT(char16_t limit, jit::Label* on_less) = 0; virtual void CheckGreedyLoop(jit::Label* on_tos_equals_current_position) = 0; - virtual void CheckNotAtStart(jit::Label* on_not_at_start) = 0; - virtual void CheckNotBackReference(int start_reg, jit::Label* on_no_match) = 0; - virtual void CheckNotBackReferenceIgnoreCase(int start_reg, jit::Label* on_no_match, - bool unicode) = 0; + virtual void CheckNotAtStart(int cp_offset, jit::Label* on_not_at_start) = 0; + virtual void CheckNotBackReference(int start_reg, bool read_backward, jit::Label* on_no_match) = 0; + virtual void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, + jit::Label* on_no_match, bool unicode) = 0; // Check the current character for a match with a literal character. If we // fail to match then goto the on_failure label. End of input always @@ -245,9 +245,10 @@ class MOZ_STACK_CLASS InterpretedRegExpMacroAssembler final : public RegExpMacro void CheckCharacterGT(char16_t limit, jit::Label* on_greater); void CheckCharacterLT(char16_t limit, jit::Label* on_less); void CheckGreedyLoop(jit::Label* on_tos_equals_current_position); - void CheckNotAtStart(jit::Label* on_not_at_start); - void CheckNotBackReference(int start_reg, jit::Label* on_no_match); - void CheckNotBackReferenceIgnoreCase(int start_reg, jit::Label* on_no_match, bool unicode); + void CheckNotAtStart(int cp_offset, jit::Label* on_not_at_start); + void CheckNotBackReference(int start_reg, bool read_backward, jit::Label* on_no_match); + void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, + jit::Label* on_no_match, bool unicode); void CheckNotCharacter(unsigned c, jit::Label* on_not_equal); void CheckNotCharacterAfterAnd(unsigned c, unsigned and_with, jit::Label* on_not_equal); void CheckNotCharacterAfterMinusAnd(char16_t c, char16_t minus, char16_t and_with, |