Why doesn't HotSpot use div machine code?
Christian Thalinger
Christian.Thalinger at Sun.COM
Wed Jan 13 02:16:20 PST 2010
On Wed, 2010-01-13 at 10:05 +0000, Andrew Haley wrote:
> On 01/13/2010 09:55 AM, Christian Thalinger wrote:
> > On Wed, 2009-12-23 at 22:01 +0100, Ulf Zibis wrote:
> >> Why doesn't HotSpot use div machine code?
> >> I guess this would be faster here.
> >
> > Intel's div/idiv instructions have a very high latency and the latency
> > even varies with the input values, as you can see in Intels'
> > Optimization Reference Manual[1] around page C-27.
> >
> > Additionally a Java division (idiv) needs special treatment of corner
> > cases, as you can read in the JVM specification.
>
> Actually it doesn't, as you can see in the gcj implementation: it's
> possible to fixup the corner cases afterwards.
>
> http://gcc.gnu.org/svn/gcc/trunk/libjava/include/x86_64-signal.h
That's interesting. I didn't know GCJ is doing that. But actually you
have to handle the corner case, just not in-line but out-of-line. But
indeed it saves a couple of cycles.
-- Christian
More information about the hotspot-compiler-dev
mailing list