Don't compute the total field.
authorSoeren Sandmann <sandmann@redhat.com>
Sat, 5 Nov 2005 17:28:22 +0000 (17:28 +0000)
committerSøren Sandmann Pedersen <ssp@src.gnome.org>
Sat, 5 Nov 2005 17:28:22 +0000 (17:28 +0000)
Sat Nov  5 12:39:33 2005  Soeren Sandmann  <sandmann@redhat.com>

        * profile.c (add_trace_to_tree): Don't compute the total field.

        * profile.h (struct ProfileDescendant): Remove 'total' field.

        * sysprof.c: Delete DESCENDANTS_TOTAL column and everything
        related to it.

        * profile.c: Remove commented out code

        * sfile.c (handle_text): Don't copy the text

ChangeLog
profile.c
profile.h
sfile.c
sysprof.c

index 2cdf936..c51a6a4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+Sat Nov  5 12:39:33 2005  Soeren Sandmann  <sandmann@redhat.com>
+
+       * profile.c (add_trace_to_tree): Don't compute the total field.
+
+       * profile.h (struct ProfileDescendant): Remove 'total' field. 
+
+       * sysprof.c: Delete DESCENDANTS_TOTAL column and everything
+       related to it.
+
+       * profile.c: Remove commented out code
+
+       * sfile.c (handle_text): Don't copy the text
+
 2005-11-04  Soren Sandmann  <sandmann@redhat.com>
 
        * collector.[ch]: Add copyright statement.
index 366a60b..81ed2b8 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -165,25 +165,6 @@ profile_save (Profile               *profile,
     return result;
 }
 
-#if 0
-static void
-make_hash_table (Node *node, GHashTable *table)
-{
-    if (!node)
-       return;
-    
-    g_assert (node->object);
-    
-    node->next = g_hash_table_lookup (table, node->object);
-    g_hash_table_insert (table, node->object, node);
-    
-    g_assert (node->siblings != (void *)0x11);
-    
-    make_hash_table (node->siblings, table);
-    make_hash_table (node->children, table);
-}
-#endif
-
 Profile *
 profile_load (const char *filename, GError **err)
 {
@@ -266,12 +247,9 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
 {
     GList *list;
     GPtrArray *nodes_to_unmark = g_ptr_array_new ();
-    GPtrArray *nodes_to_unmark_recursive = g_ptr_array_new ();
     ProfileDescendant *parent = NULL;
     int i, len;
     
-    GPtrArray *seen_objects = g_ptr_array_new ();
-    
     for (list = trace; list != NULL; list = list->next)
     {
        StackNode *node = list->data;
@@ -288,12 +266,12 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
        if (!match)
        {
            ProfileDescendant *seen_tree_node;
+           ProfileDescendant *n;
            
            /* Have we seen this object further up the tree? */
            seen_tree_node = NULL;
-           for (i = 0; i < seen_objects->len; ++i)
+           for (n = parent; n != NULL; n = n->parent)
            {
-               ProfileDescendant *n = seen_objects->pdata[i];
                if (n->name == node->address)
                    seen_tree_node = n;
            }
@@ -303,7 +281,7 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
                ProfileDescendant *node;
                
                g_assert (parent);
-               
+
                for (node = parent; node != seen_tree_node->parent; node = node->parent)
                {
                    node->non_recursion -= size;
@@ -311,10 +289,6 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
                }
                
                match = seen_tree_node;
-               
-               g_ptr_array_remove_range (seen_objects, 0, seen_objects->len);
-               for (node = match; node != NULL; node = node->parent)
-                   g_ptr_array_add (seen_objects, node);
            }
        }
        
@@ -324,13 +298,10 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
            
            match->name = node->address;
            match->non_recursion = 0;
-           match->total = 0;
            match->self = 0;
            match->children = NULL;
            match->marked_non_recursive = 0;
-           match->marked_total = FALSE;
            match->parent = parent;
-           
            match->siblings = *tree;
            *tree = match;
        }
@@ -342,25 +313,13 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
            ++match->marked_non_recursive;
        }
        
-       if (!match->marked_total)
-       {
-           g_ptr_array_add (nodes_to_unmark_recursive, match);
-           
-           match->total += size;
-           match->marked_total = TRUE;
-       }
-       
        if (!list->next)
            match->self += size;
        
-       g_ptr_array_add (seen_objects, match);
-       
        tree = &(match->children);
        parent = match;
     }
     
-    g_ptr_array_free (seen_objects, TRUE);
-    
     len = nodes_to_unmark->len;
     for (i = 0; i < len; ++i)
     {
@@ -369,16 +328,7 @@ add_trace_to_tree (ProfileDescendant **tree, GList *trace, guint size)
        tree_node->marked_non_recursive = 0;
     }
     
-    len = nodes_to_unmark_recursive->len;
-    for (i = 0; i < len; ++i)
-    {
-       ProfileDescendant *tree_node = nodes_to_unmark_recursive->pdata[i];
-       
-       tree_node->marked_total = FALSE;
-    }
-    
     g_ptr_array_free (nodes_to_unmark, TRUE);
-    g_ptr_array_free (nodes_to_unmark_recursive, TRUE);
 }
 
 static void
