| Index: src/lithium-allocator.cc
 | 
| diff --git a/src/lithium-allocator.cc b/src/lithium-allocator.cc
 | 
| index 9c1a6462138d800adcf38a978901d4727c04896f..dcfbeadd803d55557b5a23e2906eb37b63b86d24 100644
 | 
| --- a/src/lithium-allocator.cc
 | 
| +++ b/src/lithium-allocator.cc
 | 
| @@ -643,7 +643,7 @@ LiveRange* LAllocator::FixedLiveRangeFor(int index) {
 | 
|    if (result == NULL) {
 | 
|      result = new(zone_) LiveRange(FixedLiveRangeID(index), zone_);
 | 
|      ASSERT(result->IsFixed());
 | 
| -    result->set_assigned_register(index, GENERAL_REGISTERS, zone_);
 | 
| +    SetLiveRangeAssignedRegister(result, index, GENERAL_REGISTERS, zone_);
 | 
|      fixed_live_ranges_[index] = result;
 | 
|    }
 | 
|    return result;
 | 
| @@ -656,7 +656,7 @@ LiveRange* LAllocator::FixedDoubleLiveRangeFor(int index) {
 | 
|    if (result == NULL) {
 | 
|      result = new(zone_) LiveRange(FixedDoubleLiveRangeID(index), zone_);
 | 
|      ASSERT(result->IsFixed());
 | 
| -    result->set_assigned_register(index, DOUBLE_REGISTERS, zone_);
 | 
| +    SetLiveRangeAssignedRegister(result, index, DOUBLE_REGISTERS, zone_);
 | 
|      fixed_double_live_ranges_[index] = result;
 | 
|    }
 | 
|    return result;
 | 
| @@ -1066,6 +1066,13 @@ void LAllocator::ResolvePhis(HBasicBlock* block) {
 | 
|  bool LAllocator::Allocate(LChunk* chunk) {
 | 
|    ASSERT(chunk_ == NULL);
 | 
|    chunk_ = static_cast<LPlatformChunk*>(chunk);
 | 
| +  assigned_registers_ =
 | 
| +      new(zone()) BitVector(Register::NumAllocatableRegisters(), zone());
 | 
| +  assigned_registers_->Clear();
 | 
| +  assigned_double_registers_ =
 | 
| +      new(zone()) BitVector(DoubleRegister::NumAllocatableRegisters(),
 | 
| +                            zone());
 | 
| +  assigned_double_registers_->Clear();
 | 
|    MeetRegisterConstraints();
 | 
|    if (!AllocationOk()) return false;
 | 
|    ResolvePhis();
 | 
| @@ -1808,7 +1815,7 @@ bool LAllocator::TryAllocateFreeReg(LiveRange* current) {
 | 
|          TraceAlloc("Assigning preferred reg %s to live range %d\n",
 | 
|                     RegisterName(register_index),
 | 
|                     current->id());
 | 
| -        current->set_assigned_register(register_index, mode_, zone_);
 | 
| +        SetLiveRangeAssignedRegister(current, register_index, mode_, zone_);
 | 
|          return true;
 | 
|        }
 | 
|      }
 | 
| @@ -1844,7 +1851,7 @@ bool LAllocator::TryAllocateFreeReg(LiveRange* current) {
 | 
|    TraceAlloc("Assigning free reg %s to live range %d\n",
 | 
|               RegisterName(reg),
 | 
|               current->id());
 | 
| -  current->set_assigned_register(reg, mode_, zone_);
 | 
| +  SetLiveRangeAssignedRegister(current, reg, mode_, zone_);
 | 
|  
 | 
|    return true;
 | 
|  }
 | 
| @@ -1934,7 +1941,7 @@ void LAllocator::AllocateBlockedReg(LiveRange* current) {
 | 
|    TraceAlloc("Assigning blocked reg %s to live range %d\n",
 | 
|               RegisterName(reg),
 | 
|               current->id());
 | 
| -  current->set_assigned_register(reg, mode_, zone_);
 | 
| +  SetLiveRangeAssignedRegister(current, reg, mode_, zone_);
 | 
|  
 | 
|    // This register was not free. Thus we need to find and spill
 | 
|    // parts of active and inactive live regions that use the same register
 | 
| 
 |