RFR(S): 8008242: VerifyOops fails on SPARC
Christian Thalinger
christian.thalinger at oracle.com
Tue Oct 8 10:30:29 PDT 2013
We don't need this check (which is wrong btw.):
+ if (type == T_OBJECT) {
+ __ verify_oop(dest->as_register());
+ }
LIR_Assembler::load methods already do that:
if (type == T_ARRAY || type == T_OBJECT) {
__ verify_oop(to_reg->as_register());
}
Once more, why did you remove this one?
1390 if (addr->base()->type() == T_OBJECT) {
1391 __ verify_oop(src);
1392 }
On Oct 8, 2013, at 6:34 AM, Morris Meyer <morris.meyer at oracle.com> wrote:
> Thanks for the bringing that up Roland and Christian. I fixed this issue and re-ran the change through JPRT.
>
> Here's the patch.
>
> --morris
>
> WEBREV - http://cr.openjdk.java.net/8008242.02
>
> On 10/7/13, 1:55 PM, Christian Thalinger wrote:
>> On Oct 7, 2013, at 9:11 AM, Roland Westrelin <roland.westrelin at oracle.com> wrote:
>>
>>> Hi Morris,
>>>
>>>> Could I get a review of this P2 issue on SPARC? I had to fix some branch relocation issues first, before relaxing the oop verify in c1_LIRAssembler_sparc::type_profile_helper() and mem2reg().
>>> Why did you change:
>>>
>>> 1391 __ verify_oop(src);
>>>
>>> in c1_LIRAssembler_sparc.cpp?
>> I concur. Did you hit a problem here? The check is guarded by:
>>
>> if (addr->base()->type() == T_OBJECT) {
>> - __ verify_oop(src);
>> + __ verify_klass_ptr(src);
>> }
>>
>> so this should trigger. If it does then we are propagating the wrong type somewhere.
>>
>>> It appears verify_klass_ptr() doesn't do anything currently so that nothing fails with this changed doesn't really prove it's correct.
>> Correct; these methods are currently empty. When the runtime team removed perm-gen they added these methods but never implemented them. Not our issue. But the second change is definitely correct; the receiver is a Klass*.
>>
>>> Roland.
>>>
>
More information about the hotspot-compiler-dev
mailing list