| Index: src/heap-inl.h
|
| diff --git a/src/heap-inl.h b/src/heap-inl.h
|
| index ad6f44f935f1af9349d99f0cc670017a3cd7f192..e75248e47168bd64895f239a6134442ae27cfd92 100644
|
| --- a/src/heap-inl.h
|
| +++ b/src/heap-inl.h
|
| @@ -373,6 +373,28 @@ void Heap::RecordWrites(Address address, int start, int len) {
|
| }
|
|
|
|
|
| +STATIC_ASSERT((FixedDoubleArray::kHeaderSize & kDoubleAlignmentMask) == 0);
|
| +STATIC_ASSERT((ConstantPoolArray::kHeaderSize & kDoubleAlignmentMask) == 0);
|
| +
|
| +
|
| +HeapObject* Heap::EnsureDoubleAligned(HeapObject* object, int size) {
|
| + if ((OffsetFrom(object->address()) & kDoubleAlignmentMask) != 0) {
|
| + CreateFillerObjectAt(object->address(), kPointerSize);
|
| + return HeapObject::FromAddress(object->address() + kPointerSize);
|
| + } else {
|
| + CreateFillerObjectAt(object->address() + size - kPointerSize,
|
| + kPointerSize);
|
| + return object;
|
| + }
|
| +}
|
| +
|
| +
|
| +bool Heap::MustBeDoubleAligned(HeapObject* object) {
|
| + return object->IsFixedDoubleArray() &&
|
| + (kObjectAlignment != kDoubleAlignment);
|
| +}
|
| +
|
| +
|
| OldSpace* Heap::TargetSpace(HeapObject* object) {
|
| InstanceType type = object->map()->instance_type();
|
| AllocationSpace space = TargetSpaceId(type);
|
|
|