Request for reviews (M): 6910618: C2: Error: assert(d->is_oop(),"JVM_ArrayCopy: dst not an oop")

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Mon Feb 8 11:50:05 PST 2010


Because it will return deoptee (caller method) and not the method
from which we returned already (no frame on stack).

Vladimir

Tom Rodriguez wrote:
> Why do you need to record this in the PcDesc?  Why can't you just do:
> 
> chunk->at(0)->scope()->method()->return_type() == T_OBJECT
> 
> tom
> 
> On Feb 8, 2010, at 11:12 AM, Vladimir Kozlov wrote:
> 
>> http://cr.openjdk.java.net/~kvn/6910618/webrev.00
>>
>> Fixed 6910618: C2: Error: assert(d->is_oop(),"JVM_ArrayCopy: dst not an oop")
>>
>> Problem:
>> If deoptimization happened on the return from a call which
>> which returns oop, the oop will be not updated during GC which
>> is triggered by scalar replaced objects reallocation.
>>
>> Solution:
>> Mark in PcDesc call sites which return oop (this is main part of changes)
>> and save the result oop across objects reallocation during deoptimization.
>>
>> Reviewed by:
>>
>> Fix verified (y/n): y, test
>>
>> Other testing:
>> JPRT
>>
> 


More information about the hotspot-compiler-dev mailing list