In ClassFileWriter.addPush(double) use DNEG to generate more compact code for -0.0 and -1.0

This commit is contained in:
igor%mir2.org 2003-11-11 20:31:36 +00:00
Родитель f260baaf11
Коммит b7d4dfaa28
1 изменённых файлов: 10 добавлений и 3 удалений

Просмотреть файл

@ -844,11 +844,18 @@ public class ClassFileWriter {
*/
public void addPush(double k)
{
if (k == 0.0 && 1.0 / k >= 0.0) {
// Positive zero
if (k == 0.0) {
// zero
add(ByteCode.DCONST_0);
} else if (k == 1.0) {
if (1.0 / k < 0) {
// Negative zero
add(ByteCode.DNEG);
}
} else if (k == 1.0 || k == -1.0) {
add(ByteCode.DCONST_1);
if (k < 0) {
add(ByteCode.DNEG);
}
} else {
addLoadConstant(k);
}