Request for review: 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Jan 8 16:35:17 PST 2013


On 1/8/13 4:10 PM, Vitaly Davidovich wrote:
> Hi Vladimir,
>
> encodeArray can be made static.
>
> Also, what's the purpose of overflow flag? Once you detect overflow
> can't you simply return the overflow result?

No, we can't just exit, we have to encode everything (write to 
destination byte[] array) up to that limit because it could exit before 
that. I have to keep original logic intact.

>
> What's the key piece that allows jit to generate better code? Is it the
> encodeArray which is nice, small, and isolated?

Correct. Original loop has a lot of checks, calls, several exits 
('break' in new loop is fine) which will prevent execution of loop 
optimizations.

Thanks,
Vlaidmir

>
> Thanks
>
> Sent from my phone
>
> On Jan 8, 2013 6:18 PM, "Vladimir Kozlov" <vladimir.kozlov at oracle.com
> <mailto:vladimir.kozlov at oracle.com>> wrote:
>
>     http://cr.openjdk.java.net/~__kvn/6896617_jdk/webrev
>     <http://cr.openjdk.java.net/~kvn/6896617_jdk/webrev>
>
>     Move encoding loop into separate method for which VM will use
>     intrinsic on x86. I want to get agreement on this jdk change before
>     I submit VM part.
>
>     This gives +1.6% performance improvement on SPECjAppServer2004 on x86.
>     Note, even without intrinsic (on other platforms) JIT will produce
>     better code for this loop.
>
>     Thanks,
>     Vladimir
>


More information about the hotspot-compiler-dev mailing list