Make static evaluation of java arithmethic JS compliant.

JavaScript always performs floating point operations in 64-bit
precision IEEE-754. Whereas Java has two floating point types.
The float type has a precision that nominally corresponds to
 32-bit precision IEEE-754, and the double type to 64-bit
precision IEEE-754. On top Java can do most float operaions
in a precision that is at least the one required unless (strictfp
is specified).

This patch makes sure that static evaluation optimizations are
always performed in JavaScript semantics.

Bug: issue 8909.
Change-Id: I32f68009d689acf842674b932ed1f511763e337a
11 files changed