32 void AdvanceCurrentPosition(
int by)
override;
33 void PopCurrentPosition()
override;
34 void PushCurrentPosition()
override;
35 void Backtrack()
override;
38 bool Succeed()
override;
40 void PopRegister(
int register_index)
override;
41 void PushRegister(
int register_index,
42 StackCheckFlag check_stack_limit)
override;
43 void AdvanceRegister(
int reg,
int by)
override;
44 void SetCurrentPositionFromEnd(
int by)
override;
45 void SetRegister(
int register_index,
int to)
override;
46 void WriteCurrentPositionToRegister(
int reg,
int cp_offset)
override;
47 void ClearRegisters(
int reg_from,
int reg_to)
override;
48 void ReadCurrentPositionFromRegister(
int reg)
override;
49 void WriteStackPointerToRegister(
int reg)
override;
50 void ReadStackPointerFromRegister(
int reg)
override;
51 void LoadCurrentCharacterImpl(
int cp_offset,
Label* on_end_of_input,
52 bool check_bounds,
int characters,
53 int eats_at_least)
override;
54 void CheckCharacter(
unsigned c,
Label* on_equal)
override;
55 void CheckCharacterAfterAnd(
unsigned c,
unsigned mask,
56 Label* on_equal)
override;
59 void CheckGreedyLoop(
Label* on_tos_equals_current_position)
override;
60 void CheckAtStart(
int cp_offset,
Label* on_at_start)
override;
61 void CheckNotAtStart(
int cp_offset,
Label* on_not_at_start)
override;
62 void CheckNotCharacter(
unsigned c,
Label* on_not_equal)
override;
63 void CheckNotCharacterAfterAnd(
unsigned c,
unsigned mask,
64 Label* on_not_equal)
override;
67 Label* on_not_equal)
override;
69 Label* on_in_range)
override;
71 Label* on_not_in_range)
override;
73 Label* on_in_range)
override {
84 Label* on_not_in_range)
override {
90 int advance_by)
override;
91 void CheckNotBackReference(
int start_reg,
bool read_backward,
92 Label* on_no_match)
override;
93 void CheckNotBackReferenceIgnoreCase(
int start_reg,
bool read_backward,
95 Label* on_no_match)
override;
96 void IfRegisterLT(
int register_index,
int comparand,
Label* if_lt)
override;
97 void IfRegisterGE(
int register_index,
int comparand,
Label* if_ge)
override;
98 void IfRegisterEqPos(
int register_index,
Label* if_eq)
override;
100 IrregexpImplementation Implementation()
override;
109 inline void Emit32(uint32_t
x);
110 inline void Emit16(uint32_t
x);
111 inline void Emit8(uint32_t
x);
112 inline void Emit(uint32_t bc, uint32_t arg);
113 inline void Emit(uint32_t bc, int32_t arg);
117 void Copy(uint8_t* a);
120 static constexpr int kInitialBufferSize = 1024;
139 static const int kInvalidPC = -1;