| Index: src/compiler/register-allocator.cc | 
| diff --git a/src/compiler/register-allocator.cc b/src/compiler/register-allocator.cc | 
| index 1a13e8e7b9266dc7df6a422ef42ff253119baa9f..20fae0cbce1b29d80300854ac7db34143ac4dfb1 100644 | 
| --- a/src/compiler/register-allocator.cc | 
| +++ b/src/compiler/register-allocator.cc | 
| @@ -10,6 +10,11 @@ namespace v8 { | 
| namespace internal { | 
| namespace compiler { | 
|  | 
| +#define TRACE(...)                             \ | 
| +  do {                                         \ | 
| +    if (FLAG_trace_alloc) PrintF(__VA_ARGS__); \ | 
| +  } while (false) | 
| + | 
| static inline LifetimePosition Min(LifetimePosition a, LifetimePosition b) { | 
| return a.Value() < b.Value() ? a : b; | 
| } | 
| @@ -20,16 +25,6 @@ static inline LifetimePosition Max(LifetimePosition a, LifetimePosition b) { | 
| } | 
|  | 
|  | 
| -static void TraceAlloc(const char* msg, ...) { | 
| -  if (FLAG_trace_alloc) { | 
| -    va_list arguments; | 
| -    va_start(arguments, msg); | 
| -    base::OS::VPrint(msg, arguments); | 
| -    va_end(arguments); | 
| -  } | 
| -} | 
| - | 
| - | 
| static void RemoveElement(ZoneVector<LiveRange*>* v, LiveRange* range) { | 
| auto it = std::find(v->begin(), v->end(), range); | 
| DCHECK(it != v->end()); | 
| @@ -447,7 +442,7 @@ bool LiveRange::ShouldBeAllocatedBefore(const LiveRange* other) const { | 
|  | 
|  | 
| void LiveRange::ShortenTo(LifetimePosition start) { | 
| -  TraceAlloc("Shorten live range %d to [%d\n", id_, start.Value()); | 
| +  TRACE("Shorten live range %d to [%d\n", id_, start.Value()); | 
| DCHECK(first_interval_ != nullptr); | 
| DCHECK(first_interval_->start().Value() <= start.Value()); | 
| DCHECK(start.Value() < first_interval_->end().Value()); | 
| @@ -457,8 +452,8 @@ void LiveRange::ShortenTo(LifetimePosition start) { | 
|  | 
| void LiveRange::EnsureInterval(LifetimePosition start, LifetimePosition end, | 
| Zone* zone) { | 
| -  TraceAlloc("Ensure live range %d in interval [%d %d[\n", id_, start.Value(), | 
| -             end.Value()); | 
| +  TRACE("Ensure live range %d in interval [%d %d[\n", id_, start.Value(), | 
| +        end.Value()); | 
| auto new_end = end; | 
| while (first_interval_ != nullptr && | 
| first_interval_->start().Value() <= end.Value()) { | 
| @@ -479,8 +474,8 @@ void LiveRange::EnsureInterval(LifetimePosition start, LifetimePosition end, | 
|  | 
| void LiveRange::AddUseInterval(LifetimePosition start, LifetimePosition end, | 
| Zone* zone) { | 
| -  TraceAlloc("Add to live range %d interval [%d %d[\n", id_, start.Value(), | 
| -             end.Value()); | 
| +  TRACE("Add to live range %d interval [%d %d[\n", id_, start.Value(), | 
| +        end.Value()); | 
| if (first_interval_ == nullptr) { | 
| auto interval = new (zone) UseInterval(start, end); | 
| first_interval_ = interval; | 
| @@ -507,7 +502,7 @@ void LiveRange::AddUseInterval(LifetimePosition start, LifetimePosition end, | 
| void LiveRange::AddUsePosition(LifetimePosition pos, | 
| InstructionOperand* operand, | 
| InstructionOperand* hint, Zone* zone) { | 
| -  TraceAlloc("Add to live range %d use position %d\n", id_, pos.Value()); | 
| +  TRACE("Add to live range %d use position %d\n", id_, pos.Value()); | 
| auto use_pos = new (zone) UsePosition(pos, operand, hint); | 
| UsePosition* prev_hint = nullptr; | 
| UsePosition* prev = nullptr; | 
| @@ -711,7 +706,7 @@ int RegisterAllocator::FixedDoubleLiveRangeID(int index) { | 
|  | 
| InstructionOperand* RegisterAllocator::AllocateFixed( | 
| UnallocatedOperand* operand, int pos, bool is_tagged) { | 
| -  TraceAlloc("Allocating fixed reg for op %d\n", operand->virtual_register()); | 
| +  TRACE("Allocating fixed reg for op %d\n", operand->virtual_register()); | 
| DCHECK(operand->HasFixedPolicy()); | 
| if (operand->HasFixedSlotPolicy()) { | 
| operand->ConvertTo(InstructionOperand::STACK_SLOT, | 
| @@ -726,7 +721,7 @@ InstructionOperand* RegisterAllocator::AllocateFixed( | 
| UNREACHABLE(); | 
| } | 
| if (is_tagged) { | 
| -    TraceAlloc("Fixed reg is tagged at %d\n", pos); | 
| +    TRACE("Fixed reg is tagged at %d\n", pos); | 
| auto instr = InstructionAt(pos); | 
| if (instr->HasPointerMap()) { | 
| instr->pointer_map()->RecordPointer(operand, code_zone()); | 
| @@ -1941,13 +1936,13 @@ void RegisterAllocator::PopulatePointerMaps() { | 
| if (range->HasSpillOperand() && | 
| safe_point >= range->spill_start_index() && | 
| !range->GetSpillOperand()->IsConstant()) { | 
| -        TraceAlloc("Pointer for range %d (spilled at %d) at safe point %d\n", | 
| -                   range->id(), range->spill_start_index(), safe_point); | 
| +        TRACE("Pointer for range %d (spilled at %d) at safe point %d\n", | 
| +              range->id(), range->spill_start_index(), safe_point); | 
| map->RecordPointer(range->GetSpillOperand(), code_zone()); | 
| } | 
|  | 
| if (!cur->IsSpilled()) { | 
| -        TraceAlloc( | 
| +        TRACE( | 
| "Pointer in register for range %d (start at %d) " | 
| "at safe point %d\n", | 
| cur->id(), cur->Start().Value(), safe_point); | 
| @@ -2014,11 +2009,10 @@ void RegisterAllocator::AllocateRegisters() { | 
| #ifdef DEBUG | 
| allocation_finger_ = position; | 
| #endif | 
| -    TraceAlloc("Processing interval %d start=%d\n", current->id(), | 
| -               position.Value()); | 
| +    TRACE("Processing interval %d start=%d\n", current->id(), position.Value()); | 
|  | 
| if (!current->HasNoSpillType()) { | 
| -      TraceAlloc("Live range %d already has a spill operand\n", current->id()); | 
| +      TRACE("Live range %d already has a spill operand\n", current->id()); | 
| auto next_pos = position; | 
| if (code()->IsGapAt(next_pos.InstructionIndex())) { | 
| next_pos = next_pos.NextInstruction(); | 
| @@ -2099,13 +2093,13 @@ RegisterKind RegisterAllocator::RequiredRegisterKind( | 
|  | 
|  | 
| void RegisterAllocator::AddToActive(LiveRange* range) { | 
| -  TraceAlloc("Add live range %d to active\n", range->id()); | 
| +  TRACE("Add live range %d to active\n", range->id()); | 
| active_live_ranges().push_back(range); | 
| } | 
|  | 
|  | 
| void RegisterAllocator::AddToInactive(LiveRange* range) { | 
| -  TraceAlloc("Add live range %d to inactive\n", range->id()); | 
| +  TRACE("Add live range %d to inactive\n", range->id()); | 
| inactive_live_ranges().push_back(range); | 
| } | 
|  | 
| @@ -2118,13 +2112,13 @@ void RegisterAllocator::AddToUnhandledSorted(LiveRange* range) { | 
| --i) { | 
| auto cur_range = unhandled_live_ranges().at(i); | 
| if (!range->ShouldBeAllocatedBefore(cur_range)) continue; | 
| -    TraceAlloc("Add live range %d to unhandled at %d\n", range->id(), i + 1); | 
| +    TRACE("Add live range %d to unhandled at %d\n", range->id(), i + 1); | 
| auto it = unhandled_live_ranges().begin() + (i + 1); | 
| unhandled_live_ranges().insert(it, range); | 
| DCHECK(UnhandledIsSorted()); | 
| return; | 
| } | 
| -  TraceAlloc("Add live range %d to unhandled at start\n", range->id()); | 
| +  TRACE("Add live range %d to unhandled at start\n", range->id()); | 
| unhandled_live_ranges().insert(unhandled_live_ranges().begin(), range); | 
| DCHECK(UnhandledIsSorted()); | 
| } | 
| @@ -2133,7 +2127,7 @@ void RegisterAllocator::AddToUnhandledSorted(LiveRange* range) { | 
| void RegisterAllocator::AddToUnhandledUnsorted(LiveRange* range) { | 
| if (range == nullptr || range->IsEmpty()) return; | 
| DCHECK(!range->HasRegisterAssigned() && !range->IsSpilled()); | 
| -  TraceAlloc("Add live range %d to unhandled unsorted at end\n", range->id()); | 
| +  TRACE("Add live range %d to unhandled unsorted at end\n", range->id()); | 
| unhandled_live_ranges().push_back(range); | 
| } | 
|  | 
| @@ -2150,7 +2144,7 @@ static bool UnhandledSortHelper(LiveRange* a, LiveRange* b) { | 
| // at the end of the array list.  This is convenient for the register allocation | 
| // algorithm because it is efficient to remove elements from the end. | 
| void RegisterAllocator::SortUnhandled() { | 
| -  TraceAlloc("Sort unhandled\n"); | 
| +  TRACE("Sort unhandled\n"); | 
| std::sort(unhandled_live_ranges().begin(), unhandled_live_ranges().end(), | 
| &UnhandledSortHelper); | 
| } | 
| @@ -2169,27 +2163,27 @@ bool RegisterAllocator::UnhandledIsSorted() { | 
|  | 
| void RegisterAllocator::ActiveToHandled(LiveRange* range) { | 
| RemoveElement(&active_live_ranges(), range); | 
| -  TraceAlloc("Moving live range %d from active to handled\n", range->id()); | 
| +  TRACE("Moving live range %d from active to handled\n", range->id()); | 
| } | 
|  | 
|  | 
| void RegisterAllocator::ActiveToInactive(LiveRange* range) { | 
| RemoveElement(&active_live_ranges(), range); | 
| inactive_live_ranges().push_back(range); | 
| -  TraceAlloc("Moving live range %d from active to inactive\n", range->id()); | 
| +  TRACE("Moving live range %d from active to inactive\n", range->id()); | 
| } | 
|  | 
|  | 
| void RegisterAllocator::InactiveToHandled(LiveRange* range) { | 
| RemoveElement(&inactive_live_ranges(), range); | 
| -  TraceAlloc("Moving live range %d from inactive to handled\n", range->id()); | 
| +  TRACE("Moving live range %d from inactive to handled\n", range->id()); | 
| } | 
|  | 
|  | 
| void RegisterAllocator::InactiveToActive(LiveRange* range) { | 
| RemoveElement(&inactive_live_ranges(), range); | 
| active_live_ranges().push_back(range); | 
| -  TraceAlloc("Moving live range %d from inactive to active\n", range->id()); | 
| +  TRACE("Moving live range %d from inactive to active\n", range->id()); | 
| } | 
|  | 
|  | 
| @@ -2216,15 +2210,14 @@ bool RegisterAllocator::TryAllocateFreeReg(LiveRange* current) { | 
| auto hint = current->FirstHint(); | 
| if (hint != nullptr && (hint->IsRegister() || hint->IsDoubleRegister())) { | 
| int register_index = hint->index(); | 
| -    TraceAlloc( | 
| -        "Found reg hint %s (free until [%d) for live range %d (end %d[).\n", | 
| -        RegisterName(register_index), free_until_pos[register_index].Value(), | 
| -        current->id(), current->End().Value()); | 
| +    TRACE("Found reg hint %s (free until [%d) for live range %d (end %d[).\n", | 
| +          RegisterName(register_index), free_until_pos[register_index].Value(), | 
| +          current->id(), current->End().Value()); | 
|  | 
| // The desired register is free until the end of the current live range. | 
| if (free_until_pos[register_index].Value() >= current->End().Value()) { | 
| -      TraceAlloc("Assigning preferred reg %s to live range %d\n", | 
| -                 RegisterName(register_index), current->id()); | 
| +      TRACE("Assigning preferred reg %s to live range %d\n", | 
| +            RegisterName(register_index), current->id()); | 
| SetLiveRangeAssignedRegister(current, register_index); | 
| return true; | 
| } | 
| @@ -2255,8 +2248,8 @@ bool RegisterAllocator::TryAllocateFreeReg(LiveRange* current) { | 
| // Register reg is available at the range start and is free until | 
| // the range end. | 
| DCHECK(pos.Value() >= current->End().Value()); | 
| -  TraceAlloc("Assigning free reg %s to live range %d\n", RegisterName(reg), | 
| -             current->id()); | 
| +  TRACE("Assigning free reg %s to live range %d\n", RegisterName(reg), | 
| +        current->id()); | 
| SetLiveRangeAssignedRegister(current, reg); | 
|  | 
| return true; | 
| @@ -2334,8 +2327,8 @@ void RegisterAllocator::AllocateBlockedReg(LiveRange* current) { | 
|  | 
| // Register reg is not blocked for the whole range. | 
| DCHECK(block_pos[reg].Value() >= current->End().Value()); | 
| -  TraceAlloc("Assigning blocked reg %s to live range %d\n", RegisterName(reg), | 
| -             current->id()); | 
| +  TRACE("Assigning blocked reg %s to live range %d\n", RegisterName(reg), | 
| +        current->id()); | 
| SetLiveRangeAssignedRegister(current, reg); | 
|  | 
| // This register was not free. Thus we need to find and spill | 
| @@ -2443,7 +2436,7 @@ bool RegisterAllocator::IsBlockBoundary(LifetimePosition pos) { | 
| LiveRange* RegisterAllocator::SplitRangeAt(LiveRange* range, | 
| LifetimePosition pos) { | 
| DCHECK(!range->IsFixed()); | 
| -  TraceAlloc("Splitting live range %d at %d\n", range->id(), pos.Value()); | 
| +  TRACE("Splitting live range %d at %d\n", range->id(), pos.Value()); | 
|  | 
| if (pos.Value() <= range->Start().Value()) return range; | 
|  | 
| @@ -2464,8 +2457,8 @@ LiveRange* RegisterAllocator::SplitBetween(LiveRange* range, | 
| LifetimePosition start, | 
| LifetimePosition end) { | 
| DCHECK(!range->IsFixed()); | 
| -  TraceAlloc("Splitting live range %d in position between [%d, %d]\n", | 
| -             range->id(), start.Value(), end.Value()); | 
| +  TRACE("Splitting live range %d in position between [%d, %d]\n", range->id(), | 
| +        start.Value(), end.Value()); | 
|  | 
| auto split_pos = FindOptimalSplitPos(start, end); | 
| DCHECK(split_pos.Value() >= start.Value()); | 
| @@ -2554,7 +2547,7 @@ void RegisterAllocator::SpillBetweenUntil(LiveRange* range, | 
|  | 
| void RegisterAllocator::Spill(LiveRange* range) { | 
| DCHECK(!range->IsSpilled()); | 
| -  TraceAlloc("Spilling live range %d\n", range->id()); | 
| +  TRACE("Spilling live range %d\n", range->id()); | 
| auto first = range->TopLevel(); | 
| if (first->HasNoSpillType()) { | 
| AssignSpillRangeToLiveRange(first); | 
|  |