| Index: src/code-stubs.cc
|
| diff --git a/src/code-stubs.cc b/src/code-stubs.cc
|
| index 46ad63b4a4bdc3803bea4faf9528274c2d667764..8600350d0f38d5d081c1c203a923a0dcc296bffc 100644
|
| --- a/src/code-stubs.cc
|
| +++ b/src/code-stubs.cc
|
| @@ -478,7 +478,7 @@ void StoreMapStub::GenerateAssembly(compiler::CodeAssemblerState* state) const {
|
| Node* map = assembler.Parameter(Descriptor::kMap);
|
| Node* value = assembler.Parameter(Descriptor::kValue);
|
|
|
| - assembler.StoreObjectField(receiver, JSObject::kMapOffset, map);
|
| + assembler.StoreMap(receiver, map);
|
| assembler.Return(value);
|
| }
|
|
|
| @@ -521,7 +521,7 @@ void StoreTransitionStub::GenerateAssembly(
|
|
|
| // And finally update the map.
|
| assembler.Comment("Store map");
|
| - assembler.StoreObjectField(receiver, JSObject::kMapOffset, map);
|
| + assembler.StoreMap(receiver, map);
|
| assembler.Return(value);
|
|
|
| // Only store to tagged field never bails out.
|
| @@ -2233,9 +2233,8 @@ compiler::Node* FastCloneShallowObjectStub::GenerateFastPath(
|
|
|
| if (FLAG_allocation_site_pretenuring) {
|
| Node* memento = assembler->InnerAllocate(copy, object_size);
|
| - assembler->StoreObjectFieldNoWriteBarrier(
|
| - memento, HeapObject::kMapOffset,
|
| - assembler->LoadRoot(Heap::kAllocationMementoMapRootIndex));
|
| + assembler->StoreMapNoWriteBarrier(memento,
|
| + Heap::kAllocationMementoMapRootIndex);
|
| assembler->StoreObjectFieldNoWriteBarrier(
|
| memento, AllocationMemento::kAllocationSiteOffset, allocation_site);
|
| Node* memento_create_count = assembler->LoadObjectField(
|
| @@ -2602,10 +2601,8 @@ compiler::Node* FastNewFunctionContextStub::Generate(
|
| // Create a new closure from the given function info in new space
|
| Node* function_context = assembler->Allocate(size);
|
|
|
| - Isolate* isolate = assembler->isolate();
|
| - assembler->StoreMapNoWriteBarrier(
|
| - function_context,
|
| - assembler->HeapConstant(isolate->factory()->function_context_map()));
|
| + assembler->StoreMapNoWriteBarrier(function_context,
|
| + Heap::kFunctionContextMapRootIndex);
|
| assembler->StoreObjectFieldNoWriteBarrier(function_context,
|
| Context::kLengthOffset,
|
| assembler->SmiFromWord32(length));
|
| @@ -2734,10 +2731,14 @@ compiler::Node* NonEmptyShallowClone(CodeStubAssembler* assembler,
|
| kind, boilerplate_map, length, allocation_site, capacity, param_mode);
|
|
|
| assembler->Comment("copy elements header");
|
| - for (int offset = 0; offset < FixedArrayBase::kHeaderSize;
|
| - offset += kPointerSize) {
|
| - Node* value = assembler->LoadObjectField(boilerplate_elements, offset);
|
| - assembler->StoreObjectField(elements, offset, value);
|
| + // Header consists of map and length.
|
| + STATIC_ASSERT(FixedArrayBase::kHeaderSize == 2 * kPointerSize);
|
| + assembler->StoreMap(elements, assembler->LoadMap(boilerplate_elements));
|
| + {
|
| + int offset = FixedArrayBase::kLengthOffset;
|
| + assembler->StoreObjectFieldNoWriteBarrier(
|
| + elements, offset,
|
| + assembler->LoadObjectField(boilerplate_elements, offset));
|
| }
|
|
|
| if (assembler->Is64()) {
|
|
|