Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Unified Diff: src/code-stub-assembler.h

Issue 2355793003: [stubs] Port SubStringStub to TurboFan (Closed)
Patch Set: Address comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/code-stub-assembler.h
diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h
index 76d4cece1bea1ba2f589a30c396d6b1626b707ee..936c5d267799b52aee590fc4cbe85ae5e9143a57 100644
--- a/src/code-stub-assembler.h
+++ b/src/code-stub-assembler.h
@@ -117,7 +117,9 @@ class CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* SmiSub(compiler::Node* a, compiler::Node* b);
compiler::Node* SmiSubWithOverflow(compiler::Node* a, compiler::Node* b);
compiler::Node* SmiEqual(compiler::Node* a, compiler::Node* b);
+ compiler::Node* SmiAbove(compiler::Node* a, compiler::Node* b);
compiler::Node* SmiAboveOrEqual(compiler::Node* a, compiler::Node* b);
+ compiler::Node* SmiBelow(compiler::Node* a, compiler::Node* b);
compiler::Node* SmiLessThan(compiler::Node* a, compiler::Node* b);
compiler::Node* SmiLessThanOrEqual(compiler::Node* a, compiler::Node* b);
compiler::Node* SmiMax(compiler::Node* a, compiler::Node* b);
@@ -141,7 +143,7 @@ class CodeStubAssembler : public compiler::CodeAssembler {
// Check a value for smi-ness
compiler::Node* WordIsSmi(compiler::Node* a);
- // Check that the value is a positive smi.
+ // Check that the value is a non-negative smi.
compiler::Node* WordIsPositiveSmi(compiler::Node* a);
void BranchIfSmiEqual(compiler::Node* a, compiler::Node* b, Label* if_true,
@@ -328,6 +330,18 @@ class CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* AllocateSeqTwoByteString(int length);
compiler::Node* AllocateSeqTwoByteString(compiler::Node* context,
compiler::Node* length);
+
+ // Allocate a SlicedOneByteString with the given length, parent and offset.
+ // |length| and |offset| are expected to be tagged.
+ compiler::Node* AllocateSlicedOneByteString(compiler::Node* length,
+ compiler::Node* parent,
+ compiler::Node* offset);
+ // Allocate a SlicedTwoByteString with the given length, parent and offset.
+ // |length| and |offset| are expected to be tagged.
+ compiler::Node* AllocateSlicedTwoByteString(compiler::Node* length,
+ compiler::Node* parent,
+ compiler::Node* offset);
+
// Allocate a JSArray without elements and initialize the header fields.
compiler::Node* AllocateUninitializedJSArrayWithoutElements(
ElementsKind kind, compiler::Node* array_map, compiler::Node* length,
@@ -378,6 +392,16 @@ class CodeStubAssembler : public compiler::CodeAssembler {
WriteBarrierMode barrier_mode = UPDATE_WRITE_BARRIER,
ParameterMode mode = INTEGER_PARAMETERS);
+ // Copies |character_count| elements from |from_string| to |to_string|
+ // starting at the |from_index|'th character. |from_index| and
+ // |character_count| must be Smis s.t.
+ // 0 <= |from_index| <= |from_index| + |character_count| < from_string.length.
+ void CopyStringCharacters(compiler::Node* from_string,
+ compiler::Node* to_string,
+ compiler::Node* from_index,
+ compiler::Node* character_count,
+ String::Encoding encoding);
+
// Loads an element from |array| of |from_kind| elements by given |offset|
// (NOTE: not index!), does a hole check if |if_hole| is provided and
// converts the value so that it becomes ready for storing to array of
@@ -449,6 +473,10 @@ class CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* smi_index);
// Return the single character string with only {code}.
compiler::Node* StringFromCharCode(compiler::Node* code);
+ // Return a new string object which holds a substring containing the range
+ // [from,to[ of string. |from| and |to| are expected to be tagged.
+ compiler::Node* SubString(compiler::Node* context, compiler::Node* string,
+ compiler::Node* from, compiler::Node* to);
compiler::Node* StringFromCodePoint(compiler::Node* codepoint,
UnicodeEncoding encoding);
« no previous file with comments | « src/arm64/code-stubs-arm64.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698