diff options
Diffstat (limited to 'chromium/v8/src/builtins/builtins-string-gen.h')
-rw-r--r-- | chromium/v8/src/builtins/builtins-string-gen.h | 53 |
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); }; |