IonMonkey: Split critical edges

RESOLVED FIXED

Status

()

Core
JavaScript Engine
RESOLVED FIXED
6 years ago
6 years ago

People

(Reporter: dvander, Assigned: dvander)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Assignee)

Description

6 years ago
This is needed for greedy regalloc and LSRA, so we might as well hoist it out into a very early MIR pass.
(Assignee)

Comment 1

6 years ago
Created attachment 543560 [details] [diff] [review]
patch

I took this opportunity to get rid of loopSuccessor_ per bug 667132 because keeping explicit edge information around makes mutating it harder.
Attachment #543560 - Flags: review?(adrake)

Updated

6 years ago
Duplicate of this bug: 668750
Comment on attachment 543560 [details] [diff] [review]
patch

Review of attachment 543560 [details] [diff] [review]:
-----------------------------------------------------------------

Looks good otherwise!

::: js/src/ion/MIR.h
@@ +516,5 @@
>          JS_ASSERT(i < numSuccessors());
>          return successors[i];
>      }
> +
> +    void replaceEdge(size_t i, MBasicBlock *split) {

Nit: replaceSuccessor would probably be more accurate.
Attachment #543560 - Flags: review?(adrake) → review+

Updated

6 years ago
Blocks: 657816
(Assignee)

Comment 4

6 years ago
http://hg.mozilla.org/users/danderson_mozilla.com/ionmonkey/rev/c6bcb9608c96 and a follow-up for nits
Status: ASSIGNED → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.