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

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

Issue 2407813002: [stubs] Port StringAddStub to TF (Closed)
Patch Set: Make ASSERT cheaper Created 4 years, 2 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/builtins/builtins-regexp.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 2efc5b3a67345192ad69c4a94cb2ee1f18d599d5..9889237c7087cfd7ef76ba21f481a0eeab6c9f56 100644
--- a/src/code-stub-assembler.h
+++ b/src/code-stub-assembler.h
@@ -102,6 +102,11 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* IntPtrOrSmiConstant(int value, ParameterMode mode);
+ compiler::Node* IntPtrAddFoldConstants(compiler::Node* left,
+ compiler::Node* right);
+ compiler::Node* IntPtrSubFoldConstants(compiler::Node* left,
+ compiler::Node* right);
+
// Float64 operations.
compiler::Node* Float64Ceil(compiler::Node* x);
compiler::Node* Float64Floor(compiler::Node* x);
@@ -342,13 +347,17 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* AllocateHeapNumberWithValue(compiler::Node* value,
MutableMode mode = IMMUTABLE);
// Allocate a SeqOneByteString with the given length.
- compiler::Node* AllocateSeqOneByteString(int length);
- compiler::Node* AllocateSeqOneByteString(compiler::Node* context,
- compiler::Node* length);
+ compiler::Node* AllocateSeqOneByteString(int length,
+ AllocationFlags flags = kNone);
+ compiler::Node* AllocateSeqOneByteString(
+ compiler::Node* context, compiler::Node* length,
+ ParameterMode mode = INTPTR_PARAMETERS, AllocationFlags flags = kNone);
// Allocate a SeqTwoByteString with the given length.
- compiler::Node* AllocateSeqTwoByteString(int length);
- compiler::Node* AllocateSeqTwoByteString(compiler::Node* context,
- compiler::Node* length);
+ compiler::Node* AllocateSeqTwoByteString(int length,
+ AllocationFlags flags = kNone);
+ compiler::Node* AllocateSeqTwoByteString(
+ compiler::Node* context, compiler::Node* length,
+ ParameterMode mode = INTPTR_PARAMETERS, AllocationFlags flags = kNone);
// Allocate a SlicedOneByteString with the given length, parent and offset.
// |length| and |offset| are expected to be tagged.
@@ -366,13 +375,21 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
// expected to be one-byte strings.
compiler::Node* AllocateOneByteConsString(compiler::Node* length,
compiler::Node* first,
- compiler::Node* second);
+ compiler::Node* second,
+ AllocationFlags flags = kNone);
// Allocate a two-byte ConsString with the given length, first and second
// parts. |length| is expected to be tagged, and |first| and |second| are
// expected to be two-byte strings.
compiler::Node* AllocateTwoByteConsString(compiler::Node* length,
compiler::Node* first,
- compiler::Node* second);
+ compiler::Node* second,
+ AllocationFlags flags = kNone);
+
+ // Allocate an appropriate one- or two-byte ConsString with the first and
+ // second parts specified by |first| and |second|.
+ compiler::Node* NewConsString(compiler::Node* context, compiler::Node* length,
+ compiler::Node* left, compiler::Node* right,
+ AllocationFlags flags = kNone);
// Allocate a RegExpResult with the given length (the number of captures,
// including the match itself), index (the index where the match starts),
@@ -436,16 +453,16 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
// Copies |character_count| elements from |from_string| to |to_string|
// starting at the |from_index|'th character. |from_string| and |to_string|
// must be either both one-byte strings or both two-byte strings.
- // |from_index|, |to_index| and |character_count| must be Smis s.t.
- // 0 <= |from_index| <= |from_index| + |character_count| <= from_string.length
- // and
- // 0 <= |to_index| <= |to_index| + |character_count| <= to_string.length.
+ // |from_index|, |to_index| and |character_count| must be either Smis or
+ // intptr_ts depending on |mode| s.t. 0 <= |from_index| <= |from_index| +
+ // |character_count| <= from_string.length and 0 <= |to_index| <= |to_index| +
+ // |character_count| <= to_string.length.
void CopyStringCharacters(compiler::Node* from_string,
compiler::Node* to_string,
compiler::Node* from_index,
compiler::Node* to_index,
compiler::Node* character_count,
- String::Encoding encoding);
+ String::Encoding encoding, ParameterMode mode);
// 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
@@ -535,8 +552,9 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
compiler::Node* from, compiler::Node* to);
// Return a new string object produced by concatenating |first| with |second|.
- compiler::Node* StringConcat(compiler::Node* context, compiler::Node* first,
- compiler::Node* second);
+ compiler::Node* StringAdd(compiler::Node* context, compiler::Node* first,
+ compiler::Node* second,
+ AllocationFlags flags = kNone);
// Return the first index >= {from} at which {needle_char} was found in
// {string}, or -1 if such an index does not exist. The returned value is
@@ -564,6 +582,13 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
// Convert any object to a Number.
compiler::Node* ToNumber(compiler::Node* context, compiler::Node* input);
+ // Convert any object to a String.
+ compiler::Node* ToString(compiler::Node* context, compiler::Node* input);
+
+ // Convert any object to a Primitive.
+ compiler::Node* JSReceiverToPrimitive(compiler::Node* context,
+ compiler::Node* input);
+
enum ToIntegerTruncationMode {
kNoTruncation,
kTruncateMinusZero,
@@ -890,10 +915,16 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler {
ParameterMode mode = INTPTR_PARAMETERS,
ForEachDirection direction = ForEachDirection::kReverse);
+ compiler::Node* GetArrayAllocationSize(compiler::Node* element_count,
+ ElementsKind kind, ParameterMode mode,
+ int header_size) {
+ return ElementOffsetFromIndex(element_count, kind, mode, header_size);
+ }
+
compiler::Node* GetFixedArrayAllocationSize(compiler::Node* element_count,
ElementsKind kind,
ParameterMode mode) {
- return ElementOffsetFromIndex(element_count, kind, mode,
+ return GetArrayAllocationSize(element_count, kind, mode,
FixedArray::kHeaderSize);
}
« no previous file with comments | « src/builtins/builtins-regexp.cc ('k') | src/code-stub-assembler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698