summaryrefslogtreecommitdiff
path: root/chromium/v8/src/builtins/builtins-string-gen.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/builtins/builtins-string-gen.h')
-rw-r--r--chromium/v8/src/builtins/builtins-string-gen.h53
1 files changed, 27 insertions, 26 deletions
diff --git a/chromium/v8/src/builtins/builtins-string-gen.h b/chromium/v8/src/builtins/builtins-string-gen.h
index 679ce0e17fe..64d5a77615d 100644
--- a/chromium/v8/src/builtins/builtins-string-gen.h
+++ b/chromium/v8/src/builtins/builtins-string-gen.h
@@ -19,8 +19,8 @@ class StringBuiltinsAssembler : public CodeStubAssembler {
Node* GetSubstitution(Node* context, Node* subject_string,
Node* match_start_index, Node* match_end_index,
Node* replace_string);
- void StringEqual_Core(Node* context, Node* lhs, Node* lhs_instance_type,
- Node* rhs, Node* rhs_instance_type,
+ void StringEqual_Core(SloppyTNode<String> lhs, Node* lhs_instance_type,
+ SloppyTNode<String> rhs, Node* rhs_instance_type,
TNode<IntPtrT> length, Label* if_equal,
Label* if_not_equal, Label* if_indirect);
void BranchIfStringPrimitiveWithNoCustomIteration(TNode<Object> object,
@@ -51,27 +51,29 @@ class StringBuiltinsAssembler : public CodeStubAssembler {
Node* const search_ptr, Node* const search_length,
Node* const start_position);
- Node* PointerToStringDataAtIndex(Node* const string_data, Node* const index,
- String::Encoding encoding);
+ TNode<IntPtrT> PointerToStringDataAtIndex(Node* const string_data,
+ Node* const index,
+ String::Encoding encoding);
// substr and slice have a common way of handling the {start} argument.
void ConvertAndBoundsCheckStartArgument(Node* context, Variable* var_start,
Node* start, Node* string_length);
- void GenerateStringEqual(Node* context, Node* left, Node* right);
- void GenerateStringRelationalComparison(Node* context, Node* left,
- Node* right, Operation op);
+ void GenerateStringEqual(TNode<String> left, TNode<String> right);
+ void GenerateStringRelationalComparison(TNode<String> left,
+ TNode<String> right, Operation op);
using StringAtAccessor = std::function<TNode<Object>(
TNode<String> receiver, TNode<IntPtrT> length, TNode<IntPtrT> index)>;
- void StringIndexOf(Node* const subject_string, Node* const search_string,
- Node* const position,
- const std::function<void(Node*)>& f_return);
+ void StringIndexOf(TNode<String> const subject_string,
+ TNode<String> const search_string,
+ TNode<Smi> const position,
+ const std::function<void(TNode<Smi>)>& f_return);
TNode<Smi> IndexOfDollarChar(Node* const context, Node* const string);
- TNode<JSArray> StringToArray(TNode<Context> context,
+ TNode<JSArray> StringToArray(TNode<NativeContext> context,
TNode<String> subject_string,
TNode<Smi> subject_length,
TNode<Number> limit_number);
@@ -94,12 +96,13 @@ class StringBuiltinsAssembler : public CodeStubAssembler {
// Important: {regexp_call} may not contain any code that can call into JS.
using NodeFunction0 = std::function<void()>;
using NodeFunction1 = std::function<void(Node* fn)>;
- void MaybeCallFunctionAtSymbol(Node* const context, Node* const object,
- Node* const maybe_string,
- Handle<Symbol> symbol,
- DescriptorIndexAndName symbol_index,
- const NodeFunction0& regexp_call,
- const NodeFunction1& generic_call);
+ using DescriptorIndexNameValue =
+ PrototypeCheckAssembler::DescriptorIndexNameValue;
+ void MaybeCallFunctionAtSymbol(
+ Node* const context, Node* const object, Node* const maybe_string,
+ Handle<Symbol> symbol,
+ DescriptorIndexNameValue additional_property_to_check,
+ const NodeFunction0& regexp_call, const NodeFunction1& generic_call);
};
class StringIncludesIndexOfAssembler : public StringBuiltinsAssembler {
@@ -120,21 +123,19 @@ class StringTrimAssembler : public StringBuiltinsAssembler {
: StringBuiltinsAssembler(state) {}
V8_EXPORT_PRIVATE void GotoIfNotWhiteSpaceOrLineTerminator(
- Node* const char_code, Label* const if_not_whitespace);
+ TNode<Word32T> const char_code, Label* const if_not_whitespace);
protected:
void Generate(String::TrimMode mode, const char* method, TNode<IntPtrT> argc,
TNode<Context> context);
- void ScanForNonWhiteSpaceOrLineTerminator(Node* const string_data,
- Node* const string_data_offset,
- Node* const is_stringonebyte,
- Variable* const var_index,
- Node* const end, int increment,
- Label* const if_none_found);
+ void ScanForNonWhiteSpaceOrLineTerminator(
+ Node* const string_data, Node* const string_data_offset,
+ Node* const is_stringonebyte, TVariable<IntPtrT>* const var_index,
+ TNode<IntPtrT> const end, int increment, Label* const if_none_found);
- void BuildLoop(Variable* const var_index, Node* const end, int increment,
- Label* const if_none_found, Label* const out,
+ void BuildLoop(TVariable<IntPtrT>* const var_index, TNode<IntPtrT> const end,
+ int increment, Label* const if_none_found, Label* const out,
const std::function<Node*(Node*)>& get_character);
};