MIPS: Ensure double aligned allocations through runtime routines.

3rd (of 3) CLs to ensure complete alignment of FixedDoubleArrays.

TEST=
BUG=
R=mstarzinger@chromium.org, plind44@gmail.com

Review URL: https://codereview.chromium.org/35313002

Patch from Dusan Milosavljevic <Dusan.Milosavljevic@rt-rk.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
plind44@gmail.com 2013-11-17 17:23:58 +00:00
parent b2ff7a09b5
commit 4e7084ebcf

View File

@ -9786,6 +9786,7 @@ static MaybeObject* Allocate(Isolate* isolate,
bool double_align, bool double_align,
AllocationSpace space) { AllocationSpace space) {
Heap* heap = isolate->heap(); Heap* heap = isolate->heap();
if (double_align) size += kPointerSize;
RUNTIME_ASSERT(IsAligned(size, kPointerSize)); RUNTIME_ASSERT(IsAligned(size, kPointerSize));
RUNTIME_ASSERT(size > 0); RUNTIME_ASSERT(size > 0);
RUNTIME_ASSERT(size <= heap->MaxRegularSpaceAllocationSize()); RUNTIME_ASSERT(size <= heap->MaxRegularSpaceAllocationSize());
@ -9797,6 +9798,9 @@ static MaybeObject* Allocate(Isolate* isolate,
MemoryChunk* chunk = MemoryChunk::FromAddress(allocation->address()); MemoryChunk* chunk = MemoryChunk::FromAddress(allocation->address());
ASSERT(chunk->owner()->identity() == space); ASSERT(chunk->owner()->identity() == space);
#endif #endif
if (double_align) {
allocation = heap->EnsureDoubleAligned(allocation, size);
}
heap->CreateFillerObjectAt(allocation->address(), size); heap->CreateFillerObjectAt(allocation->address(), size);
return allocation; return allocation;
} }