| Index: src/heap.cc
|
| diff --git a/src/heap.cc b/src/heap.cc
|
| index 365e9c68062a0c162194a5fbc5fe1763738f2462..53088e289f4979a49e610a1d7c0ee1200a8736e2 100644
|
| --- a/src/heap.cc
|
| +++ b/src/heap.cc
|
| @@ -2008,7 +2008,6 @@ class ScavengingVisitor : public StaticVisitorBase {
|
|
|
| private:
|
| enum ObjectContents { DATA_OBJECT, POINTER_OBJECT };
|
| - enum SizeRestriction { SMALL, UNKNOWN_SIZE };
|
|
|
| static void RecordCopiedObject(Heap* heap, HeapObject* obj) {
|
| bool should_record = false;
|
| @@ -2060,15 +2059,12 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| }
|
|
|
|
|
| - template<ObjectContents object_contents,
|
| - SizeRestriction size_restriction,
|
| - int alignment>
|
| + template<ObjectContents object_contents, int alignment>
|
| static inline void EvacuateObject(Map* map,
|
| HeapObject** slot,
|
| HeapObject* object,
|
| int object_size) {
|
| - SLOW_ASSERT((size_restriction != SMALL) ||
|
| - (object_size <= Page::kMaxNonCodeHeapObjectSize));
|
| + SLOW_ASSERT(object_size <= Page::kMaxNonCodeHeapObjectSize);
|
| SLOW_ASSERT(object->Size() == object_size);
|
|
|
| int allocation_size = object_size;
|
| @@ -2081,17 +2077,11 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| if (heap->ShouldBePromoted(object->address(), object_size)) {
|
| MaybeObject* maybe_result;
|
|
|
| - if ((size_restriction != SMALL) &&
|
| - (allocation_size > Page::kMaxNonCodeHeapObjectSize)) {
|
| - maybe_result = heap->lo_space()->AllocateRaw(allocation_size,
|
| - NOT_EXECUTABLE);
|
| + if (object_contents == DATA_OBJECT) {
|
| + maybe_result = heap->old_data_space()->AllocateRaw(allocation_size);
|
| } else {
|
| - if (object_contents == DATA_OBJECT) {
|
| - maybe_result = heap->old_data_space()->AllocateRaw(allocation_size);
|
| - } else {
|
| - maybe_result =
|
| - heap->old_pointer_space()->AllocateRaw(allocation_size);
|
| - }
|
| + maybe_result =
|
| + heap->old_pointer_space()->AllocateRaw(allocation_size);
|
| }
|
|
|
| Object* result = NULL; // Initialization to please compiler.
|
| @@ -2165,10 +2155,8 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| HeapObject** slot,
|
| HeapObject* object) {
|
| int object_size = FixedArray::BodyDescriptor::SizeOf(map, object);
|
| - EvacuateObject<POINTER_OBJECT, UNKNOWN_SIZE, kObjectAlignment>(map,
|
| - slot,
|
| - object,
|
| - object_size);
|
| + EvacuateObject<POINTER_OBJECT, kObjectAlignment>(
|
| + map, slot, object, object_size);
|
| }
|
|
|
|
|
| @@ -2177,11 +2165,8 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| HeapObject* object) {
|
| int length = reinterpret_cast<FixedDoubleArray*>(object)->length();
|
| int object_size = FixedDoubleArray::SizeFor(length);
|
| - EvacuateObject<DATA_OBJECT, UNKNOWN_SIZE, kDoubleAlignment>(
|
| - map,
|
| - slot,
|
| - object,
|
| - object_size);
|
| + EvacuateObject<DATA_OBJECT, kDoubleAlignment>(
|
| + map, slot, object, object_size);
|
| }
|
|
|
|
|
| @@ -2189,7 +2174,7 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| HeapObject** slot,
|
| HeapObject* object) {
|
| int object_size = reinterpret_cast<ByteArray*>(object)->ByteArraySize();
|
| - EvacuateObject<DATA_OBJECT, UNKNOWN_SIZE, kObjectAlignment>(
|
| + EvacuateObject<DATA_OBJECT, kObjectAlignment>(
|
| map, slot, object, object_size);
|
| }
|
|
|
| @@ -2199,7 +2184,7 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| HeapObject* object) {
|
| int object_size = SeqOneByteString::cast(object)->
|
| SeqOneByteStringSize(map->instance_type());
|
| - EvacuateObject<DATA_OBJECT, UNKNOWN_SIZE, kObjectAlignment>(
|
| + EvacuateObject<DATA_OBJECT, kObjectAlignment>(
|
| map, slot, object, object_size);
|
| }
|
|
|
| @@ -2209,7 +2194,7 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| HeapObject* object) {
|
| int object_size = SeqTwoByteString::cast(object)->
|
| SeqTwoByteStringSize(map->instance_type());
|
| - EvacuateObject<DATA_OBJECT, UNKNOWN_SIZE, kObjectAlignment>(
|
| + EvacuateObject<DATA_OBJECT, kObjectAlignment>(
|
| map, slot, object, object_size);
|
| }
|
|
|
| @@ -2253,7 +2238,7 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| }
|
|
|
| int object_size = ConsString::kSize;
|
| - EvacuateObject<POINTER_OBJECT, SMALL, kObjectAlignment>(
|
| + EvacuateObject<POINTER_OBJECT, kObjectAlignment>(
|
| map, slot, object, object_size);
|
| }
|
|
|
| @@ -2264,7 +2249,7 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| static inline void VisitSpecialized(Map* map,
|
| HeapObject** slot,
|
| HeapObject* object) {
|
| - EvacuateObject<object_contents, SMALL, kObjectAlignment>(
|
| + EvacuateObject<object_contents, kObjectAlignment>(
|
| map, slot, object, object_size);
|
| }
|
|
|
| @@ -2272,7 +2257,7 @@ class ScavengingVisitor : public StaticVisitorBase {
|
| HeapObject** slot,
|
| HeapObject* object) {
|
| int object_size = map->instance_size();
|
| - EvacuateObject<object_contents, SMALL, kObjectAlignment>(
|
| + EvacuateObject<object_contents, kObjectAlignment>(
|
| map, slot, object, object_size);
|
| }
|
| };
|
|
|