| 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);
|
| }
|
| }
|
| }
|
|
|