| Index: src/regexp-macro-assembler.h
|
| ===================================================================
|
| --- src/regexp-macro-assembler.h (revision 927)
|
| +++ src/regexp-macro-assembler.h (working copy)
|
| @@ -62,19 +62,17 @@
|
| virtual void CheckCharacterGT(uc16 limit, Label* on_greater) = 0;
|
| virtual void CheckCharacterLT(uc16 limit, Label* on_less) = 0;
|
| // Check the current character for a match with a literal string. If we
|
| - // fail to match then goto the on_failure label. End of input always
|
| - // matches. If the label is NULL then we should pop a backtrack address off
|
| - // the stack abnd go to that.
|
| + // fail to match then goto the on_failure label. If check_eos is set then
|
| + // the end of input always fails. If check_eos is clear then it is the
|
| + // caller's responsibility to ensure that the end of string is not hit.
|
| + // If the label is NULL then we should pop a backtrack address off
|
| + // the stack and go to that.
|
| virtual void CheckCharacters(
|
| Vector<const uc16> str,
|
| int cp_offset,
|
| - Label* on_failure) = 0;
|
| - // Check the current input position against a register. If the register is
|
| - // equal to the current position then go to the label. If the label is NULL
|
| - // then backtrack instead.
|
| - virtual void CheckCurrentPosition(
|
| - int register_index,
|
| - Label* on_equal) = 0;
|
| + Label* on_failure,
|
| + bool check_eos) = 0;
|
| + virtual void CheckGreedyLoop(Label* on_tos_equals_current_position) = 0;
|
| virtual void CheckNotAtStart(Label* on_not_at_start) = 0;
|
| virtual void CheckNotBackReference(int start_reg, Label* on_no_match) = 0;
|
| virtual void CheckNotBackReferenceIgnoreCase(int start_reg,
|
| @@ -115,7 +113,7 @@
|
| const Vector<Label*>& destinations) = 0;
|
| virtual void EmitOrLink(Label* label) = 0;
|
| virtual void Fail() = 0;
|
| - virtual Handle<Object> GetCode() = 0;
|
| + virtual Handle<Object> GetCode(Handle<String> source) = 0;
|
| virtual void GoTo(Label* label) = 0;
|
| // Check whether a register is >= a given constant and go to a label if it
|
| // is. Backtracks instead if the label is NULL.
|
| @@ -125,6 +123,7 @@
|
| virtual void IfRegisterLT(int reg, int comparand, Label* if_lt) = 0;
|
| virtual IrregexpImplementation Implementation() = 0;
|
| virtual void LoadCurrentCharacter(int cp_offset, Label* on_end_of_input) = 0;
|
| + virtual void LoadCurrentCharacterUnchecked(int cp_offset) = 0;
|
| virtual void PopCurrentPosition() = 0;
|
| virtual void PopRegister(int register_index) = 0;
|
| virtual void PushBacktrack(Label* label) = 0;
|
| @@ -134,7 +133,7 @@
|
| virtual void ReadStackPointerFromRegister(int reg) = 0;
|
| virtual void SetRegister(int register_index, int to) = 0;
|
| virtual void Succeed() = 0;
|
| - virtual void WriteCurrentPositionToRegister(int reg) = 0;
|
| + virtual void WriteCurrentPositionToRegister(int reg, int cp_offset) = 0;
|
| virtual void WriteStackPointerToRegister(int reg) = 0;
|
|
|
| private:
|
|
|