-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
If you compile the following:
public class Test {
public static final float POSITIVE_INFINITY = Float.POSITIVE_INFINITY;
public static final float NEGATIVE_INFINITY = Float.NEGATIVE_INFINITY;
public static final float NaN = Float.NaN;
}
the disassembler produces the following:
version 1.8;
public class TestInf extends java.lang.Object [
SourceFile "TestInf.java";
] {
public static final float POSITIVE_INFINITY = ∞float;
public static final float NEGATIVE_INFINITY = -∞float;
public static final float NAN = NaNfloat;
public void <init>() {
line 1
aload_0
invokespecial java.lang.Object#void <init>()
return
}
public static void main(java.lang.String[]) {
line 8
getstatic java.lang.System#java.io.PrintStream out
ldc ∞float
invokevirtual java.io.PrintStream#void println(float)
line 9
getstatic java.lang.System#java.io.PrintStream out
ldc -∞float
invokevirtual java.io.PrintStream#void println(float)
line 10
getstatic java.lang.System#java.io.PrintStream out
ldc NaNfloat
invokevirtual java.io.PrintStream#void println(float)
line 11
return
}
}
This is because the conversion from number to string uses DecimalFormat here.
The assembler also cannot read this back in, since it cannot parse these constants (they aren't numbers).
Metadata
Metadata
Assignees
Labels
No labels