RFR(XS): 8054530: C2: assert(res == old_res) failed: Inconsistency between old and new
vladimir.kozlov at oracle.com
Wed Aug 13 17:36:55 UTC 2014
On 8/13/14 10:20 AM, David Chase wrote:
> Minor nit, would you consider moving the assignment to “res” up above the #ifdef ASSERT,
> and then sucking the assert(res == old_res) inside the #ifdef ASSERT/#endif ?
> That way the apparent reference to “old_res” occurs within the same ifdef that defines it,
> even though we know that (right now, at least) assert is a macro that makes its first
> parameter go away if ASSERT is not defined.
> And could HeapWordsPerOop also be unsigned?
> On 2014-08-13, at 12:48 PM, Morris Meyer <morris.meyer at oracle.com> wrote:
>> Could I get a review for this issue? On Linux-SparcV9 7u72 with Gcc 4.4 compilers (circa 2010), the asserted calculation leaves the high order bit set in the variable old_res, which causes the bug. align_size_up() calls for size_t and fixing array_size(int length) to properly pass unsigned ints fixes this issue.
>> This patch has been tested with JPRT against 7u-dev repositories.
>> WEBREV - http://cr.openjdk.java.net/~morris/8054530.01/
>> JBS - http://bugs.openjdk.java.net/browse/JDK-8054530
More information about the hotspot-compiler-dev