index 7f6cd3c..d20e735 100644 (file)
--- a/profile.h
+++ b/profile.h
@@ -40,14 +40,12 @@ struct ProfileDescendant
 {
     char *             name;
     guint              self;
-    guint              total;
     guint              non_recursion;
     ProfileDescendant * parent;
     ProfileDescendant * siblings;
     ProfileDescendant * children;
 
     int                        marked_non_recursive;
-    int                        marked_total;
 };
 
 struct ProfileCaller
diff --git a/sfile.c b/sfile.c
index 31a152c..7da3c76 100644 (file)
--- a/sfile.c
+++ b/sfile.c
@@ -569,10 +569,6 @@ state_transition_text (const State *state, SType *type, SType *target_type)
              */
             return transition->to;
         }
-#if 0
-        else
-            g_print ("transition: %d (%s)\n", transition->kind, transition->element);
-#endif
     }
     
     return NULL;
@@ -634,23 +630,28 @@ struct BuildContext
 };
 
 static gboolean
+is_all_blank (const char *text)
+{
+    while (g_ascii_isspace (*text))
+       text++;
+
+    return (*text == '\0');
+}
+
+static gboolean
 get_number (const char *text, int *number)
 {
     char *end;
     int result;
-    char *stripped;
     gboolean retval;
 
-    stripped = g_strstrip (g_strdup (text));
-    result = strtol (stripped, &end, 10);
-
-    retval = (*end == '\0');
+    result = strtol (text, &end, 10);
 
+    retval = is_all_blank (end);
+    
     if (retval && number)
         *number = result;
     
-    g_free (stripped);
-    
     return retval;
 }
 
@@ -914,6 +915,15 @@ decode_text (const char *text, char **decoded)
     return TRUE;
 }
 
+static const char *
+skip_whitespace (const char *text)
+{
+    while (g_ascii_isspace (*text))
+       text++;
+
+    return text;
+}
+
 static void
 handle_text (GMarkupParseContext *context,
             const gchar *text,
@@ -923,24 +933,22 @@ handle_text (GMarkupParseContext *context,
 {
     BuildContext *build = user_data;
     Instruction instruction;
-    char *free_me;
     SType target_type;
 
-    text = free_me = g_strstrip (g_strdup (text));
-
-    if (strlen (text) == 0)
-        goto out;
-        
+    if (*text == '\0')
+       return;
+    
+    text = skip_whitespace (text);
+    if (*text == '\0')
+       return;
+    
     build->state = state_transition_text (build->state, &instruction.type, &target_type);
     if (!build->state)
     {
         int line, ch;
         g_markup_parse_context_get_position (context, &line, &ch);
-#if 0
-        g_print ("line: %d char: %d\n", line, ch);
-#endif
         set_invalid_content_error (err, "Unexpected text data");
-        goto out;
+        return;
     }
         
     instruction.name = NULL;
@@ -953,7 +961,7 @@ handle_text (GMarkupParseContext *context,
         if (!get_number (text, &instruction.u.pointer.target_id))
         {
             set_invalid_content_error (err, "Contents '%s' of pointer element is not a number", text);
-            goto out;
+           return;
         }
         break;
         
@@ -961,7 +969,7 @@ handle_text (GMarkupParseContext *context,
         if (!get_number (text, &instruction.u.integer.value))
         {
             set_invalid_content_error (err, "Contents '%s' of integer element not a number", text);
-            goto out;
+            return;
         }
         break;
         
@@ -969,7 +977,7 @@ handle_text (GMarkupParseContext *context,
         if (!decode_text (text, &instruction.u.string.value))
         {
             set_invalid_content_error (err, "Contents '%s' of text element is illformed", text);
-            goto out;
+           return;
         }
         break;
         
@@ -979,9 +987,6 @@ handle_text (GMarkupParseContext *context,
     }
     
     g_array_append_val (build->instructions, instruction);
-
- out:
-    g_free (free_me);
 }
 
 static void
index 1bee13c..c787778 100644 (file)
--- a/sysprof.c
+++ b/sysprof.c
@@ -384,7 +384,6 @@ enum
     DESCENDANTS_NAME,
     DESCENDANTS_SELF,
     DESCENDANTS_NON_RECURSE,
-    DESCENDANTS_TOTAL,
     DESCENDANTS_OBJECT
 };
 
@@ -486,7 +485,6 @@ add_node (GtkTreeStore      *store,
                        DESCENDANTS_NAME, node->name,
                        DESCENDANTS_SELF, 100 * (node->self)/(double)size,
                        DESCENDANTS_NON_RECURSE, 100 * (node->non_recursion)/(double)size,
-                       DESCENDANTS_TOTAL, 100 * (node->total)/(double)size,
                        DESCENDANTS_OBJECT, node->name,
                        -1);
     
@@ -509,11 +507,10 @@ fill_descendants_tree (Application *app)
     }
     
     tree_store =
-       gtk_tree_store_new (5,
+       gtk_tree_store_new (4,
                            G_TYPE_STRING,
                            G_TYPE_DOUBLE,
                            G_TYPE_DOUBLE,
-                           G_TYPE_DOUBLE,
                            G_TYPE_POINTER);
     
     if (app->profile)