Chromium Code Reviews| Index: src/code-stub-assembler.h |
| diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h |
| index 8ec67ee82611f8a8907628cc5a59595ec5b2b3ab..4c81ff5d0cd6bb4b6b86b803946a9f7e468a14a1 100644 |
| --- a/src/code-stub-assembler.h |
| +++ b/src/code-stub-assembler.h |
| @@ -188,6 +188,11 @@ class CodeStubAssembler : public compiler::CodeAssembler { |
| if_notequal); |
| } |
| + void BranchIfJSReceiver(compiler::Node* object, Label* if_true, |
|
Igor Sheludko
2016/10/18 12:33:21
I think if_receiver/if_not_receiver are better nam
|
| + Label* if_false); |
| + void BranchIfJSObject(compiler::Node* object, Label* if_true, |
|
Igor Sheludko
2016/10/18 12:33:21
Same here.
|
| + Label* if_false); |
| + |
| void BranchIfFastJSArray(compiler::Node* object, compiler::Node* context, |
| Label* if_true, Label* if_false); |
| @@ -223,6 +228,8 @@ class CodeStubAssembler : public compiler::CodeAssembler { |
| compiler::Node* LoadMap(compiler::Node* object); |
| // Load the instance type of an HeapObject. |
| compiler::Node* LoadInstanceType(compiler::Node* object); |
| + // Compare the instance the type of the object against the provided one. |
| + compiler::Node* HasInstanceType(compiler::Node* object, InstanceType type); |
| // Checks that given heap object has given instance type. |
| void AssertInstanceType(compiler::Node* object, InstanceType instance_type); |
| // Load the properties backing store of a JSObject. |
| @@ -247,8 +254,14 @@ class CodeStubAssembler : public compiler::CodeAssembler { |
| compiler::Node* LoadMapElementsKind(compiler::Node* map); |
| // Load the instance descriptors of a map. |
| compiler::Node* LoadMapDescriptors(compiler::Node* map); |
| + // Load the number of own descriptors from a map. |
| + compiler::Node* LoadMapNumberOfOwnDescriptors(compiler::Node* map); |
| // Load the prototype of a map. |
| compiler::Node* LoadMapPrototype(compiler::Node* map); |
| + // Load the prototype info of a map. The result has to be checked if it is a |
| + // prototype info object or not. |
| + compiler::Node* LoadMapPrototypeInfo(compiler::Node* map, |
| + Label* if_has_no_proto_info); |
| // Load the instance size of a Map. |
| compiler::Node* LoadMapInstanceSize(compiler::Node* map); |
| // Load the inobject properties count of a Map (valid only for JSObjects). |
| @@ -257,6 +270,12 @@ class CodeStubAssembler : public compiler::CodeAssembler { |
| compiler::Node* LoadMapConstructorFunctionIndex(compiler::Node* map); |
| // Load the constructor of a Map (equivalent to Map::GetConstructor()). |
| compiler::Node* LoadMapConstructor(compiler::Node* map); |
| + // Check whether the map is for fast properties. |
| + compiler::Node* IsFastMap(compiler::Node* map); |
| + // Check whether the map is for an object with special properties, such as a |
| + // JSProxy or an object with interceptors. |
| + compiler::Node* IsSpecialReceiverMap(compiler::Node* map); |
| + compiler::Node* IsSpecialReceiverInstanceType(compiler::Node* instance_type); |
| // Load the hash field of a name as an uint32 value. |
| compiler::Node* LoadNameHashField(compiler::Node* name); |
| @@ -335,6 +354,10 @@ class CodeStubAssembler : public compiler::CodeAssembler { |
| compiler::Node* object, compiler::Node* index, compiler::Node* value, |
| ParameterMode parameter_mode = INTEGER_PARAMETERS); |
| + void StoreFieldsNoWriteBarrier(compiler::Node* start_address, |
| + compiler::Node* end_address, |
| + compiler::Node* value); |
| + |
| // Allocate a HeapNumber without initializing its value. |
| compiler::Node* AllocateHeapNumber(MutableMode mode = IMMUTABLE); |
| // Allocate a HeapNumber with a specific value. |
| @@ -382,6 +405,19 @@ class CodeStubAssembler : public compiler::CodeAssembler { |
| compiler::Node* index, |
| compiler::Node* input); |
| + compiler::Node* AllocateJSObjectFromMap(compiler::Node* map, |
| + compiler::Node* properties = nullptr, |
| + compiler::Node* elements = nullptr); |
| + |
| + void InitializeJSObjectFromMap(compiler::Node* object, compiler::Node* map, |
| + compiler::Node* size, |
| + compiler::Node* properties = nullptr, |
| + compiler::Node* elements = nullptr); |
| + |
| + void InitializeJSObjectBody(compiler::Node* object, compiler::Node* map, |
| + compiler::Node* size, |
| + int start_offset = JSObject::kHeaderSize); |
| + |
| // Allocate a JSArray without elements and initialize the header fields. |
| compiler::Node* AllocateUninitializedJSArrayWithoutElements( |
| ElementsKind kind, compiler::Node* array_map, compiler::Node* length, |