| Index: src/code-stub-assembler.h
|
| diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h
|
| index 8ec67ee82611f8a8907628cc5a59595ec5b2b3ab..308954fb7986d746f0ce402cb571d36665e9d221 100644
|
| --- a/src/code-stub-assembler.h
|
| +++ b/src/code-stub-assembler.h
|
| @@ -145,6 +145,7 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* InnerAllocate(compiler::Node* previous, int offset);
|
| compiler::Node* InnerAllocate(compiler::Node* previous,
|
| compiler::Node* offset);
|
| + compiler::Node* IsRegularHeapObjectSize(compiler::Node* size);
|
|
|
| void Assert(compiler::Node* condition, const char* string = nullptr,
|
| const char* file = nullptr, int line = 0);
|
| @@ -188,6 +189,11 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| if_notequal);
|
| }
|
|
|
| + void BranchIfJSReceiver(compiler::Node* object, Label* if_true,
|
| + Label* if_false);
|
| + void BranchIfJSObject(compiler::Node* object, Label* if_true,
|
| + Label* if_false);
|
| +
|
| void BranchIfFastJSArray(compiler::Node* object, compiler::Node* context,
|
| Label* if_true, Label* if_false);
|
|
|
| @@ -223,6 +229,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.
|
| @@ -249,6 +257,10 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* LoadMapDescriptors(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 +269,10 @@ 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 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 +351,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 +402,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,
|
|
|