Index: src/heap-inl.h |
diff --git a/src/heap-inl.h b/src/heap-inl.h |
index 3229aeecc3096fa74bc9f022616eb277b4e79d58..9223b38b82db496406c9c63b6829e46ec81b1416 100644 |
--- a/src/heap-inl.h |
+++ b/src/heap-inl.h |
@@ -378,6 +378,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); |