[9] RFR(S): 8068945: Use RBP register as proper frame pointer in JIT compiled code on x86

Zoltán Majó zoltan.majo at oracle.com
Mon Mar 30 15:30:20 UTC 2015

Hi Roland,

thank you for your feedback!

On 03/30/2015 10:51 AM, Roland Westrelin wrote:
>> Webrev: http://cr.openjdk.java.net/~zmajo/8068945/webrev.00/
> macroAssembler_x86.cpp
> Don’t you need:
> mov(rbp, rsp);
> in the else branch of:
> 6118   if (stack_bang_size > 0) {
> (and then update MachPrologNode::format())

Yes, saving the rsp into rbp is needed in the else branch as well.

> x86_32.ad
> typo:
> 126 // Class for no reigsters (empty set).


> Rather than defining, for instance, dyn_ptr_reg in terms of ptr_reg and ptr_no_rbp_reg and then changing all references to ptr_reg into dyn_ptr_reg, I would have defined ptr_reg as either ptr_reg_with_rbp or ptr_reg_no_rbp and left the rest of the code unchanged.

I changed the naming of the register classes according to your 
suggestions for both x86_32 and x86_64.

> x86_64.ad
> 3211   match(rbp_RegP);
> 3227   match(rbp_RegP);
> I think it’s safe to keep rbp here.

I agree with you, thank you for spotting that!

Here is the updated version of the webrev (webrev.01):


I tested the updated version with JPRT and also with all 
java/lang/invoke tests. All tests pass.

Thank you and best regards,


> Roland.

More information about the hotspot-compiler-dev mailing list