Merge pull request #4967 from kumpera/profiler-arg-cleanup
[mono.git] / mono / dis / declsec.c
old mode 100644 (file)
new mode 100755 (executable)
index 29822bb..eb0f168
@@ -6,6 +6,7 @@
  *     Sebastien Pouliot  <sebastien@ximian.com>
  *
  * Copyright (C) 2005 Novell, Inc (http://www.novell.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
  */
 
 #include <glib.h>
@@ -17,6 +18,7 @@
 #include "mono/utils/mono-compiler.h"
 
 #include "declsec.h"
+#include "util.h"
 
 static char*
 declsec_20_get_classname (const char* p, const char **rptr)
@@ -37,10 +39,10 @@ declsec_20_get_classname (const char* p, const char **rptr)
        while ((*a++ != ',') && (apos++ < len));
 
        if (apos - cpos > 1) {
-               g_string_sprintfa (res, "[%.*s]%.*s", apos - cpos, c, cpos, p);
+               g_string_append_printf (res, "[%.*s]%.*s", apos - cpos, c, cpos, p);
        } else {
                /* in-assembly type aren't fully qualified (no comma) */
-               g_string_sprintfa (res, "%.*s", cpos - 1, p);
+               g_string_append_printf (res, "%.*s", cpos - 1, p);
        }
 
        p += len;
@@ -56,12 +58,18 @@ static gboolean
 declsec_20_write_type (GString *str, char type)
 {
        switch (type) {
+       case MONO_TYPE_BOOLEAN:
+               g_string_append (str, "bool");
+               break;
        case MONO_TYPE_SZARRAY:
                g_string_append (str, "[]");
                break;
        case MONO_TYPE_SYSTEM_TYPE:
                g_string_append (str, "type");
                break;
+       case MONO_TYPE_STRING:
+               g_string_append (str, "string");
+               break;
        default:
                g_warning ("TODO type %d - please fill a bug report on this!", type);
                return FALSE;
@@ -74,63 +82,63 @@ declsec_20_write_value (GString *str, char type, const char *value)
 {
        switch (type) {
        case MONO_TYPE_U1:
-               g_string_sprintfa (str, "%d", (unsigned char)*value);
+               g_string_append_printf (str, "%d", (unsigned char)*value);
                return value + 1;
        case MONO_TYPE_I1:
-               g_string_sprintfa (str, "%d", *value);
+               g_string_append_printf (str, "%d", *value);
                return value + 1;
        case MONO_TYPE_BOOLEAN:
-               g_string_sprintfa (str, "%s", *value ? "true" : "false");
+               g_string_append_printf (str, "%s", *value ? "true" : "false");
                return value + 1;
        case MONO_TYPE_CHAR:
-               g_string_sprintfa (str, "0x%04X", read16 (value));
+               g_string_append_printf (str, "0x%04X", read16 (value));
                return value + 2;
        case MONO_TYPE_U2:
-               g_string_sprintfa (str, "%d", read16 (value));
+               g_string_append_printf (str, "%d", read16 (value));
                return value + 2;
        case MONO_TYPE_I2:
-               g_string_sprintfa (str, "%d", (gint16)read16 (value));
+               g_string_append_printf (str, "%d", (gint16)read16 (value));
                return value + 2;
        case MONO_TYPE_U4:
-               g_string_sprintfa (str, "%d", read32 (value));
+               g_string_append_printf (str, "%d", read32 (value));
                return value + 4;
        case MONO_TYPE_I4:
-               g_string_sprintfa (str, "%d", (gint32)read32 (value));
+               g_string_append_printf (str, "%d", (gint32)read32 (value));
                return value + 4;
        case MONO_TYPE_U8:
-               g_string_sprintfa (str, "%lld", (long long)read64 (value));
+               g_string_append_printf (str, "%lld", (long long)read64 (value));
                return value + 8;
        case MONO_TYPE_I8:
-               g_string_sprintfa (str, "%lld", (long long)read64 (value));
+               g_string_append_printf (str, "%lld", (long long)read64 (value));
                return value + 8;
        case MONO_TYPE_R4: {
                float val;
                int inf;
                readr4 (value, &val);
-               inf = isinf (val);
+               inf = dis_isinf (val);
                if (inf == -1) 
-                       g_string_sprintfa (str, "0xFF800000"); /* negative infinity */
+                       g_string_append_printf (str, "0xFF800000"); /* negative infinity */
                else if (inf == 1)
-                       g_string_sprintfa (str, "0x7F800000"); /* positive infinity */
-               else if (isnan (val))
-                       g_string_sprintfa (str, "0xFFC00000"); /* NaN */
+                       g_string_append_printf (str, "0x7F800000"); /* positive infinity */
+               else if (dis_isnan (val))
+                       g_string_append_printf (str, "0xFFC00000"); /* NaN */
                else
-                       g_string_sprintfa (str, "%.8g", val);
+                       g_string_append_printf (str, "%.8g", val);
                return value + 4;
        }
        case MONO_TYPE_R8: {
                double val;
                int inf;
                readr8 (value, &val);
-               inf = isinf (val);
+               inf = dis_isinf (val);
                if (inf == -1) 
-                       g_string_sprintfa (str, "0xFFF00000000000000"); /* negative infinity */
+                       g_string_append_printf (str, "0xFFF00000000000000"); /* negative infinity */
                else if (inf == 1)
-                       g_string_sprintfa (str, "0x7FFF0000000000000"); /* positive infinity */
+                       g_string_append_printf (str, "0x7FFF0000000000000"); /* positive infinity */
                else if (isnan (val))
-                       g_string_sprintfa (str, "0xFFF80000000000000"); /* NaN */
+                       g_string_append_printf (str, "0xFFF80000000000000"); /* NaN */
                else
-                       g_string_sprintfa (str, "%.17g", val);
+                       g_string_append_printf (str, "%.17g", val);
                return value + 8;
        }
        case MONO_TYPE_STRING:
@@ -139,7 +147,7 @@ declsec_20_write_value (GString *str, char type, const char *value)
                        return value + 1;
                } else {
                        int len = mono_metadata_decode_value (value, &value);
-                       g_string_sprintfa (str, "'%.*s'", len, value);
+                       g_string_append_printf (str, "'%.*s'", len, value);
                        return value + len;
                }
        case MONO_TYPE_SYSTEM_TYPE: {
@@ -172,7 +180,7 @@ dump_declsec_entry20 (MonoImage *m, const char* p, const char *indent)
                int len, j, pos = 0, param_len;
                char *param_start;
                char *s = declsec_20_get_classname (p, &p);
-               g_string_sprintfa (res, "%s = {", s);
+               g_string_append_printf (res, "%s = {", s);
                g_free (s);
 
                /* optional parameters length */
@@ -203,13 +211,13 @@ dump_declsec_entry20 (MonoImage *m, const char* p, const char *indent)
                        if (type == MONO_DECLSEC_ENUM) {
                                s = declsec_20_get_classname (p, &p);
                                len = mono_metadata_decode_value (p, &p);
-                               g_string_sprintfa (res, "enum %s '%.*s' = ", s, len, p);
+                               g_string_append_printf (res, "enum %s '%.*s' = ", s, len, p);
                                g_free (s);
                                p += len;
                                /* TODO: we must detect the size of the enum element (from the type ? length ?)
                                 * note: ildasm v2 has some problem decoding them too and doesn't
                                 * seems to rely on the type (as the other assembly isn't loaded) */
-                               g_string_sprintfa (res, "int32(%d)", read32 (p));
+                               g_string_append_printf (res, "int32(%d)", read32 (p));
                                p += 4;
                        } else {
                                int arraytype = 0;
@@ -220,7 +228,7 @@ dump_declsec_entry20 (MonoImage *m, const char* p, const char *indent)
                                declsec_20_write_type (res, type);
 
                                len = mono_metadata_decode_value (p, &p);
-                               g_string_sprintfa (res, " '%.*s' = ", len, p);
+                               g_string_append_printf (res, " '%.*s' = ", len, p);
                                p += len;
 
                                if (type == MONO_TYPE_SZARRAY) {
@@ -228,7 +236,7 @@ dump_declsec_entry20 (MonoImage *m, const char* p, const char *indent)
                                        declsec_20_write_type (res, type);
                                        elem = read32 (p);
                                        p += 4;
-                                       g_string_sprintfa (res, "[%d]", elem);
+                                       g_string_append_printf (res, "[%d]", elem);
                                } else {
                                        declsec_20_write_type (res, type);
                                        elem = 1;
@@ -244,7 +252,7 @@ dump_declsec_entry20 (MonoImage *m, const char* p, const char *indent)
                                }
                                
                                if (j < pos - 1)
-                                       g_string_sprintfa (res, ")\n%s", indent);
+                                       g_string_append_printf (res, ")\n%s", indent);
                                else
                                        g_string_append (res, ")");
                        }
@@ -252,7 +260,7 @@ dump_declsec_entry20 (MonoImage *m, const char* p, const char *indent)
                }
 
                if (i < num - 1)
-                       g_string_sprintfa (res, "},\n%s", indent);
+                       g_string_append_printf (res, "},\n%s", indent);
                else
                        g_string_append (res, "}");