RFR (XS) 8015265: revise the fix for 8007037
David Holmes
david.holmes at oracle.com
Thu May 23 18:06:47 PDT 2013
Hi Calvin,
On 24/05/2013 4:51 AM, Calvin Cheung wrote:
> While working on a fix for 8014431, it was found that the fix for
> 8007037 in constantPool.cpp needs to be revised. David H. suggested that
> this should be addressed in a separate bug fix.
Thanks for doing that. The fix is fine.
However this definitely needs further investigation in relation to
8007037 because the current code is potentially incorrectly matching
when it should not, yet no failures have been seen in relation to this.
It might be, of course, that in our tests the second condition will
always be true if the first was and hence we accidentally get the right
answer. But as others have said we definitely do not have test coverage
for this code. Hopefully Serguei can suggest an update the tests that
will expose this bug.
Thanks again,
David
-----
> The problem is that the following statement:
> bool match = compare_entry_to(k1, cp2, k2, CHECK_false) &&
> compare_operand_to(i1, cp2, i2, CHECK_false);
>
> expands to:
>
> bool match = compare_entry_to(k1, cp2, k2, THREAD);
> if (HAS_PENDING_EXCEPTION) return false;
> (0) && compare_operand_to(i1, cp2, i2, THREAD);
> if (HAS_PENDING_EXCEPTION) return false;
> (0);
>
> so the match has the wrong value.
>
> webrev: http://cr.openjdk.java.net/~ccheung/8015265/webrev/
> bug: http://bugs.sun.com/view_bug.do?bug_id=8015265 (not available yet)
> jbs: https://jbs.oracle.com/bugs/browse/JDK-8015265
>
> Testing:
> jprt
> vm.quick on linux_x64
>
> thanks,
> Calvin
More information about the hotspot-runtime-dev
mailing list