diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2007-10-31 14:05:48 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2007-10-31 14:05:48 +0000 |
commit | 3124ea56589f809bf64c43e9924fb82df21ad765 (patch) | |
tree | 2012d659d2ec83b7fcf11254686b696b31991f97 | |
parent | c1cb43d928cc6de8842a6b8f5e90a8abe409286e (diff) | |
download | scala-3124ea56589f809bf64c43e9924fb82df21ad765.tar.gz scala-3124ea56589f809bf64c43e9924fb82df21ad765.tar.bz2 scala-3124ea56589f809bf64c43e9924fb82df21ad765.zip |
Fixed NaN compilation problems.
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala | 18 |
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)) |