review(M): 7034967: C1: assert(false) failed: error (assembler_sparc.cpp:2043)

Igor Veresov igor.veresov at oracle.com
Fri Apr 8 16:07:54 PDT 2011


Thanks!

Webrev updated.

igor

On 4/8/11 3:57 PM, Vladimir Kozlov wrote:
> Looks good.
>
> c1_CodeStubs_x86.cpp: add explanation (as you explained me) why small
> code is needed here:
> + // Load without verification to keep code size small. Also, we know
> it's not null.
>
> c1_LIRGenerator.cpp:
> + // ptr cannot cannot be an object because we use this barrier for array
> ^ repeated
>
> Vladimir
>
> Igor Veresov wrote:
>> The assert is a verification failure originated from
>> LIR_Assembler::emit_unwind_handler() complaining that the exception
>> oop is null. The verification code was invalid, because in
>> C1_MacroAssembler::verify_not_null_oop() we used br_zero() to check
>> for null, which actually checks only the least significant 32bits. Now
>> br_notnull is used instead.
>>
>> Also, I found that VerifyOops didn't work with 64bit C1 (both x64 and
>> sparc), which is also fixed.
>>
>>
>> Webrev: http://cr.openjdk.java.net/~iveresov/7034967/webrev.00/
>>
>>
>> Thanks,
>> igor



More information about the hotspot-compiler-dev mailing list