Last Comment Bug 716149 - IonMonkey: Assertion failure: *from != *to in GRA
: IonMonkey: Assertion failure: *from != *to in GRA
Status: RESOLVED FIXED
:
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: unspecified
: All All
: -- normal (vote)
: ---
Assigned To: David Anderson [:dvander]
:
Mentors:
Depends on:
Blocks: 677337
  Show dependency treegraph
 
Reported: 2012-01-06 17:26 PST by David Anderson [:dvander]
Modified: 2012-01-11 17:06 PST (History)
2 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
fix (4.83 KB, patch)
2012-01-06 17:29 PST, David Anderson [:dvander]
sstangl: review+
Details | Diff | Review

Description David Anderson [:dvander] 2012-01-06 17:26:54 PST
Fails about 30 tests with --ion-regalloc=greedy
Comment 1 David Anderson [:dvander] 2012-01-06 17:29:44 PST
Created attachment 586627 [details] [diff] [review]
fix

There are two problems:
 (1) We didn't look at phi inputs when keeping things outside loops alive.
 (2) Phis could get the same stack slot as their inputs. This is actually okay,
     but I feel better disallowing it than hacking around the assert.
Comment 2 Sean Stangl [:sstangl] 2012-01-11 15:05:25 PST
Comment on attachment 586627 [details] [diff] [review]
fix

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

::: js/src/ion/GreedyAllocator.cpp
@@ +804,5 @@
>  
> +        for (LInstructionIterator i = block->begin(); i != block->end(); i++)
> +            findLoopCarriedUses(*i, lowerBound, upperBound);
> +        for (size_t i = 0; i < block->numPhis(); i++)
> +            findLoopCarriedUses(block->getPhi(i), lowerBound, upperBound);

This is elegant.
Comment 3 David Anderson [:dvander] 2012-01-11 17:06:11 PST
http://hg.mozilla.org/projects/ionmonkey/rev/0a8aee9639cf

Note You need to log in before you can comment on or make changes to this bug.