| Index: src/jump-target.cc
|
| diff --git a/src/jump-target.cc b/src/jump-target.cc
|
| index a9d777073a3a11820e7a22e4d9bddfa4b9133ef3..8168dd0c02477799643cea424ac9e6af8f9f65e1 100644
|
| --- a/src/jump-target.cc
|
| +++ b/src/jump-target.cc
|
| @@ -81,17 +81,12 @@ void JumpTarget::ComputeEntryFrame() {
|
| // frame.
|
| for (int i = 0; i < length; i++) {
|
| FrameElement element = initial_frame->elements_[i];
|
| - // We do not allow copies or constants in bidirectional frames. All
|
| - // elements above the water mark on bidirectional frames have
|
| - // unknown static types.
|
| + // We do not allow copies or constants in bidirectional frames.
|
| if (direction_ == BIDIRECTIONAL) {
|
| if (element.is_constant() || element.is_copy()) {
|
| elements.Add(NULL);
|
| continue;
|
| }
|
| - // It's safe to change the static type on the initial frame
|
| - // element, see comment in JumpTarget::Combine.
|
| - initial_frame->elements_[i].set_static_type(StaticType::unknown());
|
| }
|
| elements.Add(&initial_frame->elements_[i]);
|
| }
|
| @@ -142,18 +137,12 @@ void JumpTarget::ComputeEntryFrame() {
|
| for (int i = length - 1; i >= 0; i--) {
|
| if (elements[i] == NULL) {
|
| // Loop over all the reaching frames to check whether the element
|
| - // is synced on all frames, to count the registers it occupies,
|
| - // and to compute a merged static type.
|
| + // is synced on all frames and to count the registers it occupies.
|
| bool is_synced = true;
|
| RegisterFile candidate_registers;
|
| int best_count = kMinInt;
|
| int best_reg_num = RegisterAllocator::kInvalidRegister;
|
|
|
| - StaticType type; // Initially invalid.
|
| - if (direction_ != BIDIRECTIONAL) {
|
| - type = reaching_frames_[0]->elements_[i].static_type();
|
| - }
|
| -
|
| for (int j = 0; j < reaching_frames_.length(); j++) {
|
| FrameElement element = reaching_frames_[j]->elements_[i];
|
| is_synced = is_synced && element.is_synced();
|
| @@ -167,7 +156,6 @@ void JumpTarget::ComputeEntryFrame() {
|
| best_reg_num = num;
|
| }
|
| }
|
| - type = type.merge(element.static_type());
|
| }
|
|
|
| // If the value is synced on all frames, put it in memory. This
|
| @@ -175,7 +163,6 @@ void JumpTarget::ComputeEntryFrame() {
|
| // memory-to-register move when the value is needed later.
|
| if (is_synced) {
|
| // Already recorded as a memory element.
|
| - entry_frame_->elements_[i].set_static_type(type);
|
| continue;
|
| }
|
|
|
| @@ -190,20 +177,15 @@ void JumpTarget::ComputeEntryFrame() {
|
| }
|
| }
|
|
|
| - 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);
|
| - } else {
|
| + if (best_reg_num != RegisterAllocator::kInvalidRegister) {
|
| // If there was a register choice, use it. Preserve the copied
|
| - // flag on the element. Set the static type as computed.
|
| + // flag on the element.
|
| bool is_copied = entry_frame_->elements_[i].is_copied();
|
| 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_->set_register_location(reg, i);
|
| }
|
| }
|
|
|