RFR(S): 8209544: AES encrypt performance regression in jdk11b11

Roland Westrelin rwestrel at redhat.com
Thu Sep 6 13:10:43 UTC 2018


> Yes. Here is how it looks like:
>
> Current
>
>              0x0000fffca85ffd68: add    w16, w4, w10                ;*invokestatic addExact {reexecute=0 rethrow=0 return_oop=0}
>                                                                        ; - com.sun.crypto.provider.CipherCore::getOutputSizeByOperation at 17 (line 328)
>                                                                        ; - com.sun.crypto.provider.CipherCore::doFinal at 20 (line 917)
>    0.02%     0x0000fffca85ffd6c: cmp    w14, #0x1
>              0x0000fffca85ffd70: b.cc    0x0000fffca85fff20  // b.lo, b.ul, b.last
>                                                                        ;*lookupswitch {reexecute=0 rethrow=0 return_oop=0}
>                                                                        ; - com.sun.crypto.provider.CipherCore::getOutputSizeByOperation at 25 (line 329)
>                                                                        ; - com.sun.crypto.provider.CipherCore::doFinal at 20 (line 917)
>              0x0000fffca85ffd74: lsl    x11, x11, #3                ;*getfield padding {reexecute=0 rethrow=0 return_oop=0}
>                                                                        ; - com.sun.crypto.provider.CipherCore::getOutputSizeByOperation at 92 (line 344)
>                                                                        ; - com.sun.crypto.provider.CipherCore::doFinal at 20 (line 917)
>
> Patched/-XX:-UseSwitchProfiling
>
>             0x0000fffcd86000e4: add    w16, w4, w15                ;*invokestatic addExact {reexecute=0 rethrow=0 return_oop=0}
>                                                                       ; - com.sun.crypto.provider.CipherCore::getOutputSizeByOperation at 17 (line 328)
>                                                                       ; - com.sun.crypto.provider.CipherCore::doFinal at 20 (line 917)
>    0.01%    0x0000fffcd86000e8: cmp    w14, #0x7
>             0x0000fffcd86000ec: b.eq    0x0000fffcd8600234  // b.none  ;*lookupswitch {reexecute=0 rethrow=0 return_oop=0}
>                                                                       ; - com.sun.crypto.provider.CipherCore::getOutputSizeByOperation at 25 (line 329)
>                                                                       ; - com.sun.crypto.provider.CipherCore::doFinal at 20 (line 917)
>             0x0000fffcd86000f0: lsl    x11, x12, #3                ;*getfield padding {reexecute=0 rethrow=0 return_oop=0}
>                                                                       ; - com.sun.crypto.provider.CipherCore::getOutputSizeByOperation at 92 (line 344)
>                                                                       ; - com.sun.crypto.provider.CipherCore::doFinal at 20 (line 917)
>
> There are also several instructions/blocks rearrangements.

That does seem like a pretty minimal difference and not a reason not to
push that change. What do you think?

Roland.


More information about the hotspot-compiler-dev mailing list