RFR(S): 8028308: nsk regression, assert(obj->is_oop()) failed: not an oop

Roland Westrelin roland.westrelin at oracle.com
Tue Nov 19 09:07:07 PST 2013

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
 // Load address of array of frame pcs into rcx (address*)                                                                                                                                                                                                                     
  __ movptr(rcx,

  // Trash the return pc                                                                                                                                                                                                                                                        
  __ addptr(rsp, wordSize);

  // Load address of array of frame sizes into rsi (intptr_t*)                                                                                                                                                                                                                  
  __ movptr(rsi, Address(rdi,

  // Counter                                                                                                                                                                                                                                                                    
  __ movl(rdx, Address(rdi,
                       number_of_frames_offset_in_bytes())); // (int)           


> 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