On Wed, Nov 16, 2011 at 8:19 AM, Gilles Sadowski <
gilles@harfang.homelinux.org> wrote:
> On Wed, Nov 16, 2011 at 07:52:27AM 0800, Ted Dunning wrote:
> > The JVM is likely to inline dummy, realize it does nothing and then
> > coalesce your other code.
> >
> > It isn't any wonder that this produces the same results.
>
> I'm not sure I understand what you mean: Does "coalesce" means that
> x + delta  x
> will be equal to
> delta
> ?
>
No. Just that the inlined code will disappear.
I don't think that the JIT is naive enough to simplify away the subtraction.
> The issue is whether an optimization could do that transformation.
>
If there are cases where IEEE FP arithmetic allows
x + delta  x != delta
then the optimization should not happen. Obviously, if x is NaN or
infinite, this holds. Also, it is clear that (x+delta)  x != delta for
some values of delta so I doubt that the optimization happens.
[Note that I did not implement any "dummy" function but rather called the
> quite nondummy "doubleToLongBits" and "longBitsToDouble".]
>
If you didn't actually use the results, then it will disappear. If you
called the java.math routines to do this, then those may be known to be
inverses and disappear as well. If you called your own implementations and
actually use the bits, then it will probably survive.
