From 871ab7f7b1847bdb78773b8abfec2b65c2b1faa8 Mon Sep 17 00:00:00 2001 From: bbudge Date: Fri, 22 May 2015 05:01:59 -0700 Subject: [PATCH] Generalize alignment in heap GC functions. Changes template parameters from int to AllocationAlignment. LOG=N BUG=v8:4124 Review URL: https://codereview.chromium.org/1152513002 Cr-Commit-Position: refs/heads/master@{#28587} --- src/heap/heap.cc | 48 +++++++++++++++++++----------------------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/heap/heap.cc b/src/heap/heap.cc index 4e4f04a112..74f4ac1412 100644 --- a/src/heap/heap.cc +++ b/src/heap/heap.cc @@ -2151,16 +2151,14 @@ class ScavengingVisitor : public StaticVisitorBase { } } - template + template static inline bool SemiSpaceCopyObject(Map* map, HeapObject** slot, HeapObject* object, int object_size) { Heap* heap = map->GetHeap(); DCHECK(heap->AllowedToBeMigrated(object, NEW_SPACE)); - AllocationAlignment align = - alignment == kDoubleAlignment ? kDoubleAligned : kWordAligned; AllocationResult allocation = - heap->new_space()->AllocateRaw(object_size, align); + heap->new_space()->AllocateRaw(object_size, alignment); HeapObject* target = NULL; // Initialization to please compiler. if (allocation.To(&target)) { @@ -2182,15 +2180,13 @@ class ScavengingVisitor : public StaticVisitorBase { } - template + template static inline bool PromoteObject(Map* map, HeapObject** slot, HeapObject* object, int object_size) { Heap* heap = map->GetHeap(); - AllocationAlignment align = - alignment == kDoubleAlignment ? kDoubleAligned : kWordAligned; AllocationResult allocation = - heap->old_space()->AllocateRaw(object_size, align); + heap->old_space()->AllocateRaw(object_size, alignment); HeapObject* target = NULL; // Initialization to please compiler. if (allocation.To(&target)) { @@ -2214,7 +2210,7 @@ class ScavengingVisitor : public StaticVisitorBase { } - template + template static inline void EvacuateObject(Map* map, HeapObject** slot, HeapObject* object, int object_size) { SLOW_DCHECK(object_size <= Page::kMaxRegularHeapObjectSize); @@ -2268,8 +2264,8 @@ class ScavengingVisitor : public StaticVisitorBase { static inline void EvacuateFixedArray(Map* map, HeapObject** slot, HeapObject* object) { int object_size = FixedArray::BodyDescriptor::SizeOf(map, object); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, + object_size); } @@ -2277,32 +2273,28 @@ class ScavengingVisitor : public StaticVisitorBase { HeapObject* object) { int length = reinterpret_cast(object)->length(); int object_size = FixedDoubleArray::SizeFor(length); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, object_size); } static inline void EvacuateFixedTypedArray(Map* map, HeapObject** slot, HeapObject* object) { int object_size = reinterpret_cast(object)->size(); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, object_size); } static inline void EvacuateFixedFloat64Array(Map* map, HeapObject** slot, HeapObject* object) { int object_size = reinterpret_cast(object)->size(); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, object_size); } static inline void EvacuateByteArray(Map* map, HeapObject** slot, HeapObject* object) { int object_size = reinterpret_cast(object)->ByteArraySize(); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, object_size); } @@ -2310,8 +2302,7 @@ class ScavengingVisitor : public StaticVisitorBase { HeapObject* object) { int object_size = SeqOneByteString::cast(object) ->SeqOneByteStringSize(map->instance_type()); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, object_size); } @@ -2319,8 +2310,7 @@ class ScavengingVisitor : public StaticVisitorBase { HeapObject* object) { int object_size = SeqTwoByteString::cast(object) ->SeqTwoByteStringSize(map->instance_type()); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, object_size); } @@ -2357,8 +2347,8 @@ class ScavengingVisitor : public StaticVisitorBase { } int object_size = ConsString::kSize; - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, + object_size); } template @@ -2367,14 +2357,14 @@ class ScavengingVisitor : public StaticVisitorBase { template static inline void VisitSpecialized(Map* map, HeapObject** slot, HeapObject* object) { - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, + object_size); } static inline void Visit(Map* map, HeapObject** slot, HeapObject* object) { int object_size = map->instance_size(); - EvacuateObject(map, slot, object, - object_size); + EvacuateObject(map, slot, object, + object_size); } };