So three things have changed:
1) make stack tracing simpler
2) use simple optimizations to get rid of redundant stack traces
2.1) make calls to throwable constructors eliminate-able in simple escape analysis (if nothing else causes the stack trace to escape - now done through the @NoEscapes annotation)
2.2) when no get caught exception instructions exist eliminate set caught exception instructions as (by definition) nothing can read the set caught exception. This is necessary as set caught exception instructions cause throwables to potentially escape
3) fix a latent bug in normal out computation. Now all normal outs are returned by calls rather than previously eliding outs which were to exception handlers (see RVM-412).
I'd say that things haven't been stable until r14061, so we have one eclipse stress failure which we should watch. I believe there could be 2 causes:
1) the changes in IR have broken some other fundamental assumptions. I can't see this in the instruction elimination cases. The code is removing dead instructions (those that have no uses), the worst thing is if the calculation of dead instructions were wrong - but it's deliberately trivial so hopefully fine. The normal out change is more fundamental but I believe the new behavior is correct. Code that assumed an exception handling block was only reachable by an exception edge was always wrong.
2) latent bugs are getting exposed by having more scope for optimization. The normal out change was one example of a latent bug. What's happening is we can now reach normal outs to exception blocks without intervening "new Throwable, call Throwable.init, set_caught_exception", this can mean we can fold branches together so that branches that previously wouldn't reach exception handlers now can. This may effect assumptions within the code, for example if the register allocator assumed or relied upon certain branches not reaching exception handler blocks. This could then effect the reference maps.
I've tried to repeat this error but gcstress either passes or dies with different errors for me. I'm continuing to look.