| Index: src/compiler/code-stub-assembler.h
|
| diff --git a/src/compiler/code-stub-assembler.h b/src/compiler/code-stub-assembler.h
|
| index 5c8c20c5e734263e211e2e014833ef023da9a239..aea64d5d0fc2431b6fb24252803335ca9e7d5dfb 100644
|
| --- a/src/compiler/code-stub-assembler.h
|
| +++ b/src/compiler/code-stub-assembler.h
|
| @@ -166,7 +166,10 @@ class CodeStubAssembler {
|
| Node* ExternalConstant(ExternalReference address);
|
| Node* Float64Constant(double value);
|
| Node* BooleanMapConstant();
|
| + Node* EmptyStringConstant();
|
| Node* HeapNumberMapConstant();
|
| + Node* NaNConstant();
|
| + Node* NoContextConstant();
|
| Node* NullConstant();
|
| Node* UndefinedConstant();
|
|
|
| @@ -282,9 +285,11 @@ class CodeStubAssembler {
|
| Node* SmiTag(Node* value);
|
| // Untag a Smi value as a Word.
|
| Node* SmiUntag(Node* value);
|
| + Node* SmiToWord(Node* value) { return SmiUntag(value); }
|
|
|
| // Smi conversions.
|
| Node* SmiToFloat64(Node* value);
|
| + Node* SmiFromWord32(Node* value);
|
| Node* SmiToWord32(Node* value);
|
|
|
| // Smi operations.
|
| @@ -293,6 +298,7 @@ class CodeStubAssembler {
|
| Node* SmiSub(Node* a, Node* b);
|
| Node* SmiSubWithOverflow(Node* a, Node* b);
|
| Node* SmiEqual(Node* a, Node* b);
|
| + Node* SmiAboveOrEqual(Node* a, Node* b);
|
| Node* SmiLessThan(Node* a, Node* b);
|
| Node* SmiLessThanOrEqual(Node* a, Node* b);
|
| Node* SmiMin(Node* a, Node* b);
|
| @@ -312,6 +318,10 @@ class CodeStubAssembler {
|
| // Load a field from an object on the heap.
|
| Node* LoadObjectField(Node* object, int offset,
|
| MachineType rep = MachineType::AnyTagged());
|
| + // Store a field to an object on the heap.
|
| + Node* StoreObjectFieldNoWriteBarrier(
|
| + Node* object, int offset, Node* value,
|
| + MachineRepresentation rep = MachineRepresentation::kTagged);
|
| // Load the floating point value of a HeapNumber.
|
| Node* LoadHeapNumberValue(Node* object);
|
| // Store the floating point value of a HeapNumber.
|
| @@ -341,12 +351,19 @@ class CodeStubAssembler {
|
|
|
| // Allocate an object of the given size.
|
| Node* Allocate(int size, AllocationFlags flags = kNone);
|
| + Node* InnerAllocate(Node* previous, int offset);
|
| // Allocate a HeapNumber without initializing its value.
|
| Node* AllocateHeapNumber();
|
| // Allocate a HeapNumber with a specific value.
|
| Node* AllocateHeapNumberWithValue(Node* value);
|
| + // Allocate a SeqOneByteString with the given length.
|
| + Node* AllocateSeqOneByteString(int length);
|
| + // Allocate a SeqTwoByteString with the given length.
|
| + Node* AllocateSeqTwoByteString(int length);
|
|
|
| // Store an array element to a FixedArray.
|
| + Node* StoreFixedArrayElementInt32Index(Node* object, Node* index,
|
| + Node* value);
|
| Node* StoreFixedArrayElementNoWriteBarrier(Node* object, Node* index,
|
| Node* value);
|
| // Load the Map of an HeapObject.
|
| @@ -375,6 +392,17 @@ class CodeStubAssembler {
|
| Node* TruncateTaggedToFloat64(Node* context, Node* value);
|
| Node* TruncateTaggedToWord32(Node* context, Node* value);
|
|
|
| + // Type conversions.
|
| + // Throws a TypeError for {method_name} if {value} is not coercible to Object,
|
| + // or returns the {value} converted to a String otherwise.
|
| + Node* ToThisString(Node* context, Node* value, char const* method_name);
|
| +
|
| + // String helpers.
|
| + // Load a character from a String (might flatten a ConsString).
|
| + Node* StringCharCodeAt(Node* string, Node* smi_index);
|
| + // Return the single character string with only {code}.
|
| + Node* StringFromCharCode(Node* code);
|
| +
|
| // Branching helpers.
|
| // TODO(danno): Can we be more cleverish wrt. edge-split?
|
| void BranchIf(Node* condition, Label* if_true, Label* if_false);
|
|
|