5#ifndef V8_BUILTINS_BUILTINS_REGEXP_GEN_H_
6#define V8_BUILTINS_BUILTINS_REGEXP_GEN_H_
80 Label* if_not_matched);
157 std::optional<DescriptorIndexNameValue> additional_property_to_check,
158 Label* if_isunmodified,
Label* if_ismodified);
162 Label* if_isunmodified,
163 Label* if_ismodified);
166 Label* if_isunmodified,
Label* if_ismodified);
173 Label* if_isunmodified,
Label* if_ismodified);
176 Label* if_isunmodified,
177 Label* if_ismodified);
188 Label* if_ismodified);
191 const bool is_fastpath);
204 JSRegExp::Flag flag);
TNode< String > RegExpReplaceGlobalSimpleString(TNode< Context > context, TNode< JSRegExp > regexp, TNode< String > subject, TNode< RegExpData > data, TNode< String > replace_string)
TNode< Object > FastLoadLastIndexBeforeSmiCheck(TNode< JSRegExp > regexp)
TNode< UintPtrT > RegExpExecAtom(TNode< Context > context, TNode< AtomRegExpData > data, TNode< String > string, TNode< Smi > last_index, TNode< RawPtrT > result_offsets_vector, TNode< Int32T > result_offsets_vector_length)
std::pair< TNode< RawPtrT >, TNode< BoolT > > LoadOrAllocateRegExpResultVector(TNode< Smi > register_count)
void BranchIfRegExpResult(const TNode< Context > context, const TNode< Object > object, Label *if_isunmodified, Label *if_ismodified)
TNode< Union< Null, JSArray > > RegExpMatchGlobal(TNode< Context > context, TNode< JSRegExp > regexp, TNode< String > subject, TNode< RegExpData > data)
TNode< UintPtrT > RegExpExecInternal(TNode< Context > context, TNode< JSRegExp > regexp, TNode< RegExpData > data, TNode< String > string, TNode< Number > last_index, TNode< RawPtrT > result_offsets_vector, TNode< Int32T > result_offsets_vector_length)
void BranchIfFastRegExpForMatch(TNode< Context > context, TNode< HeapObject > object, Label *if_isunmodified, Label *if_ismodified)
TNode< JSRegExpResult > ConstructNewResultFromMatchInfo(TNode< Context > context, TNode< JSRegExp > regexp, TNode< RegExpMatchInfo > match_info, TNode< String > string, TNode< Number > last_index)
void FastStoreLastIndex(TNode< JSRegExp > regexp, TNode< Smi > value)
TNode< BoolT > SlowFlagGetter(TNode< Context > context, TNode< JSAny > regexp, JSRegExp::Flag flag)
TNode< Smi > FastLoadLastIndex(TNode< JSRegExp > regexp)
TNode< Object > RegExpInitialize(const TNode< Context > context, const TNode< JSRegExp > regexp, const TNode< Object > maybe_pattern, const TNode< Object > maybe_flags)
TNode< BoolT > FastFlagGetterGlobal(TNode< JSRegExp > regexp)
TNode< Smi > AdvanceStringIndexSlow(TNode< String > string, TNode< Number > index, TNode< BoolT > is_unicode)
std::function< void(TNode< IntPtrT >)> OncePerBatchFunction
TNode< JSAny > SlowLoadLastIndex(TNode< Context > context, TNode< JSAny > regexp)
TNode< BoolT > FastFlagGetterUnicode(TNode< JSRegExp > regexp)
TNode< RegExpMatchInfo > RegExpExecInternal_Single(TNode< Context > context, TNode< JSRegExp > regexp, TNode< String > string, TNode< Number > last_index, Label *if_not_matched)
void FreeRegExpResultVector(TNode< RawPtrT > result_vector, TNode< BoolT > is_dynamic)
TNode< Smi > LoadCaptureCount(TNode< RegExpData > data)
TNode< String > FlagsGetter(TNode< Context > context, TNode< JSAny > regexp, const bool is_fastpath)
void BranchIfFastRegExp_Strict(TNode< Context > context, TNode< HeapObject > object, Label *if_isunmodified, Label *if_ismodified)
TNode< BoolT > IsFastRegExpNoPrototype(TNode< Context > context, TNode< Object > object)
void BranchIfFastRegExp(TNode< Context > context, TNode< HeapObject > object, TNode< Map > map, PrototypeCheckAssembler::Flags prototype_check_flags, std::optional< DescriptorIndexNameValue > additional_property_to_check, Label *if_isunmodified, Label *if_ismodified)
TNode< JSRegExpResult > AllocateRegExpResult(TNode< Context > context, TNode< Smi > length, TNode< Smi > index, TNode< String > input, TNode< JSRegExp > regexp, TNode< Number > last_index, TNode< BoolT > has_indices, TNode< FixedArray > *elements_out=nullptr)
std::function< void(TNode< RawPtrT >, TNode< Int32T >, TNode< Int32T >)> OncePerMatchFunction
TNode< RegExpMatchInfo > InitializeMatchInfoFromRegisters(TNode< Context > context, TNode< RegExpMatchInfo > match_info, TNode< Smi > register_count, TNode< String > subject, TNode< RawPtrT > result_offsets_vector)
TNode< BoolT > FastFlagGetter(TNode< JSRegExp > regexp, JSRegExp::Flag flag)
TNode< Smi > RegistersForCaptureCount(TNode< Smi > capture_count)
void BranchIfFastRegExp_Permissive(TNode< Context > context, TNode< HeapObject > object, Label *if_isunmodified, Label *if_ismodified)
TNode< String > AppendStringSlice(TNode< Context > context, TNode< String > to_string, TNode< String > from_string, TNode< Smi > slice_start, TNode< Smi > slice_end)
TNode< IntPtrT > IntPtrZero()
TNode< BoolT > FastFlagGetterUnicodeSets(TNode< JSRegExp > regexp)
void SlowStoreLastIndex(TNode< Context > context, TNode< JSAny > regexp, TNode< Object > value)
TNode< Number > AdvanceStringIndex(TNode< String > string, TNode< Number > index, TNode< BoolT > is_unicode, bool is_fastpath)
TNode< IntPtrT > RegExpExecInternal_Batched(TNode< Context > context, TNode< JSRegExp > regexp, TNode< String > subject, TNode< RegExpData > data, const VariableList &merge_vars, OncePerBatchFunction once_per_batch, OncePerMatchFunction once_per_match)
RegExpBuiltinsAssembler(compiler::CodeAssemblerState *state)
TNode< Smi > AdvanceStringIndexFast(TNode< String > string, TNode< Smi > index, TNode< BoolT > is_unicode)
TNode< JSArray > RegExpPrototypeSplitBody(TNode< Context > context, TNode< JSRegExp > regexp, TNode< String > string, TNode< Smi > limit)
void BranchIfFastRegExpForSearch(TNode< Context > context, TNode< HeapObject > object, Label *if_isunmodified, Label *if_ismodified)
void GetStringPointers(TNode< RawPtrT > string_data, TNode< IntPtrT > offset, TNode< IntPtrT > last_index, TNode< IntPtrT > string_length, String::Encoding encoding, TVariable< RawPtrT > *var_string_start, TVariable< RawPtrT > *var_string_end)
RegExpMatchAllAssembler(compiler::CodeAssemblerState *state)
TNode< JSAny > CreateRegExpStringIterator(TNode< NativeContext > native_context, TNode< JSAny > regexp, TNode< String > string, TNode< BoolT > global, TNode< BoolT > full_unicode)
!IsContextMap !IsContextMap native_context