| Index: src/virtual-frame.cc
 | 
| ===================================================================
 | 
| --- src/virtual-frame.cc	(revision 2055)
 | 
| +++ src/virtual-frame.cc	(working copy)
 | 
| @@ -38,7 +38,7 @@
 | 
|  
 | 
|  // When cloned, a frame is a deep copy of the original.
 | 
|  VirtualFrame::VirtualFrame(VirtualFrame* original)
 | 
| -    : elements_(original->elements_.length()),
 | 
| +    : elements_(original->element_count()),
 | 
|        stack_pointer_(original->stack_pointer_) {
 | 
|    elements_.AddAll(original->elements_);
 | 
|    // Copy register locations from original.
 | 
| @@ -50,7 +50,7 @@
 | 
|  
 | 
|  FrameElement VirtualFrame::CopyElementAt(int index) {
 | 
|    ASSERT(index >= 0);
 | 
| -  ASSERT(index < elements_.length());
 | 
| +  ASSERT(index < element_count());
 | 
|  
 | 
|    FrameElement target = elements_[index];
 | 
|    FrameElement result;
 | 
| @@ -96,7 +96,7 @@
 | 
|  // pushing an exception handler).  No code is emitted.
 | 
|  void VirtualFrame::Adjust(int count) {
 | 
|    ASSERT(count >= 0);
 | 
| -  ASSERT(stack_pointer_ == elements_.length() - 1);
 | 
| +  ASSERT(stack_pointer_ == element_count() - 1);
 | 
|  
 | 
|    for (int i = 0; i < count; i++) {
 | 
|      elements_.Add(FrameElement::MemoryElement());
 | 
| @@ -107,7 +107,7 @@
 | 
|  
 | 
|  void VirtualFrame::ForgetElements(int count) {
 | 
|    ASSERT(count >= 0);
 | 
| -  ASSERT(elements_.length() >= count);
 | 
| +  ASSERT(element_count() >= count);
 | 
|  
 | 
|    for (int i = 0; i < count; i++) {
 | 
|      FrameElement last = elements_.RemoveLast();
 | 
| @@ -118,7 +118,7 @@
 | 
|        if (cgen()->frame() == this) {
 | 
|          Unuse(last.reg());
 | 
|        } else {
 | 
| -        register_locations_[last.reg().code()] = kIllegalIndex;
 | 
| +        set_register_location(last.reg(), kIllegalIndex);
 | 
|        }
 | 
|      }
 | 
|    }
 | 
| @@ -127,14 +127,13 @@
 | 
|  
 | 
|  // If there are any registers referenced only by the frame, spill one.
 | 
|  Register VirtualFrame::SpillAnyRegister() {
 | 
| -  // Find the leftmost (ordered by register code) register whose only
 | 
| +  // Find the leftmost (ordered by register number) register whose only
 | 
|    // reference is in the frame.
 | 
| -  for (int i = 0; i < kNumRegisters; i++) {
 | 
| +  for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
 | 
|      if (is_used(i) && cgen()->allocator()->count(i) == 1) {
 | 
| -      Register result = { i };
 | 
| -      Spill(result);
 | 
| -      ASSERT(!cgen()->allocator()->is_used(result));
 | 
| -      return result;
 | 
| +      SpillElementAt(register_location(i));
 | 
| +      ASSERT(!cgen()->allocator()->is_used(i));
 | 
| +      return RegisterAllocator::ToRegister(i);
 | 
|      }
 | 
|    }
 | 
|    return no_reg;
 | 
| @@ -173,7 +172,7 @@
 | 
|  
 | 
|  // Make the type of all elements be MEMORY.
 | 
|  void VirtualFrame::SpillAll() {
 | 
| -  for (int i = 0; i < elements_.length(); i++) {
 | 
| +  for (int i = 0; i < element_count(); i++) {
 | 
|      SpillElementAt(i);
 | 
|    }
 | 
|  }
 | 
| @@ -183,7 +182,7 @@
 | 
|    // Perform state changes on this frame that will make merge to the
 | 
|    // expected frame simpler or else increase the likelihood that his
 | 
|    // frame will match another.
 | 
| -  for (int i = 0; i < elements_.length(); i++) {
 | 
| +  for (int i = 0; i < element_count(); i++) {
 | 
|      FrameElement source = elements_[i];
 | 
|      FrameElement target = expected->elements_[i];
 | 
|  
 | 
| @@ -200,7 +199,7 @@
 | 
|          if (cgen()->frame() == this) {
 | 
|            Unuse(source.reg());
 | 
|          } else {
 | 
| -          register_locations_[source.reg().code()] = kIllegalIndex;
 | 
| +          set_register_location(source.reg(), kIllegalIndex);
 | 
|          }
 | 
|        }
 | 
|        elements_[i] = target;
 | 
| @@ -224,16 +223,16 @@
 | 
|    ASSERT(height() >= spilled_args);
 | 
|    ASSERT(dropped_args <= spilled_args);
 | 
|  
 | 
| -  SyncRange(0, elements_.length() - 1);
 | 
| +  SyncRange(0, element_count() - 1);
 | 
|    // Spill registers.
 | 
| -  for (int i = 0; i < kNumRegisters; i++) {
 | 
| +  for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
 | 
|      if (is_used(i)) {
 | 
| -      SpillElementAt(register_locations_[i]);
 | 
| +      SpillElementAt(register_location(i));
 | 
|      }
 | 
|    }
 | 
|  
 | 
|    // Spill the arguments.
 | 
| -  for (int i = elements_.length() - spilled_args; i < elements_.length(); i++) {
 | 
| +  for (int i = element_count() - spilled_args; i < element_count(); i++) {
 | 
|      if (!elements_[i].is_memory()) {
 | 
|        SpillElementAt(i);
 | 
|      }
 | 
| @@ -257,9 +256,9 @@
 | 
|  
 | 
|  
 | 
|  void VirtualFrame::SetElementAt(int index, Result* value) {
 | 
| -  int frame_index = elements_.length() - index - 1;
 | 
| +  int frame_index = element_count() - index - 1;
 | 
|    ASSERT(frame_index >= 0);
 | 
| -  ASSERT(frame_index < elements_.length());
 | 
| +  ASSERT(frame_index < element_count());
 | 
|    ASSERT(value->is_valid());
 | 
|    FrameElement original = elements_[frame_index];
 | 
|  
 | 
| @@ -283,7 +282,7 @@
 | 
|        // The register already appears on the frame.  Either the existing
 | 
|        // register element, or the new element at frame_index, must be made
 | 
|        // a copy.
 | 
| -      int i = register_index(value->reg());
 | 
| +      int i = register_location(value->reg());
 | 
|        ASSERT(value->static_type() == elements_[i].static_type());
 | 
|  
 | 
|        if (i < frame_index) {
 | 
| @@ -299,8 +298,8 @@
 | 
|            elements_[i].set_sync();
 | 
|          }
 | 
|          elements_[frame_index].clear_sync();
 | 
| -        register_locations_[value->reg().code()] = frame_index;
 | 
| -        for (int j = i + 1; j < elements_.length(); j++) {
 | 
| +        set_register_location(value->reg(), frame_index);
 | 
| +        for (int j = i + 1; j < element_count(); j++) {
 | 
|            if (elements_[j].is_copy() && elements_[j].index() == i) {
 | 
|              elements_[j].set_index(frame_index);
 | 
|            }
 | 
| @@ -331,12 +330,12 @@
 | 
|  
 | 
|  void VirtualFrame::Push(Register reg, StaticType static_type) {
 | 
|    if (is_used(reg)) {
 | 
| -    int index = register_index(reg);
 | 
| +    int index = register_location(reg);
 | 
|      FrameElement element = CopyElementAt(index);
 | 
|      ASSERT(static_type.merge(element.static_type()) == element.static_type());
 | 
|      elements_.Add(element);
 | 
|    } else {
 | 
| -    Use(reg, elements_.length());
 | 
| +    Use(reg, element_count());
 | 
|      FrameElement element =
 | 
|          FrameElement::RegisterElement(reg,
 | 
|                                        FrameElement::NOT_SYNCED,
 | 
| @@ -366,15 +365,15 @@
 | 
|  
 | 
|  bool VirtualFrame::Equals(VirtualFrame* other) {
 | 
|  #ifdef DEBUG
 | 
| -  for (int i = 0; i < kNumRegisters; i++) {
 | 
| -    if (register_locations_[i] != other->register_locations_[i]) {
 | 
| +  for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
 | 
| +    if (register_location(i) != other->register_location(i)) {
 | 
|        return false;
 | 
|      }
 | 
|    }
 | 
| -  if (elements_.length() != other->elements_.length()) return false;
 | 
| +  if (element_count() != other->element_count()) return false;
 | 
|  #endif
 | 
|    if (stack_pointer_ != other->stack_pointer_) return false;
 | 
| -  for (int i = 0; i < elements_.length(); i++) {
 | 
| +  for (int i = 0; i < element_count(); i++) {
 | 
|      if (!elements_[i].Equals(other->elements_[i])) return false;
 | 
|    }
 | 
|  
 | 
| 
 |