v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::NativeRegExpMacroAssembler Class Referenceabstract

#include <regexp-macro-assembler.h>

Inheritance diagram for v8::internal::NativeRegExpMacroAssembler:
Collaboration diagram for v8::internal::NativeRegExpMacroAssembler:

Public Types

enum  Mode { LATIN1 = 1 , UC16 = 2 }
 
enum  Result {
  FAILURE = RegExp::kInternalRegExpFailure , SUCCESS = RegExp::kInternalRegExpSuccess , EXCEPTION = RegExp::kInternalRegExpException , RETRY = RegExp::kInternalRegExpRetry ,
  FALLBACK_TO_EXPERIMENTAL = RegExp::kInternalRegExpFallbackToExperimental , SMALLEST_REGEXP_RESULT = RegExp::kInternalRegExpSmallestResult
}
 
- Public Types inherited from v8::internal::RegExpMacroAssembler
enum  StackCheckFlag { kNoStackLimitCheck = false , kCheckStackLimit = true }
 
enum  IrregexpImplementation
 
enum  GlobalMode { NOT_GLOBAL , GLOBAL_NO_ZERO_LENGTH_CHECK , GLOBAL , GLOBAL_UNICODE }
 

Public Member Functions

 NativeRegExpMacroAssembler (Isolate *isolate, Zone *zone)
 
 ~NativeRegExpMacroAssembler () override=default
 
bool CanReadUnaligned () const override
 
void LoadCurrentCharacterImpl (int cp_offset, Label *on_end_of_input, bool check_bounds, int characters, int eats_at_least) override
 
virtual void LoadCurrentCharacterUnchecked (int cp_offset, int character_count)=0
 
- Public Member Functions inherited from v8::internal::RegExpMacroAssembler
 RegExpMacroAssembler (Isolate *isolate, Zone *zone)
 
virtual ~RegExpMacroAssembler ()=default
 
virtual DirectHandle< HeapObjectGetCode (DirectHandle< String > source, RegExpFlags flags)=0
 
virtual void AbortedCodeGeneration ()
 
virtual int stack_limit_slack_slot_count ()=0
 
virtual void AdvanceCurrentPosition (int by)=0
 
virtual void AdvanceRegister (int reg, int by)=0
 
virtual void Backtrack ()=0
 
virtual void Bind (Label *label)=0
 
virtual void CheckCharacter (unsigned c, Label *on_equal)=0
 
virtual void CheckCharacterAfterAnd (unsigned c, unsigned and_with, Label *on_equal)=0
 
virtual void CheckCharacterGT (base::uc16 limit, Label *on_greater)=0
 
virtual void CheckCharacterLT (base::uc16 limit, Label *on_less)=0
 
virtual void CheckGreedyLoop (Label *on_tos_equals_current_position)=0
 
virtual void CheckAtStart (int cp_offset, Label *on_at_start)=0
 
virtual void CheckNotAtStart (int cp_offset, Label *on_not_at_start)=0
 
virtual void CheckNotBackReference (int start_reg, bool read_backward, Label *on_no_match)=0
 
virtual void CheckNotBackReferenceIgnoreCase (int start_reg, bool read_backward, bool unicode, Label *on_no_match)=0
 
virtual void CheckNotCharacter (unsigned c, Label *on_not_equal)=0
 
virtual void CheckNotCharacterAfterAnd (unsigned c, unsigned and_with, Label *on_not_equal)=0
 
virtual void CheckNotCharacterAfterMinusAnd (base::uc16 c, base::uc16 minus, base::uc16 and_with, Label *on_not_equal)=0
 
virtual void CheckCharacterInRange (base::uc16 from, base::uc16 to, Label *on_in_range)=0
 
virtual void CheckCharacterNotInRange (base::uc16 from, base::uc16 to, Label *on_not_in_range)=0
 
virtual bool CheckCharacterInRangeArray (const ZoneList< CharacterRange > *ranges, Label *on_in_range)=0
 
virtual bool CheckCharacterNotInRangeArray (const ZoneList< CharacterRange > *ranges, Label *on_not_in_range)=0
 
