RFR(XS): 8054530: C2: assert(res == old_res) failed: Inconsistency between old and new
morris.meyer at oracle.com
Wed Aug 13 18:56:20 UTC 2014
David and Vladimir,
Thanks for the review. Here is a newer version that has those changes
and has been tested with JPRT.
WEBREV - http://cr.openjdk.java.net/~morris/8054530.02
JBS - http://bugs.openjdk.java.net/browse/JDK-8054530
On 8/13/14, 1:36 PM, Vladimir Kozlov wrote:
> 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>
>>> 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