5#ifndef V8_REGEXP_REGEXP_BYTECODES_H_
6#define V8_REGEXP_REGEXP_BYTECODES_H_
34#define BYTECODE_ITERATOR(V) \
38 V(PUSH_REGISTER, 3, 4) \
39 V(SET_REGISTER_TO_CP, 4, 8) \
40 V(SET_CP_TO_REGISTER, 5, 4) \
41 V(SET_REGISTER_TO_SP, 6, 4) \
42 V(SET_SP_TO_REGISTER, 7, 4) \
43 V(SET_REGISTER, 8, 8) \
44 V(ADVANCE_REGISTER, 9, 8) \
47 V(POP_REGISTER, 12, 4) \
50 V(ADVANCE_CP, 15, 4) \
62 V(LOAD_CURRENT_CHAR, 17, 8) \
67 V(LOAD_CURRENT_CHAR_UNCHECKED, 18, 4) \
68 V(LOAD_2_CURRENT_CHARS, 19, 8) \
69 V(LOAD_2_CURRENT_CHARS_UNCHECKED, 20, 4) \
70 V(LOAD_4_CURRENT_CHARS, 21, 8) \
71 V(LOAD_4_CURRENT_CHARS_UNCHECKED, 22, 4) \
72 V(CHECK_4_CHARS, 23, 12) \
79 V(CHECK_CHAR, 24, 8) \
80 V(CHECK_NOT_4_CHARS, 25, 12) \
81 V(CHECK_NOT_CHAR, 26, 8) \
82 V(AND_CHECK_4_CHARS, 27, 16) \
92 V(AND_CHECK_CHAR, 28, 12) \
93 V(AND_CHECK_NOT_4_CHARS, 29, 16) \
94 V(AND_CHECK_NOT_CHAR, 30, 12) \
95 V(MINUS_AND_CHECK_NOT_CHAR, 31, \
97 V(CHECK_CHAR_IN_RANGE, 32, 12) \
98 V(CHECK_CHAR_NOT_IN_RANGE, 33, \
107 V(CHECK_BIT_IN_TABLE, 34, 24) \
110 V(CHECK_NOT_BACK_REF, 37, 8) \
111 V(CHECK_NOT_BACK_REF_NO_CASE, 38, 8) \
112 V(CHECK_NOT_BACK_REF_NO_CASE_UNICODE, 39, 8) \
113 V(CHECK_NOT_BACK_REF_BACKWARD, 40, 8) \
114 V(CHECK_NOT_BACK_REF_NO_CASE_BACKWARD, 41, 8) \
115 V(CHECK_NOT_BACK_REF_NO_CASE_UNICODE_BACKWARD, 42, 8) \
116 V(CHECK_NOT_REGS_EQUAL, 43, 12) \
117 V(CHECK_REGISTER_LT, 44, 12) \
118 V(CHECK_REGISTER_GE, 45, 12) \
119 V(CHECK_REGISTER_EQ_POS, 46, 8) \
120 V(CHECK_AT_START, 47, 8) \
121 V(CHECK_NOT_AT_START, 48, 8) \
127 V(CHECK_GREEDY, 49, 8) \
133 V(ADVANCE_CP_AND_GOTO, 50, 8) \
134 V(SET_CURRENT_POSITION_FROM_END, 51, 4) \
140 V(CHECK_CURRENT_POSITION, 52, 8) \
151 V(SKIP_UNTIL_BIT_IN_TABLE, 53, 32) \
165 V(SKIP_UNTIL_CHAR_AND, 54, 24) \
176 V(SKIP_UNTIL_CHAR, 55, 16) \
189 V(SKIP_UNTIL_CHAR_POS_CHECKED, 56, 20) \
201 V(SKIP_UNTIL_CHAR_OR_CHAR, 57, 20) \
214 V(SKIP_UNTIL_GT_OR_NOT_BIT_IN_TABLE, 58, 32)
226#define DECLARE_BYTECODES(name, code, length) \
227 static constexpr int BC_##name = code;
229#undef DECLARE_BYTECODES
232#define DECLARE_BYTECODE_LENGTH(name, code, length) length,
234#undef DECLARE_BYTECODE_LENGTH
243#define DECLARE_BYTECODE_NAME(name, ...) #name,
245#undef DECLARE_BYTECODE_NAME
interpreter::Bytecode bytecode
constexpr bool IsInRange(T value, U lower_limit, U higher_limit)
static constexpr int kRegExpBytecodeCount
constexpr int RegExpBytecodeLength(int bytecode)
constexpr const char * RegExpBytecodeName(int bytecode)
void RegExpBytecodeDisassembleSingle(const uint8_t *code_base, const uint8_t *pc)
const unsigned int MAX_FIRST_ARG
constexpr int BYTECODE_MASK
static constexpr const char *const kRegExpBytecodeNames[]
static constexpr int kRegExpBytecodeLengths[]
void RegExpBytecodeDisassemble(const uint8_t *code_base, int length, const char *pattern)
constexpr int kRegExpPaddedBytecodeCount
#define DECLARE_BYTECODES(name, code, length)
#define BYTECODE_ITERATOR(V)
#define DECLARE_BYTECODE_LENGTH(name, code, length)
#define DECLARE_BYTECODE_NAME(name,...)
#define DCHECK(condition)