review request (S): 7114106 C1: assert(goto_state->is_same(sux_state)) failed: states must match now
roland.westrelin at oracle.com
Mon Dec 12 08:48:38 PST 2011
6986046 (C1 valuestack cleanup) broke this.
C1 tries to performs a conditional expression elimination where, before 6986046, it would find that required conditions are not met for such an optimization.
As part of the checks that C1 does to verify whether it can perform CEE, the stack size after the true/false blocks (in the common successor) is checked to be greater than the stack size before the true/false blocks (after the If node). This test now succeeds and permits CEE where, before 6986046, it failed. The problem here is that the state after the If is at inlining depth 1 while the state in the common successor is at inlining depth 0 so the stack sizes from the states before and after the true/false blocks can't simply be compared now that 6986046 fixed handling of inlining in states. Inlining depth needs to match.
More information about the hotspot-compiler-dev