Tools tweak. No review necessary.
authorggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Feb 2007 20:48:13 +0000 (20:48 +0000)
committerggaren <ggaren@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 21 Feb 2007 20:48:13 +0000 (20:48 +0000)
        * Scripts/parse-malloc-history: Enabled multiple merge-regexp command line
        arguments. Changed command line argument variables from special implicit
        no-op values to specific empty values that we test explicitly.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@19776 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/parse-malloc-history

index 7a1d4f7..dfa5f72 100644 (file)
@@ -1,3 +1,11 @@
+2007-02-21  Geoffrey Garen  <ggaren@apple.com>
+
+        Tools tweak. No review necessary.
+        
+        * Scripts/parse-malloc-history: Enabled multiple merge-regexp command line
+        arguments. Changed command line argument variables from special implicit 
+        no-op values to specific empty values that we test explicitly.
+
 2007-02-21  Vladimir Olexa  <vladimir.olexa@gmail.com>
 
         Reviewed by Tim H.
index 762516a..fab9001 100755 (executable)
@@ -47,15 +47,15 @@ sub main()
         "  --merge-regexp       Merge all call stacks that match this regular expression.\n" .
         "  --merge-depth        Merge all call stacks that match at this stack depth and above.\n";
 
-    my $grepRegexp = ""; # Expression that always matches
-    my $byteMinimum = 0;
-    my $mergeRegexp = "^a(?<=a)"; # Expression that never matches
-    my $mergeDepth = -1;
+    my $grepRegexp = "";
+    my $byteMinimum = "";
+    my @mergeRegexps = ();
+    my $mergeDepth = "";
     my $getOptionsResult = GetOptions(
-        "grep-regexp=s" => \$grepRegexp,
-        "byte-minimum=i" => \$byteMinimum,
-        "merge-regexp=s" => \$mergeRegexp,
-        "merge-depth=i" => \$mergeDepth
+        "grep-regexp:s" => \$grepRegexp,
+        "byte-minimum:i" => \$byteMinimum,
+        "merge-regexp:s" => \@mergeRegexps,
+        "merge-depth:i" => \$mergeDepth
     );
     my $fileName = $ARGV[0];
     die $usage if (!$getOptionsResult || !$fileName);
@@ -96,23 +96,28 @@ sub main()
         
         $byteCountTotal += $byteCount;
 
-        next if !($line =~ $grepRegexp);
+        next if ($grepRegexp && !($line =~ $grepRegexp));
 
-        my $callstackBegin;
-        if ($mergeDepth == -1) { # start at beginning of callstack
-            $callstackBegin = index($line, "|");
-        } else { # count stack frames backwards from end of callstack
+        my $callstackBegin = 0;
+        if ($mergeDepth) {
+            # count stack frames backwards from end of callstack
             $callstackBegin = length($line);
             for (my $pipeCount = 0; $pipeCount < $mergeDepth; $pipeCount++) {
                 my $rindexResult = rindex($line, "|", $callstackBegin - 1);
                 last if $rindexResult == -1;
                 $callstackBegin = $rindexResult;
             }
+        } else {
+            # start at beginning of callstack
+            $callstackBegin = index($line, "|");
         }
 
         my $callstack = substr($line, $callstackBegin + 2); # + 2 skips "| "
-        if ($callstack =~ $mergeRegexp) {
-            $callstack = $mergeRegexp . "\n";
+        for my $regexp (@mergeRegexps) {
+            if ($callstack =~ $regexp) {
+                $callstack = $regexp . "\n";
+                last;
+            }
         }
         
         if (!$callstacks{$callstack}) {
@@ -127,7 +132,7 @@ sub main()
     for my $callstack (sort { $callstacks{$b}{"byteCount"} <=> $callstacks{$a}{"byteCount"} } keys %callstacks) {
         my $callCount = $callstacks{$callstack}{"callCount"};
         my $byteCount = $callstacks{$callstack}{"byteCount"};
-        last if $byteCount < $byteMinimum;
+        last if ($byteMinimum && $byteCount < $byteMinimum);
 
         $byteCountTotalReported += $byteCount;
         print commify($callCount) . " calls for " . commify($byteCount) . " bytes: $callstack\n";