![]() |
v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
|
#include <regexp-bytecode-generator.h>
Public Member Functions | |
RegExpBytecodeGenerator (Isolate *isolate, Zone *zone) | |
~RegExpBytecodeGenerator () override | |
int | stack_limit_slack_slot_count () override |
bool | CanReadUnaligned () const override |
void | Bind (Label *label) override |
void | AdvanceCurrentPosition (int by) override |
void | PopCurrentPosition () override |
void | PushCurrentPosition () override |
void | Backtrack () override |
void | GoTo (Label *label) override |
void | PushBacktrack (Label *label) override |
bool | Succeed () override |
void | Fail () override |
void | PopRegister (int register_index) override |
void | PushRegister (int register_index, StackCheckFlag check_stack_limit) override |
void | AdvanceRegister (int reg, int by) override |
void | SetCurrentPositionFromEnd (int by) override |
void | SetRegister (int register_index, int to) override |
void | WriteCurrentPositionToRegister (int reg, int cp_offset) override |
void | ClearRegisters (int reg_from, int reg_to) override |
void | ReadCurrentPositionFromRegister (int reg) override |
void | WriteStackPointerToRegister (int reg) override |
void | ReadStackPointerFromRegister (int reg) override |
void | LoadCurrentCharacterImpl (int cp_offset, Label *on_end_of_input, bool check_bounds, int characters, int eats_at_least) override |
void | CheckCharacter (unsigned c, Label *on_equal) override |
void | CheckCharacterAfterAnd (unsigned c, unsigned mask, Label *on_equal) override |
void | CheckCharacterGT (base::uc16 limit, Label *on_greater) override |
void | CheckCharacterLT (base::uc16 limit, Label *on_less) override |
void | CheckGreedyLoop (Label *on_tos_equals_current_position) override |
void | CheckAtStart (int cp_offset, Label *on_at_start) override |
void | CheckNotAtStart (int cp_offset, Label *on_not_at_start) override |
void | CheckNotCharacter (unsigned c, Label *on_not_equal) override |
void | CheckNotCharacterAfterAnd (unsigned c, unsigned mask, Label *on_not_equal) override |
void | CheckNotCharacterAfterMinusAnd (base::uc16 c, base::uc16 minus, base::uc16 mask, Label *on_not_equal) override |
void | CheckCharacterInRange (base::uc16 from, base::uc16 to, Label *on_in_range) override |
void | CheckCharacterNotInRange (base::uc16 from, base::uc16 to, Label *on_not_in_range) override |
bool | CheckCharacterInRangeArray (const ZoneList< CharacterRange > *ranges, Label *on_in_range) override |
bool | CheckCharacterNotInRangeArray (const ZoneList< CharacterRange > *ranges, Label *on_not_in_range) override |
void | CheckBitInTable (Handle< ByteArray > table, Label *on_bit_set) override |
void | SkipUntilBitInTable (int cp_offset, Handle< ByteArray > table, Handle< ByteArray > nibble_table, int advance_by) override |
void | CheckNotBackReference (int start_reg, bool read_backward, Label *on_no_match) override |
void | CheckNotBackReferenceIgnoreCase (int start_reg, bool read_backward, bool unicode, Label *on_no_match) override |
void | IfRegisterLT (int register_index, int comparand, Label *if_lt) override |
void | IfRegisterGE (int register_index, int comparand, Label *if_ge) override |
void | IfRegisterEqPos (int register_index, Label *if_eq) override |
IrregexpImplementation | Implementation () override |
DirectHandle< HeapObject > | GetCode (DirectHandle< String > source, RegExpFlags flags) override |
![]() | |
RegExpMacroAssembler (Isolate *isolate, Zone *zone) | |
virtual | ~RegExpMacroAssembler ()=default |
virtual void | AbortedCodeGeneration () |
virtual bool | SkipUntilBitInTableUseSimd (int advance_by) |
virtual void | CheckPosition (int cp_offset, Label *on_outside_input) |
virtual bool | CheckSpecialClassRanges (StandardCharacterSet type, Label *on_no_match) |
virtual void | BindJumpTarget (Label *label) |
V8_EXPORT_PRIVATE void | LoadCurrentCharacter (int cp_offset, Label *on_end_of_input, bool check_bounds=true, int characters=1, int eats_at_least=kUseCharactersValue) |
void | CheckNotInSurrogatePair (int cp_offset, Label *on_failure) |
const char * | ImplementationToString (IrregexpImplementation impl) |
void | set_slow_safe (bool ssc) |
bool | slow_safe () const |
void | set_backtrack_limit (uint32_t backtrack_limit) |
void | set_can_fallback (bool val) |
void | set_global_mode (GlobalMode mode) |
bool | global () const |
bool | global_with_zero_length_check () const |
bool | global_unicode () const |
Isolate * | isolate () const |
Zone * | zone () const |
Private Member Functions | |
void | ExpandBuffer () |
void | EmitOrLink (Label *label) |
void | Emit32 (uint32_t x) |
void | Emit16 (uint32_t x) |
void | Emit8 (uint32_t x) |
void | Emit (uint32_t bc, uint32_t arg) |
void | Emit (uint32_t bc, int32_t arg) |
void | EmitSkipTable (DirectHandle< ByteArray > table) |
int | length () |
void | Copy (uint8_t *a) |
DISALLOW_IMPLICIT_CONSTRUCTORS (RegExpBytecodeGenerator) | |
Private Attributes | |
ZoneVector< uint8_t > | buffer_ |
int | pc_ |
Label | backtrack_ |
int | advance_current_start_ |
int | advance_current_offset_ |
int | advance_current_end_ |
ZoneUnorderedMap< int, int > | jump_edges_ |
Isolate * | isolate_ |
Static Private Attributes | |
static constexpr int | kInitialBufferSize = 1024 |
static const int | kInvalidPC = -1 |
Additional Inherited Members | |
![]() | |
enum | StackCheckFlag { kNoStackLimitCheck = false , kCheckStackLimit = true } |
enum | IrregexpImplementation |
enum | GlobalMode { NOT_GLOBAL , GLOBAL_NO_ZERO_LENGTH_CHECK , GLOBAL , GLOBAL_UNICODE } |
![]() | |
static int | CaseInsensitiveCompareNonUnicode (Address byte_offset1, Address byte_offset2, size_t byte_length, Isolate *isolate) |
static int | CaseInsensitiveCompareUnicode (Address byte_offset1, Address byte_offset2, size_t byte_length, Isolate *isolate) |
static uint32_t | IsCharacterInRangeArray (uint32_t current_char, Address raw_byte_array) |
![]() | |
static constexpr int | kMaxRegisterCount = (1 << 16) |
static constexpr int | kMaxRegister = kMaxRegisterCount - 1 |
static constexpr int | kMaxCaptures = (kMaxRegister - 1) / 2 |
static constexpr int | kMaxCPOffset = (1 << 15) - 1 |
static constexpr int | kMinCPOffset = -(1 << 15) |
static constexpr int | kTableSizeBits = 7 |
static constexpr int | kTableSize = 1 << kTableSizeBits |
static constexpr int | kTableMask = kTableSize - 1 |
static constexpr int | kUseCharactersValue = -1 |
![]() | |
bool | has_backtrack_limit () const |
uint32_t | backtrack_limit () const |
bool | can_fallback () const |
Definition at line 16 of file regexp-bytecode-generator.h.
Definition at line 17 of file regexp-bytecode-generator.cc.
|
override |
Definition at line 25 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 166 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 123 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 134 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 34 of file regexp-bytecode-generator.cc.
|
inlineoverridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 30 of file regexp-bytecode-generator.h.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 244 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 327 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 234 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 266 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 228 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 299 of file regexp-bytecode-generator.cc.
|
inlineoverridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 72 of file regexp-bytecode-generator.h.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 222 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 308 of file regexp-bytecode-generator.cc.
|
inlineoverridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 83 of file regexp-bytecode-generator.h.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 177 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 249 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 346 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 356 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 255 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 278 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 291 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 85 of file regexp-bytecode-generator.cc.
|
private |
Definition at line 413 of file regexp-bytecode-generator.cc.
|
private |
|
inlineprivate |
Definition at line 21 of file regexp-bytecode-generator-inl.h.
|
inlineprivate |
Definition at line 16 of file regexp-bytecode-generator-inl.h.
|
inlineprivate |
Definition at line 26 of file regexp-bytecode-generator-inl.h.
|
inlineprivate |
Definition at line 44 of file regexp-bytecode-generator-inl.h.
|
inlineprivate |
Definition at line 35 of file regexp-bytecode-generator-inl.h.
|
inlineprivate |
Definition at line 49 of file regexp-bytecode-generator.cc.
|
private |
Definition at line 317 of file regexp-bytecode-generator.cc.
|
private |
Definition at line 417 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 164 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 394 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 140 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 386 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 377 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 368 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 30 of file regexp-bytecode-generator.cc.
|
private |
Definition at line 411 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 183 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 130 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 64 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 154 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 132 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 70 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 92 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 105 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 111 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 116 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 334 of file regexp-bytecode-generator.cc.
|
inlineoverridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 29 of file regexp-bytecode-generator.h.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 159 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 77 of file regexp-bytecode-generator.cc.
|
overridevirtual |
Implements v8::internal::RegExpMacroAssembler.
Definition at line 99 of file regexp-bytecode-generator.cc.
|
private |
Definition at line 129 of file regexp-bytecode-generator.h.
|
private |
Definition at line 128 of file regexp-bytecode-generator.h.
|
private |
Definition at line 127 of file regexp-bytecode-generator.h.
|
private |
Definition at line 125 of file regexp-bytecode-generator.h.
|
private |
Definition at line 121 of file regexp-bytecode-generator.h.
|
private |
Definition at line 137 of file regexp-bytecode-generator.h.
|
private |
Definition at line 135 of file regexp-bytecode-generator.h.
|
staticconstexprprivate |
Definition at line 120 of file regexp-bytecode-generator.h.
|
staticprivate |
Definition at line 139 of file regexp-bytecode-generator.h.
|
private |
Definition at line 124 of file regexp-bytecode-generator.h.