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