summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2007-10-31 14:05:48 +0000
committerIulian Dragos <jaguarul@gmail.com>2007-10-31 14:05:48 +0000
commit3124ea56589f809bf64c43e9924fb82df21ad765 (patch)
tree2012d659d2ec83b7fcf11254686b696b31991f97 /src
parentc1cb43d928cc6de8842a6b8f5e90a8abe409286e (diff)
downloadscala-3124ea56589f809bf64c43e9924fb82df21ad765.tar.gz
scala-3124ea56589f809bf64c43e9924fb82df21ad765.tar.bz2
scala-3124ea56589f809bf64c43e9924fb82df21ad765.zip
Fixed NaN compilation problems.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
index 63f4daed46..c19ec8f494 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
@@ -894,8 +894,12 @@ abstract class GenJVM extends SubComponent {
case _ =>
(kind: @unchecked) match {
case LONG => jcode.emitLCMP()
- case FLOAT => jcode.emitFCMPG()
- case DOUBLE => jcode.emitDCMPG()
+ case FLOAT =>
+ if (cond == LT || cond == LE) jcode.emitFCMPG()
+ else jcode.emitFCMPL()
+ case DOUBLE =>
+ if (cond == LT || cond == LE) jcode.emitDCMPG()
+ else jcode.emitDCMPL()
}
if (nextBlock == success) {
jcode.emitIF(conds(negate(cond)), labels(failure));
@@ -930,8 +934,14 @@ abstract class GenJVM extends SubComponent {
case _ =>
(kind: @unchecked) match {
case LONG => jcode.emitLCONST_0(); jcode.emitLCMP()
- case FLOAT => jcode.emitFCONST_0(); jcode.emitFCMPL()
- case DOUBLE => jcode.emitDCONST_0(); jcode.emitDCMPL()
+ case FLOAT =>
+ jcode.emitFCONST_0();
+ if (cond == LT || cond == LE) jcode.emitFCMPG()
+ else jcode.emitFCMPL()
+ case DOUBLE =>
+ jcode.emitDCONST_0();
+ if (cond == LT || cond == LE) jcode.emitDCMPG()
+ else jcode.emitDCMPL()
}
if (nextBlock == success) {
jcode.emitIF(conds(negate(cond)), labels(failure))