X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fdis%2Futil.c;h=70f3f6e4ced663289b1a5f2820a367ff52f1b53f;hb=d4d7374efc689a8df4d84ec539bfe5336d1ea5ed;hp=8f91209e2971f15223c09eb5431be5ed2d37c4fe;hpb=f57a91c468f447f484c842fcc708133aaa9b88e9;p=mono.git diff --git a/mono/dis/util.c b/mono/dis/util.c old mode 100644 new mode 100755 index 8f91209e297..70f3f6e4ced --- a/mono/dis/util.c +++ b/mono/dis/util.c @@ -10,7 +10,13 @@ #include #include #include +#include #include "util.h" +#include "mono/utils/mono-compiler.h" + +#ifdef HAVE_IEEEFP_H +#include +#endif /** * map: @@ -45,19 +51,14 @@ flags (guint32 code, dis_map_t *table) buffer [0] = 0; - for (i = 0; code && table [i].str != NULL; i++) { - if (!(table [i].code & code)) - continue; - code &= ~table [i].code; - if (!*table [i].str) - continue; - if (buffer [0]) - strcat (buffer, " "); - strcat (buffer, table [i].str); - } + for (i = 0; code && table [i].str != NULL; i++) + if (table [i].code & code) { + code &= ~table [i].code; + strcat (buffer, table [i].str); + } if (code) - sprintf (buffer + strlen (buffer), " unknown-flag-%2x", code); + sprintf (buffer + strlen (buffer), "unknown-flag-%2x ", code); return buffer; } @@ -127,3 +128,36 @@ data_dump (const char *data, int len, const char* prefix) { return g_string_free (str, FALSE); } +int +dis_isinf (double num) +{ +#ifdef HAVE_ISINF + return isinf (num); +#elif defined(HAVE_IEEEFP_H) + fpclass_t klass; + + klass = fpclass (num); + if (klass == FP_NINF) + return -1; + + if (klass == FP_PINF) + return 1; + + return 0; +#elif defined(HAVE__FINITE) + return _finite (num) ? 0 : 1; +#else +#error "Don't know how to implement isinf for this platform." +#endif +} + +int +dis_isnan (double num) +{ +#ifdef __MINGW32_VERSION +return _isnan (num); +#else +return isnan (num); +#endif +} +