RFR(S): 8028308: nsk regression, assert(obj->is_oop()) failed: not an oop
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Nov 19 12:28:03 PST 2013
On 11/19/13 9:07 AM, Roland Westrelin wrote:
> Thanks for the review.
>
>> It looks good. Can you use one line for next as in other places?:
>>
>> + __ movptr(rbp,
>> + Address(rdi,
>> + Deoptimization::UnrollBlock::initial_info_offset_in_bytes()));
>>
>
> I will. Do you want me to also fix the other similar lines in generate_uncommon_trap_blob
Yes, please.
thanks,
Vladimir
> // Load address of array of frame pcs into rcx (address*)
> __ movptr(rcx,
> Address(rdi,
> Deoptimization::UnrollBlock::frame_pcs_offset_in_bytes()));
>
> // Trash the return pc
> __ addptr(rsp, wordSize);
>
> // Load address of array of frame sizes into rsi (intptr_t*)
> __ movptr(rsi, Address(rdi,
> Deoptimization::UnrollBlock::
> frame_sizes_offset_in_bytes()));
>
> // Counter
> __ movl(rdx, Address(rdi,
> Deoptimization::UnrollBlock::
> number_of_frames_offset_in_bytes())); // (int)
>
> Roland.
>
>> Thanks,
>> Vladimir
>>
>> On 11/15/13 3:46 AM, Roland Westrelin wrote:
>>> http://cr.openjdk.java.net/~roland/8028308/webrev.00/
>>>
>>> When the stack bang in the deopt blob results in an exception being thrown, rbp must contain the value to be restored on return to the caller so that it is properly set when the exception is propagated to the caller. It is not the case right now.
>>>
>>> The test case is not the most robust one because it needs the compiler to generate code that keeps an object in rbp across the call to m1 in m3. The failure reproduces at least on 32bit.
>>>
>>> Roland.
>>>
>
More information about the hotspot-compiler-dev
mailing list