5 #ifndef V8_BUILTINS_BUILTINS_STRING_GEN_H_ 6 #define V8_BUILTINS_BUILTINS_STRING_GEN_H_ 8 #include "src/code-stub-assembler.h" 19 Node* GetSubstitution(
Node* context,
Node* subject_string,
20 Node* match_start_index,
Node* match_end_index,
21 Node* replace_string);
22 void StringEqual_Core(
Node* context,
Node* lhs,
Node* lhs_instance_type,
26 void BranchIfStringPrimitiveWithNoCustomIteration(
TNode<Object> object,
34 void StringEqual_Loop(
Node* lhs,
Node* lhs_instance_type,
39 Node* DirectStringData(
Node*
string,
Node* string_instance_type);
41 void DispatchOnStringEncodings(
Node*
const lhs_instance_type,
42 Node*
const rhs_instance_type,
46 template <
typename SubjectChar,
typename PatternChar>
47 Node* CallSearchStringRaw(
Node*
const subject_ptr,
Node*
const subject_length,
48 Node*
const search_ptr,
Node*
const search_length,
49 Node*
const start_position);
51 Node* PointerToStringDataAtIndex(
Node*
const string_data,
Node*
const index,
52 String::Encoding encoding);
55 void ConvertAndBoundsCheckStartArgument(
Node* context,
Variable* var_start,
58 void GenerateStringEqual(
Node* context,
Node* left,
Node* right);
59 void GenerateStringRelationalComparison(
Node* context,
Node* left,
60 Node* right, Operation op);
66 typedef std::function<TNode<Object>(
70 void GenerateStringAt(
const char* method_name,
TNode<Context> context,
73 const StringAtAccessor& accessor);
78 UnicodeEncoding encoding);
80 void StringIndexOf(
Node*
const subject_string,
Node*
const search_string,
82 const std::function<
void(
Node*)>& f_return);
91 void RequireObjectCoercible(
Node*
const context,
Node*
const value,
92 const char* method_name);
95 return SmiLessThan(value, SmiConstant(0));
110 typedef std::function<void()> NodeFunction0;
111 typedef std::function<void(Node* fn)> NodeFunction1;
112 void MaybeCallFunctionAtSymbol(
Node*
const context,
Node*
const object,
113 Node*
const maybe_string,
116 const NodeFunction0& regexp_call,
117 const NodeFunction1& generic_call);
126 enum SearchVariant { kIncludes, kIndexOf };
137 void GotoIfNotWhiteSpaceOrLineTerminator(
Node*
const char_code,
138 Label*
const if_not_whitespace);
141 void Generate(String::TrimMode mode,
const char* method,
TNode<IntPtrT> argc,
144 void ScanForNonWhiteSpaceOrLineTerminator(
Node*
const string_data,
145 Node*
const string_data_offset,
146 Node*
const is_stringonebyte,
148 Node*
const end,
int increment,
149 Label*
const if_none_found);
151 void BuildLoop(
Variable*
const var_index,
Node*
const end,
int increment,
153 const std::function<
Node*(
Node*)>& get_character);
159 #endif // V8_BUILTINS_BUILTINS_STRING_GEN_H_