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, |