RFR (XXS): 8026376: assert(false) failed: DEBUG MESSAGE: exception pc already set

Christian Thalinger christian.thalinger at oracle.com
Mon Oct 14 14:17:59 PDT 2013


The reason I've added it is because we do it on x86 but there are comments like this:

  // I think this is useless (throwing pc?)
  __ movptr(rdx, Address(rsp, RegisterSaver::rdx_offset_in_bytes()));

So we either should read it everywhere or don't.

On Oct 14, 2013, at 11:43 AM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:

> Don't read exception pc since it is not needed. You may trash a value in that register.
> 
> Thanks,
> Vladimir
> 
> On 10/14/13 11:19 AM, Christian Thalinger wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8026376
>> http://cr.openjdk.java.net/~twisti/8026376/webrev.00/
>> 
>> 8026376: assert(false) failed: DEBUG MESSAGE: exception pc already set
>> Reviewed-by:
>> 
>> It made me suspicious that only the second assert fired (the exception pc check) and not the first one (the exception oop check). I checked all the places where JavaThread::exception_oop_offset() was used to clear the exception oop to see if we also clear the exception pc.
>> 
>> In the deopt blob we have such a case. On x86 we clear both but on SPARC we don't.
>> 
>> Added the missing null-store instruction makes the test case pass.
>> 
>> Reading the exception pc is not really required but I've added it for completeness.
>> 



More information about the hotspot-compiler-dev mailing list