Index: src/jump-target.cc |
=================================================================== |
--- src/jump-target.cc (revision 2055) |
+++ src/jump-target.cc (working copy) |
@@ -74,7 +74,7 @@ |
// A list of pointers to frame elements in the entry frame. NULL |
// indicates that the element has not yet been determined. |
- int length = initial_frame->elements_.length(); |
+ int length = initial_frame->element_count(); |
ZoneList<FrameElement*> elements(length); |
// Convert the number of mergable elements (counted from the top |
@@ -124,7 +124,7 @@ |
// return address). Replace those first. |
entry_frame_ = new VirtualFrame(); |
int index = 0; |
- for (; index < entry_frame_->elements_.length(); index++) { |
+ for (; index < entry_frame_->element_count(); index++) { |
FrameElement* target = elements[index]; |
// If the element is determined, set it now. Count registers. Mark |
// elements as copied exactly when they have a copy. Undetermined |
@@ -155,7 +155,7 @@ |
bool is_synced = true; |
RegisterFile candidate_registers; |
int best_count = kMinInt; |
- int best_reg_code = no_reg.code_; |
+ int best_reg_num = RegisterAllocator::kInvalidRegister; |
StaticType type; // Initially invalid. |
if (direction_ != BIDIRECTIONAL || i < high_water_mark) { |
@@ -168,10 +168,11 @@ |
if (element.is_register() && !entry_frame_->is_used(element.reg())) { |
// Count the register occurrence and remember it if better |
// than the previous best. |
- candidate_registers.Use(element.reg()); |
- if (candidate_registers.count(element.reg()) > best_count) { |
- best_count = candidate_registers.count(element.reg()); |
- best_reg_code = element.reg().code(); |
+ int num = RegisterAllocator::ToNumber(element.reg()); |
+ candidate_registers.Use(num); |
+ if (candidate_registers.count(num) > best_count) { |
+ best_count = candidate_registers.count(num); |
+ best_reg_num = num; |
} |
} |
type = type.merge(element.static_type()); |
@@ -188,16 +189,16 @@ |
// Try to put it in a register. If there was no best choice |
// consider any free register. |
- if (best_reg_code == no_reg.code_) { |
- for (int j = 0; j < kNumRegisters; j++) { |
- if (!entry_frame_->is_used(j) && !RegisterAllocator::IsReserved(j)) { |
- best_reg_code = j; |
+ if (best_reg_num == RegisterAllocator::kInvalidRegister) { |
+ for (int j = 0; j < RegisterAllocator::kNumRegisters; j++) { |
+ if (!entry_frame_->is_used(j)) { |
+ best_reg_num = j; |
break; |
} |
} |
} |
- if (best_reg_code == no_reg.code_) { |
+ if (best_reg_num == RegisterAllocator::kInvalidRegister) { |
// If there was no register found, the element is already |
// recorded as in memory. |
entry_frame_->elements_[i].set_static_type(type); |
@@ -205,13 +206,13 @@ |
// If there was a register choice, use it. Preserve the copied |
// flag on the element. Set the static type as computed. |
bool is_copied = entry_frame_->elements_[i].is_copied(); |
- Register reg = { best_reg_code }; |
+ Register reg = RegisterAllocator::ToRegister(best_reg_num); |
entry_frame_->elements_[i] = |
FrameElement::RegisterElement(reg, |
FrameElement::NOT_SYNCED); |
if (is_copied) entry_frame_->elements_[i].set_copied(); |
entry_frame_->elements_[i].set_static_type(type); |
- entry_frame_->register_locations_[best_reg_code] = i; |
+ entry_frame_->set_register_location(reg, i); |
} |
} |
} |