virtual void CheckBitInTable (Handle< ByteArray > table, Label *on_bit_set)=0
 
virtual void SkipUntilBitInTable (int cp_offset, Handle< ByteArray > table, Handle< ByteArray > nibble_table, int advance_by)=0
 
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)
 
virtual void Fail ()=0
 
virtual void GoTo (Label *label)=0
 
virtual void IfRegisterGE (int reg, int comparand, Label *if_ge)=0
 
virtual void IfRegisterLT (int reg, int comparand, Label *if_lt)=0
 
virtual void IfRegisterEqPos (int reg, Label *if_eq)=0
 
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)
 
virtual void PopCurrentPosition ()=0
 
virtual void PopRegister (int register_index)=0
 
virtual void PushBacktrack (Label *label)=0
 
virtual void PushCurrentPosition ()=0
 
virtual void PushRegister (int register_index, StackCheckFlag check_stack_limit)=0
 
virtual void ReadCurrentPositionFromRegister (int reg)=0
 
virtual void ReadStackPointerFromRegister (int reg)=0
 
virtual void SetCurrentPositionFromEnd (int by)=0
 
virtual void SetRegister (int register_index, int to)=0
 
virtual bool Succeed ()=0
 
virtual void WriteCurrentPositionToRegister (int reg, int cp_offset)=0
 
virtual void ClearRegisters (int reg_from, int reg_to)=0
 
virtual void WriteStackPointerToRegister (int reg)=0
 
void CheckNotInSurrogatePair (int cp_offset, Label *on_failure)
 
const char * ImplementationToString (IrregexpImplementation impl)
 
virtual IrregexpImplementation Implementation ()=0
 
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
 
Isolateisolate () const
 
Zonezone () const
 

Static Public Member Functions

static int Match (DirectHandle< IrRegExpData > regexp_data, DirectHandle< String > subject, int *offsets_vector, int offsets_vector_length, int previous_index, Isolate *isolate)
 
static V8_EXPORT_PRIVATE int ExecuteForTesting (Tagged< String > input, int start_offset, const uint8_t *input_start, const uint8_t *input_end, int *output, int output_size, Isolate *isolate, Tagged< JSRegExp > regexp)
 
static Address GrowStack (Isolate *isolate)
 
static int CheckStackGuardState (Isolate *isolate, int start_index, RegExp::CallOrigin call_origin, Address *return_address, Tagged< InstructionStream > re_code, Address *subject, const uint8_t **input_start, const uint8_t **input_end, uintptr_t gap)
 
static Address word_character_map_address ()
 
- Static Public Member Functions inherited from v8::internal::RegExpMacroAssembler
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)
 

Protected Member Functions

Handle< ByteArrayGetOrAddRangeArray (const ZoneList< CharacterRange > *ranges)
 
- Protected Member Functions inherited from v8::internal::RegExpMacroAssembler
bool has_backtrack_limit () const
 
uint32_t backtrack_limit () const
 
bool can_fallback () const
 

Static Protected Attributes

static const uint8_t word_character_map [256]
 

Static Private Member Functions

static int Execute (Tagged< String > input, int start_offset, const uint8_t *input_start, const uint8_t *input_end, int *output, int output_size, Isolate *isolate, Tagged< IrRegExpData > regexp_data)
 

Private Attributes

ZoneUnorderedMap< uint32_t, IndirectHandle< FixedUInt16Array > > range_array_cache_
 

Additional Inherited Members

- Static Public Attributes inherited from v8::internal::RegExpMacroAssembler
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
 

Detailed Description

Definition at line 277 of file regexp-macro-assembler.h.

Member Enumeration Documentation

◆ Mode

Enumerator
LATIN1 
UC16 

Definition at line 280 of file regexp-macro-assembler.h.

◆ Result

Enumerator
FAILURE 
SUCCESS 
EXCEPTION 
RETRY 
FALLBACK_TO_EXPERIMENTAL 
SMALLEST_REGEXP_RESULT 

Definition at line 293 of file regexp-macro-assembler.h.

Constructor & Destructor Documentation

◆ NativeRegExpMacroAssembler()

v8::internal::NativeRegExpMacroAssembler::NativeRegExpMacroAssembler ( Isolate * isolate,
Zone * zone )
inline

Definition at line 302 of file regexp-macro-assembler.h.

◆ ~NativeRegExpMacroAssembler()

v8::internal::NativeRegExpMacroAssembler::~NativeRegExpMacroAssembler ( )
overridedefault

Member Function Documentation

◆ CanReadUnaligned()

bool v8::internal::NativeRegExpMacroAssembler::CanReadUnaligned ( ) const
overridevirtual

Implements v8::internal::RegExpMacroAssembler.

Reimplemented in v8::internal::RegExpMacroAssemblerMIPS.

Definition at line 276 of file regexp-macro-assembler.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CheckStackGuardState()

int v8::internal::NativeRegExpMacroAssembler::CheckStackGuardState ( Isolate * isolate,
int start_index,
RegExp::CallOrigin call_origin,
Address * return_address,
Tagged< InstructionStream > re_code,
Address * subject,
const uint8_t ** input_start,
const uint8_t ** input_end,
uintptr_t gap )
static

Definition at line 284 of file regexp-macro-assembler.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Execute()

int v8::internal::NativeRegExpMacroAssembler::Execute ( Tagged< String > input,
int start_offset,
const uint8_t * input_start,
const uint8_t * input_end,
int * output,
int output_size,
Isolate * isolate,
Tagged< IrRegExpData > regexp_data )
staticprivate

Definition at line 428 of file regexp-macro-assembler.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ExecuteForTesting()

int v8::internal::NativeRegExpMacroAssembler::ExecuteForTesting ( Tagged< String > input,
int start_offset,
const uint8_t * input_start,
const uint8_t * input_end,
int * output,
int output_size,
Isolate * isolate,
Tagged< JSRegExp > regexp )
static

Definition at line 417 of file regexp-macro-assembler.cc.

Here is the call graph for this function:

◆ GetOrAddRangeArray()

Handle< ByteArray > v8::internal::NativeRegExpMacroAssembler::GetOrAddRangeArray ( const ZoneList< CharacterRange > * ranges)
protected

Definition at line 168 of file regexp-macro-assembler.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GrowStack()

Address v8::internal::NativeRegExpMacroAssembler::GrowStack ( Isolate * isolate)
static

Definition at line 508 of file regexp-macro-assembler.cc.

Here is the call graph for this function:

◆ LoadCurrentCharacterImpl()

void v8::internal::NativeRegExpMacroAssembler::LoadCurrentCharacterImpl ( int cp_offset,
Label * on_end_of_input,
bool check_bounds,
int characters,
int eats_at_least )
overridevirtual

Implements v8::internal::RegExpMacroAssembler.

Definition at line 258 of file regexp-macro-assembler.cc.

Here is the call graph for this function:

◆ LoadCurrentCharacterUnchecked()

virtual void v8::internal::NativeRegExpMacroAssembler::LoadCurrentCharacterUnchecked ( int cp_offset,
int character_count )
pure virtual

◆ Match()

int v8::internal::NativeRegExpMacroAssembler::Match ( DirectHandle< IrRegExpData > regexp_data,
DirectHandle< String > subject,
int * offsets_vector,
int offsets_vector_length,
int previous_index,
Isolate * isolate )
static

Definition at line 369 of file regexp-macro-assembler.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ word_character_map_address()

static Address v8::internal::NativeRegExpMacroAssembler::word_character_map_address ( )
inlinestatic

Definition at line 343 of file regexp-macro-assembler.h.

Here is the caller graph for this function:

Member Data Documentation

◆ range_array_cache_

ZoneUnorderedMap<uint32_t, IndirectHandle<FixedUInt16Array> > v8::internal::NativeRegExpMacroAssembler::range_array_cache_
private

Definition at line 363 of file regexp-macro-assembler.h.

◆ word_character_map

const uint8_t v8::internal::NativeRegExpMacroAssembler::word_character_map
staticprotected

Definition at line 351 of file regexp-macro-assembler.h.


The documentation for this class was generated from the following files: