| Index: src/heap/scavenger.cc
 | 
| diff --git a/src/heap/scavenger.cc b/src/heap/scavenger.cc
 | 
| index 4fa30e2650890945097555663006d63f86040512..51968c3990b23f1916a773917b17d801052071f8 100644
 | 
| --- a/src/heap/scavenger.cc
 | 
| +++ b/src/heap/scavenger.cc
 | 
| @@ -200,16 +200,15 @@
 | 
|      return false;
 | 
|    }
 | 
|  
 | 
| +
 | 
|    template <ObjectContents object_contents, AllocationAlignment alignment>
 | 
|    static inline void EvacuateObject(Map* map, HeapObject** slot,
 | 
| -                                    HeapObject* object, int object_size,
 | 
| -                                    PromotionMode promotion_mode) {
 | 
| +                                    HeapObject* object, int object_size) {
 | 
|      SLOW_DCHECK(object_size <= Page::kAllocatableMemory);
 | 
|      SLOW_DCHECK(object->Size() == object_size);
 | 
|      Heap* heap = map->GetHeap();
 | 
|  
 | 
| -    if (promotion_mode != FORCE_PROMOTION &&
 | 
| -        !heap->ShouldBePromoted(object->address(), object_size)) {
 | 
| +    if (!heap->ShouldBePromoted(object->address(), object_size)) {
 | 
|        // A semi-space copy may fail due to fragmentation. In that case, we
 | 
|        // try to promote the object.
 | 
|        if (SemiSpaceCopyObject<alignment>(map, slot, object, object_size)) {
 | 
| @@ -221,20 +220,17 @@
 | 
|                                                    object_size)) {
 | 
|        return;
 | 
|      }
 | 
| -    if (promotion_mode == FORCE_PROMOTION) {
 | 
| -      FatalProcessOutOfMemory("Scavenger: forced promotion\n");
 | 
| -    }
 | 
| +
 | 
|      // If promotion failed, we try to copy the object to the other semi-space
 | 
|      if (SemiSpaceCopyObject<alignment>(map, slot, object, object_size)) return;
 | 
|  
 | 
|      FatalProcessOutOfMemory("Scavenger: semi-space copy\n");
 | 
|    }
 | 
|  
 | 
| +
 | 
|    static inline void EvacuateJSFunction(Map* map, HeapObject** slot,
 | 
| -                                        HeapObject* object,
 | 
| -                                        PromotionMode promotion_mode) {
 | 
| -    ObjectEvacuationStrategy<POINTER_OBJECT>::Visit(map, slot, object,
 | 
| -                                                    promotion_mode);
 | 
| +                                        HeapObject* object) {
 | 
| +    ObjectEvacuationStrategy<POINTER_OBJECT>::Visit(map, slot, object);
 | 
|  
 | 
|      if (marks_handling == IGNORE_MARKS) return;
 | 
|  
 | 
| @@ -256,76 +252,71 @@
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +
 | 
|    static inline void EvacuateFixedArray(Map* map, HeapObject** slot,
 | 
| -                                        HeapObject* object,
 | 
| -                                        PromotionMode promotion_mode) {
 | 
| +                                        HeapObject* object) {
 | 
|      int length = reinterpret_cast<FixedArray*>(object)->synchronized_length();
 | 
|      int object_size = FixedArray::SizeFor(length);
 | 
| -    EvacuateObject<POINTER_OBJECT, kWordAligned>(map, slot, object, object_size,
 | 
| -                                                 promotion_mode);
 | 
| -  }
 | 
| +    EvacuateObject<POINTER_OBJECT, kWordAligned>(map, slot, object,
 | 
| +                                                 object_size);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateFixedDoubleArray(Map* map, HeapObject** slot,
 | 
| -                                              HeapObject* object,
 | 
| -                                              PromotionMode promotion_mode) {
 | 
| +                                              HeapObject* object) {
 | 
|      int length = reinterpret_cast<FixedDoubleArray*>(object)->length();
 | 
|      int object_size = FixedDoubleArray::SizeFor(length);
 | 
| -    EvacuateObject<DATA_OBJECT, kDoubleAligned>(map, slot, object, object_size,
 | 
| -                                                promotion_mode);
 | 
| -  }
 | 
| +    EvacuateObject<DATA_OBJECT, kDoubleAligned>(map, slot, object, object_size);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateFixedTypedArray(Map* map, HeapObject** slot,
 | 
| -                                             HeapObject* object,
 | 
| -                                             PromotionMode promotion_mode) {
 | 
| +                                             HeapObject* object) {
 | 
|      int object_size = reinterpret_cast<FixedTypedArrayBase*>(object)->size();
 | 
| -    EvacuateObject<POINTER_OBJECT, kWordAligned>(map, slot, object, object_size,
 | 
| -                                                 promotion_mode);
 | 
| -  }
 | 
| +    EvacuateObject<POINTER_OBJECT, kWordAligned>(map, slot, object,
 | 
| +                                                 object_size);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateFixedFloat64Array(Map* map, HeapObject** slot,
 | 
| -                                               HeapObject* object,
 | 
| -                                               PromotionMode promotion_mode) {
 | 
| +                                               HeapObject* object) {
 | 
|      int object_size = reinterpret_cast<FixedFloat64Array*>(object)->size();
 | 
|      EvacuateObject<POINTER_OBJECT, kDoubleAligned>(map, slot, object,
 | 
| -                                                   object_size, promotion_mode);
 | 
| -  }
 | 
| +                                                   object_size);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateJSArrayBuffer(Map* map, HeapObject** slot,
 | 
| -                                           HeapObject* object,
 | 
| -                                           PromotionMode promotion_mode) {
 | 
| -    ObjectEvacuationStrategy<POINTER_OBJECT>::Visit(map, slot, object,
 | 
| -                                                    promotion_mode);
 | 
| -  }
 | 
| +                                           HeapObject* object) {
 | 
| +    ObjectEvacuationStrategy<POINTER_OBJECT>::Visit(map, slot, object);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateByteArray(Map* map, HeapObject** slot,
 | 
| -                                       HeapObject* object,
 | 
| -                                       PromotionMode promotion_mode) {
 | 
| +                                       HeapObject* object) {
 | 
|      int object_size = reinterpret_cast<ByteArray*>(object)->ByteArraySize();
 | 
| -    EvacuateObject<DATA_OBJECT, kWordAligned>(map, slot, object, object_size,
 | 
| -                                              promotion_mode);
 | 
| -  }
 | 
| +    EvacuateObject<DATA_OBJECT, kWordAligned>(map, slot, object, object_size);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateSeqOneByteString(Map* map, HeapObject** slot,
 | 
| -                                              HeapObject* object,
 | 
| -                                              PromotionMode promotion_mode) {
 | 
| +                                              HeapObject* object) {
 | 
|      int object_size = SeqOneByteString::cast(object)
 | 
|                            ->SeqOneByteStringSize(map->instance_type());
 | 
| -    EvacuateObject<DATA_OBJECT, kWordAligned>(map, slot, object, object_size,
 | 
| -                                              promotion_mode);
 | 
| -  }
 | 
| +    EvacuateObject<DATA_OBJECT, kWordAligned>(map, slot, object, object_size);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateSeqTwoByteString(Map* map, HeapObject** slot,
 | 
| -                                              HeapObject* object,
 | 
| -                                              PromotionMode promotion_mode) {
 | 
| +                                              HeapObject* object) {
 | 
|      int object_size = SeqTwoByteString::cast(object)
 | 
|                            ->SeqTwoByteStringSize(map->instance_type());
 | 
| -    EvacuateObject<DATA_OBJECT, kWordAligned>(map, slot, object, object_size,
 | 
| -                                              promotion_mode);
 | 
| -  }
 | 
| +    EvacuateObject<DATA_OBJECT, kWordAligned>(map, slot, object, object_size);
 | 
| +  }
 | 
| +
 | 
|  
 | 
|    static inline void EvacuateShortcutCandidate(Map* map, HeapObject** slot,
 | 
| -                                               HeapObject* object,
 | 
| -                                               PromotionMode promotion_mode) {
 | 
| +                                               HeapObject* object) {
 | 
|      DCHECK(IsShortcutCandidate(map->instance_type()));
 | 
|  
 | 
|      Heap* heap = map->GetHeap();
 | 
| @@ -351,14 +342,14 @@
 | 
|          return;
 | 
|        }
 | 
|  
 | 
| -      Scavenger::ScavengeObjectSlow(slot, first, promotion_mode);
 | 
| +      Scavenger::ScavengeObjectSlow(slot, first);
 | 
|        object->set_map_word(MapWord::FromForwardingAddress(*slot));
 | 
|        return;
 | 
|      }
 | 
|  
 | 
|      int object_size = ConsString::kSize;
 | 
| -    EvacuateObject<POINTER_OBJECT, kWordAligned>(map, slot, object, object_size,
 | 
| -                                                 promotion_mode);
 | 
| +    EvacuateObject<POINTER_OBJECT, kWordAligned>(map, slot, object,
 | 
| +                                                 object_size);
 | 
|    }
 | 
|  
 | 
|    template <ObjectContents object_contents>
 | 
| @@ -366,17 +357,15 @@
 | 
|     public:
 | 
|      template <int object_size>
 | 
|      static inline void VisitSpecialized(Map* map, HeapObject** slot,
 | 
| -                                        HeapObject* object,
 | 
| -                                        PromotionMode promotion_mode) {
 | 
| -      EvacuateObject<object_contents, kWordAligned>(
 | 
| -          map, slot, object, object_size, promotion_mode);
 | 
| -    }
 | 
| -
 | 
| -    static inline void Visit(Map* map, HeapObject** slot, HeapObject* object,
 | 
| -                             PromotionMode promotion_mode) {
 | 
| +                                        HeapObject* object) {
 | 
| +      EvacuateObject<object_contents, kWordAligned>(map, slot, object,
 | 
| +                                                    object_size);
 | 
| +    }
 | 
| +
 | 
| +    static inline void Visit(Map* map, HeapObject** slot, HeapObject* object) {
 | 
|        int object_size = map->instance_size();
 | 
| -      EvacuateObject<object_contents, kWordAligned>(
 | 
| -          map, slot, object, object_size, promotion_mode);
 | 
| +      EvacuateObject<object_contents, kWordAligned>(map, slot, object,
 | 
| +                                                    object_size);
 | 
|      }
 | 
|    };
 | 
|  
 | 
| @@ -402,15 +391,13 @@
 | 
|  
 | 
|  
 | 
|  // static
 | 
| -void Scavenger::ScavengeObjectSlow(HeapObject** p, HeapObject* object,
 | 
| -                                   PromotionMode promotion_mode) {
 | 
| +void Scavenger::ScavengeObjectSlow(HeapObject** p, HeapObject* object) {
 | 
|    SLOW_DCHECK(object->GetIsolate()->heap()->InFromSpace(object));
 | 
|    MapWord first_word = object->map_word();
 | 
|    SLOW_DCHECK(!first_word.IsForwardingAddress());
 | 
|    Map* map = first_word.ToMap();
 | 
|    Scavenger* scavenger = map->GetHeap()->scavenge_collector_;
 | 
| -  scavenger->scavenging_visitors_table_.GetVisitor(map)(map, p, object,
 | 
| -                                                        promotion_mode);
 | 
| +  scavenger->scavenging_visitors_table_.GetVisitor(map)(map, p, object);
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |