Bug in floating point constant handling in constant pool writing
If a class containing the floating-point constant -0.0 is read in and written out using ASM's ClassReader / ClassWriter pair, the -0.0 constants will be incorrectly translated to 0.0. The reason for this is the equality comparison for single- and double-precision floating-point Items; these should be performing bitwise equality comparisons rather than using the floating-point equality comparisons defined by the language. A patch for the Item class is attached. This fix has been tested fairly extensively and solves this problem apparently without introducing any new ones.