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); |