CVS kaffe (robilad): make dcmpl and dcmpg comply with spec
Kaffe CVS <[email protected]> Mon, 11 Feb 2008 13:46:31 -0800
| Newsgroups | gmane.comp.java.vm.kaffe.general |
|---|---|
| Message-ID | <[email protected]> |
PatchSet 7739 Date: 2008/02/11 21:44:41 Author: robilad Branch: HEAD Tag: (none) Log: make dcmpl and dcmpg comply with spec 2008-02-11 Dalibor Topic <[email protected]> * kaffe/kaffevm/soft.c (soft_dcmp): New function. Implements dcmpl/dcmpg according to VM spec. (soft_dcmpl, soft_dcmpg) Call soft_dcmp. Members: ChangeLog:1.5239->1.5240 kaffe/kaffevm/soft.c:1.83->1.84 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.5239 kaffe/ChangeLog:1.5240 --- kaffe/ChangeLog:1.5239 Sun Feb 3 15:08:29 2008 +++ kaffe/ChangeLog Mon Feb 11 21:44:41 2008 @@ -1,3 +1,9 @@ +2008-02-11 Dalibor Topic <[email protected]> + + * kaffe/kaffevm/soft.c (soft_dcmp): New function. + Implements dcmpl/dcmpg according to VM spec. + (soft_dcmpl, soft_dcmpg) Call soft_dcmp. + 2008-02-03 Dalibor Topic <[email protected]> * config/arm/jit-arm.def (cvtfi_RxR): Removed. Index: kaffe/kaffe/kaffevm/soft.c diff -u kaffe/kaffe/kaffevm/soft.c:1.83 kaffe/kaffe/kaffevm/soft.c:1.84 --- kaffe/kaffe/kaffevm/soft.c:1.83 Sat Jan 19 15:13:39 2008 +++ kaffe/kaffe/kaffevm/soft.c Mon Feb 11 21:44:43 2008 @@ -626,27 +626,28 @@ } } + +static +jint +soft_dcmp(const jdouble v1, const jdouble v2, const jint nan) +{ + if (v1 > v2) + return 1; + else if (v1 == v2) + return 0; + else if (v1 < v2) + return -1; + else + return nan; +} + /* * soft_dcmpg */ jint soft_dcmpg(jdouble v1, jdouble v2) { - jint ret; - if ((!isinf(v1) && isnan(v1)) || (!isinf(v2) && isnan(v2))) { - ret = 1; - } - else if (v1 > v2) { - ret = 1; - } - else if (v1 == v2) { - ret = 0; - } - else { - ret = -1; - } - - return (ret); + return soft_dcmp(v1, v2, 1); } /* @@ -655,20 +656,7 @@ jint soft_dcmpl(jdouble v1, jdouble v2) { - jint ret; - if ((!isinf(v1) && isnan(v1)) || (!isinf(v2) && isnan(v2))) { - ret = -1; - } - else if (v1 > v2) { - ret = 1; - } - else if (v1 == v2) { - ret = 0; - } - else { - ret = -1; - } - return (ret); + return soft_dcmp(v1, v2, -1); } /*