[aarch64-port-dev ] RFR: JDK-8183533 AArch64: redundant registers saving in arraycopy stubs
Felix Yang
felix.yang at linaro.org
Thu Jul 20 14:55:18 UTC 2017
New webrev LGTM. Only comments updated compared with the previous version,
so I am pushing this. Thanks.
On 17 July 2017 at 14:02, Zhongwei Yao <zhongwei.yao at linaro.org> wrote:
> Hi, all,
>
> Thanks for your review and feedback!
>
> Patch is updated: http://cr.openjdk.java.net/~njian/8183533/webrev.01/
>
> On 14 July 2017 at 23:37, White, Derek <Derek.White at cavium.com> wrote:
>
> > Hi Zhongwei,
> >
> > A great improvement!
> >
> > > -----Original Message-----
> > > From: aarch64-port-dev [mailto:aarch64-port-dev-
> > > bounces at openjdk.java.net] On Behalf Of Zhongwei Yao
> > > Sent: Friday, July 14, 2017 12:33 AM
> > > To: aarch64-port-dev at openjdk.java.net
> > > Subject: [aarch64-port-dev ] RFR: JDK-8183533 AArch64: redundant
> > registers
> > > saving in arraycopy stubs
> > >
> > > Hi, all,
> > > In disjoint oop arraycopy stub, conjoint oop arraycopy stub and
> > checkcasingt
> > > arraycopy stub, gen_write_ref_array_*_barrier will save all
> > call-clobbered
> > > registers. Those saves are actually redundant. This patch removes these
> > > redundant saved registers and improves performance.
> > >
> > > For example in StubRoutines::arrayof_oop_disjoint_arraycopy
> > > Before applying this patch:
> > >
> > > StubRoutines::arrayof_oop_disjoint_arraycopy [0x0000ffffa0678c80,
> > > 0x0000ffffa0678f5c[ (732 bytes)
> > > 0x0000ffffa0678c80: stp x29, x30, [sp,#-16]!
> > > 0x0000ffffa0678c84: mov x29, sp
> > > 0x0000ffffa0678c88: stp x1, x2, [sp,#-16]!
> > > 0x0000ffffa0678c8c: stp x0, x1, [sp,#-144]!
> > > 0x0000ffffa0678c90: stp x2, x3, [sp,#16]
> > > 0x0000ffffa0678c94: stp x4, x5, [sp,#32]
> > > 0x0000ffffa0678c98: stp x6, x7, [sp,#48]
> > > 0x0000ffffa0678c9c: stp x10, x11, [sp,#64]
> > > 0x0000ffffa0678ca0: stp x12, x13, [sp,#80]
> > > 0x0000ffffa0678ca4: stp x14, x15, [sp,#96]
> > > 0x0000ffffa0678ca8: stp x16, x17, [sp,#112]
> > > 0x0000ffffa0678cac: stp x18, xzr, [sp,#128]
> > > 0x0000ffffa0678cb0: stp d30, d31, [sp,#-16]!
> > > 0x0000ffffa0678cb4: stp d28, d29, [sp,#-16]!
> > > 0x0000ffffa0678cb8: stp d26, d27, [sp,#-16]!
> > > 0x0000ffffa0678cbc: stp d24, d25, [sp,#-16]!
> > > 0x0000ffffa0678cc0: stp d22, d23, [sp,#-16]!
> > > 0x0000ffffa0678cc4: stp d20, d21, [sp,#-16]!
> > > 0x0000ffffa0678cc8: stp d18, d19, [sp,#-16]!
> > > 0x0000ffffa0678ccc: stp d16, d17, [sp,#-16]!
> > > 0x0000ffffa0678cd0: stp d6, d7, [sp,#-16]!
> > > 0x0000ffffa0678cd4: stp d4, d5, [sp,#-16]!
> > > 0x0000ffffa0678cd8: stp d2, d3, [sp,#-16]!
> > > 0x0000ffffa0678cdc: stp d0, d1, [sp,#-16]!
> > > 0x0000ffffa0678ce0: mov x0, x1
> > > 0x0000ffffa0678ce4: mov x1, x2
> > > 0x0000ffffa0678ce8: stp x8, x12, [sp,#-16]!
> > > 0x0000ffffa0678cec: mov x8, #0x5ce0 // #23776
> > > 0x0000ffffa0678cf0: movk x8, #0xa3cd, lsl #16
> > > 0x0000ffffa0678cf4: movk x8, #0xffff, lsl #32
> > > 0x0000ffffa0678cf8: blr x8
> > > 0x0000ffffa0678cfc: ldp x8, x12, [sp],#16
> > > 0x0000ffffa0678d00: isb
> > > 0x0000ffffa0678d04: ldp d0, d1, [sp],#16
> > > 0x0000ffffa0678d08: ldp d2, d3, [sp],#16
> > > 0x0000ffffa0678d0c: ldp d4, d5, [sp],#16
> > > 0x0000ffffa0678d10: ldp d6, d7, [sp],#16
> > > 0x0000ffffa0678d14: ldp d16, d17, [sp],#16
> > > 0x0000ffffa0678d18: ldp d18, d19, [sp],#16
> > > 0x0000ffffa0678d1c: ldp d20, d21, [sp],#16
> > > 0x0000ffffa0678d20: ldp d22, d23, [sp],#16
> > > 0x0000ffffa0678d24: ldp d24, d25, [sp],#16
> > > 0x0000ffffa0678d28: ldp d26, d27, [sp],#16
> > > 0x0000ffffa0678d2c: ldp d28, d29, [sp],#16
> > > 0x0000ffffa0678d30: ldp d30, d31, [sp],#16
> > > 0x0000ffffa0678d34: ldp x2, x3, [sp,#16]
> > > 0x0000ffffa0678d38: ldp x4, x5, [sp,#32]
> > > 0x0000ffffa0678d3c: ldp x6, x7, [sp,#48]
> > > 0x0000ffffa0678d40: ldp x10, x11, [sp,#64]
> > > 0x0000ffffa0678d44: ldp x12, x13, [sp,#80]
> > > 0x0000ffffa0678d48: ldp x14, x15, [sp,#96]
> > > 0x0000ffffa0678d4c: ldp x16, x17, [sp,#112]
> > > 0x0000ffffa0678d50: ldp x18, xzr, [sp,#128]
> > > 0x0000ffffa0678d54: ldp x0, x1, [sp],#144
> > > 0x0000ffffa0678d58: prfm pldl1keep, [x0]
> > > ...
> > >
> > > After applying this patch:
> > >
> > > StubRoutines::arrayof_oop_disjoint_arraycopy [0x0000ffff8887ec80,
> > > 0x0000ffff8887ee1c[ (412 bytes)
> > > 0x0000ffff8887ec80: stp x29, x30, [sp,#-16]!
> > > 0x0000ffff8887ec84: mov x29, sp
> > > 0x0000ffff8887ec88: stp x0, x1, [sp,#-32]!
> > > 0x0000ffff8887ec8c: stp x2, xzr, [sp,#16]
> > > 0x0000ffff8887ec90: mov x0, x1
> > > 0x0000ffff8887ec94: mov x1, x2
> > > 0x0000ffff8887ec98: stp x8, x12, [sp,#-16]!
> > > 0x0000ffff8887ec9c: mov x8, #0x2ce0 // #11488
> > > 0x0000ffff8887eca0: movk x8, #0x9998, lsl #16
> > > 0x0000ffff8887eca4: movk x8, #0xffff, lsl #32
> > > 0x0000ffff8887eca8: blr x8
> > > 0x0000ffff8887ecac: ldp x8, x12, [sp],#16
> > > 0x0000ffff8887ecb0: isb
> > > 0x0000ffff8887ecb4: ldp x2, xzr, [sp,#16]
> > > 0x0000ffff8887ecb8: ldp x0, x1, [sp],#32
> > > 0x0000ffff8887ecbc: stp x1, x2, [sp,#-16]!
> > > 0x0000ffff8887ecc0: prfm pldl1keep, [x0]
> > > ...
> > >
> > > And this patch passes all jtreg tests.
> > >
> > > Bug:
> > > https://bugs.openjdk.java.net/browse/JDK-8183533
> > >
> > > Webrev:
> > > http://cr.openjdk.java.net/~njian/8183533/webrev.00/
> > >
> > > Please help to review it.
> > >
> > > --
> > > Best regards,
> > > Zhongwei
> >
>
>
>
> --
> Best regards,
> Zhongwei
>
More information about the aarch64-port-dev
mailing list