Index: src/code-stub-assembler.h |
diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h |
index 12653fa843f5a497eeabc4f283b6cc1c932d2606..7eab9d18b12dc358e8c5ab2c5236f0eec2289cd4 100644 |
--- a/src/code-stub-assembler.h |
+++ b/src/code-stub-assembler.h |
@@ -108,6 +108,9 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { |
compiler::Node* right); |
compiler::Node* IntPtrSubFoldConstants(compiler::Node* left, |
compiler::Node* right); |
+ // Round the 32bits payload of the provided word up to the next power of two. |
+ compiler::Node* IntPtrRoundUpToPowerOfTwo32(compiler::Node* value); |
+ compiler::Node* IntPtrMax(compiler::Node* left, compiler::Node* right); |
// Float64 operations. |
compiler::Node* Float64Ceil(compiler::Node* x); |
@@ -167,6 +170,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { |
compiler::Node* WordIsPositiveSmi(compiler::Node* a); |
// Check that a word has a word-aligned address. |
compiler::Node* WordIsWordAligned(compiler::Node* word); |
+ compiler::Node* WordIsPowerOfTwo(compiler::Node* value); |
void BranchIfSmiEqual(compiler::Node* a, compiler::Node* b, Label* if_true, |
Label* if_false) { |
@@ -286,6 +290,8 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { |
// JSProxy or an object with interceptors. |
compiler::Node* IsSpecialReceiverMap(compiler::Node* map); |
compiler::Node* IsSpecialReceiverInstanceType(compiler::Node* instance_type); |
+ // Check if the map is set for slow properties. |
+ compiler::Node* IsDictionaryMap(compiler::Node* map); |
// Load the hash field of a name as an uint32 value. |
compiler::Node* LoadNameHashField(compiler::Node* name); |
@@ -360,6 +366,14 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { |
Heap::RootListIndex root); |
// Store an array element to a FixedArray. |
compiler::Node* StoreFixedArrayElement( |
+ compiler::Node* object, int index, compiler::Node* value, |
+ WriteBarrierMode barrier_mode = UPDATE_WRITE_BARRIER, |
+ ParameterMode parameter_mode = INTEGER_PARAMETERS) { |
+ return StoreFixedArrayElement(object, Int32Constant(index), value, |
+ barrier_mode, parameter_mode); |
+ } |
+ |
+ compiler::Node* StoreFixedArrayElement( |
compiler::Node* object, compiler::Node* index, compiler::Node* value, |
WriteBarrierMode barrier_mode = UPDATE_WRITE_BARRIER, |
ParameterMode parameter_mode = INTEGER_PARAMETERS); |
@@ -431,6 +445,9 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { |
compiler::Node* index, |
compiler::Node* input); |
+ compiler::Node* AllocateNameDictionary(int capacity); |
+ compiler::Node* AllocateNameDictionary(compiler::Node* capacity); |
+ |
compiler::Node* AllocateJSObjectFromMap(compiler::Node* map, |
compiler::Node* properties = nullptr, |
compiler::Node* elements = nullptr); |
@@ -722,6 +739,8 @@ class V8_EXPORT_PRIVATE CodeStubAssembler : public compiler::CodeAssembler { |
compiler::Node* EntryToIndex(compiler::Node* entry) { |
return EntryToIndex<Dictionary>(entry, Dictionary::kEntryKeyIndex); |
} |
+ // Calculate a valid size for the a hash table. |
+ compiler::Node* HashTableComputeCapacity(compiler::Node* at_least_space_for); |
// Looks up an entry in a NameDictionaryBase successor. If the entry is found |
// control goes to {if_found} and {var_name_index} contains an index of the |