5#ifndef RUNTIME_VM_REGEXP_ASSEMBLER_H_
6#define RUNTIME_VM_REGEXP_ASSEMBLER_H_
10#if !defined(DART_PRECOMPILED_RUNTIME)
43 intptr_t
pos()
const {
return pos_; }
45 bool is_linked()
const {
return !is_bound_ && is_linked_; }
46#if !defined(DART_PRECOMPILED_RUNTIME)
58#if !defined(DART_PRECOMPILED_RUNTIME)
69#if !defined(DART_PRECOMPILED_RUNTIME)
79#if !defined(DART_PRECOMPILED_RUNTIME)
88 bool is_bound_ =
false;
89 bool is_linked_ =
false;
91#if !defined(DART_PRECOMPILED_RUNTIME)
214 intptr_t characters = 1) = 0;
218 virtual void Print(
const char* str) = 0;
229 virtual void SetRegister(intptr_t register_index, intptr_t to) = 0;
233 intptr_t cp_offset) = 0;
262 bool slow_safe_compiler_;
void check_bounds(skiatest::Reporter *reporter, const SkPath &path)
void set_block_id(intptr_t block_id)
Convenience wrapper around a BlockEntryInstr pointer.
void BindTo(intptr_t pos)
void LinkTo(intptr_t pos)
JoinEntryInstr * block() const
void set_global_mode(GlobalMode mode)
virtual void CheckCharacterLT(uint16_t limit, BlockLabel *on_less)=0
virtual void CheckCharacterInRange(uint16_t from, uint16_t to, BlockLabel *on_in_range)=0
virtual void CheckNotBackReferenceIgnoreCase(intptr_t start_reg, bool read_backward, bool unicode, BlockLabel *on_no_match)=0
static constexpr intptr_t kMaxRegister
virtual void CheckNotCharacter(unsigned c, BlockLabel *on_not_equal)=0
virtual void Print(const char *str)=0
virtual void ReadStackPointerFromRegister(intptr_t reg)=0
static constexpr intptr_t kTableSizeBits
static constexpr intptr_t kTableMask
static constexpr intptr_t kMinCPOffset
virtual void PushRegister(intptr_t register_index)=0
virtual void PopCurrentPosition()=0
virtual void CheckNotAtStart(intptr_t cp_offset, BlockLabel *on_not_at_start)=0
virtual void SetRegister(intptr_t register_index, intptr_t to)=0
virtual IrregexpImplementation Implementation()=0
virtual void CheckPosition(intptr_t cp_offset, BlockLabel *on_outside_input)
virtual void CheckAtStart(BlockLabel *on_at_start)=0
static constexpr intptr_t kTableSize
RegExpMacroAssembler(Zone *zone)
virtual void PrintBlocks()=0
virtual void CheckCharacterAfterAnd(unsigned c, unsigned and_with, BlockLabel *on_equal)=0
virtual void IfRegisterGE(intptr_t reg, intptr_t comparand, BlockLabel *if_ge)=0
virtual void ReadCurrentPositionFromRegister(intptr_t reg)=0
virtual void AdvanceRegister(intptr_t reg, intptr_t by)=0
virtual void WriteCurrentPositionToRegister(intptr_t reg, intptr_t cp_offset)=0
virtual void CheckCharacterNotInRange(uint16_t from, uint16_t to, BlockLabel *on_not_in_range)=0
virtual void CheckNotCharacterAfterAnd(unsigned c, unsigned and_with, BlockLabel *on_not_equal)=0
virtual void IfRegisterEqPos(intptr_t reg, BlockLabel *if_eq)=0
virtual void CheckCharacterGT(uint16_t limit, BlockLabel *on_greater)=0
virtual void CheckNotBackReference(intptr_t start_reg, bool read_backward, BlockLabel *on_no_match)=0
virtual bool IsClosed() const =0
virtual intptr_t stack_limit_slack()=0
virtual bool CanReadUnaligned()=0
virtual void PopRegister(intptr_t register_index)=0
bool global_with_zero_length_check()
virtual void PushCurrentPosition()=0
virtual void SetCurrentPositionFromEnd(intptr_t by)=0
virtual void AdvanceCurrentPosition(intptr_t by)=0
@ kBytecodeImplementation
virtual void BindBlock(BlockLabel *label)=0
virtual void CheckCharacter(unsigned c, BlockLabel *on_equal)=0
virtual void IfRegisterLT(intptr_t reg, intptr_t comparand, BlockLabel *if_lt)=0
void set_slow_safe(bool ssc)
virtual void CheckGreedyLoop(BlockLabel *on_tos_equals_current_position)=0
virtual void GoTo(BlockLabel *to)=0
virtual void CheckBitInTable(const TypedData &table, BlockLabel *on_bit_set)=0
void CheckNotInSurrogatePair(intptr_t cp_offset, BlockLabel *on_failure)
virtual bool CheckSpecialCharacterClass(uint16_t type, BlockLabel *on_no_match)
virtual void Backtrack()=0
virtual void CheckNotCharacterAfterMinusAnd(uint16_t c, uint16_t minus, uint16_t and_with, BlockLabel *on_not_equal)=0
virtual void LoadCurrentCharacter(intptr_t cp_offset, BlockLabel *on_end_of_input, bool check_bounds=true, intptr_t characters=1)=0
virtual void PushBacktrack(BlockLabel *label)=0
virtual void WriteStackPointerToRegister(intptr_t reg)=0
virtual void ClearRegisters(intptr_t reg_from, intptr_t reg_to)=0
static constexpr intptr_t kMaxCPOffset
virtual void CheckPreemption(bool is_backtrack)
virtual ~RegExpMacroAssembler()
@ GLOBAL_NO_ZERO_LENGTH_CHECK
uword CaseInsensitiveCompareUTF16(uword str_raw, uword lhs_index_raw, uword rhs_index_raw, uword length_raw)
void PrintUtf16(uint16_t c)
uword CaseInsensitiveCompareUCS2(uword str_raw, uword lhs_index_raw, uword rhs_index_raw, uword length_raw)
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive mode