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:
parent
b2ff7a09b5
commit
4e7084ebcf
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user