1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/tools/trace-malloc/merge.pl Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,57 @@ 1.4 +#!/usr/bin/perl 1.5 +# This Source Code Form is subject to the terms of the Mozilla Public 1.6 +# License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 +# file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.8 + 1.9 + 1.10 +$argv = $ARGV[0]; 1.11 +open( bloatFile, $argv ) or die "Can't open $argv: $!\n"; 1.12 +while (<bloatFile>) { 1.13 + if (/name=/) { 1.14 + ($td,$name,$func,$a,$ntd) = split(/>/, $_); 1.15 + ($fname, $memSize) = split( / /, $func ); 1.16 + ($trash, $linkName) = split( /"/, $name ); 1.17 + $namesLinks{$fname} = $linkName; 1.18 + if ($namesSizes{$fname}) { 1.19 + $namesSizes{$fname} = $namesSizes{$fname} + $memSize; 1.20 + } 1.21 + else { 1.22 + $namesSizes{$fname} = $memSize; 1.23 + } 1.24 + } 1.25 +} 1.26 + 1.27 +$argv = $ARGV[1]; 1.28 +if ($argv) 1.29 +{ 1.30 + open( bloatFile, $argv ) or die "Can't open $argv: $!\n"; 1.31 + while (<bloatFile>) { 1.32 + if (/name=/) { 1.33 + ($td,$name,$func,$a,$ntd) = split(/>/, $_); 1.34 + ($fname, $memSize) = split( / /, $func ); 1.35 + $namesSizes{$fname} = $namesSizes{$fname} - $memSize; 1.36 + } 1.37 + } 1.38 +} 1.39 + 1.40 +sub byvalue { $namesSizes{$b} <=> $namesSizes{$a} } 1.41 + 1.42 + 1.43 +print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">'; 1.44 +print "\n<html><head>\n"; 1.45 +print "<title>Bloat Blame Delta</title>\n"; 1.46 +print '<link rel="stylesheet" type="text/css" href="blame.css">'; 1.47 +print "\n</head>\n<body>\n<table>\n"; 1.48 +print "<thead><tr><td>Memory Allocated</td><td>Function Name</td><td>Link</td></tr></thead>\n"; 1.49 + 1.50 +foreach $key (sort byvalue keys %namesSizes) { 1.51 + if ($namesSizes{$key}) 1.52 + { 1.53 + print "<tr>\n"; 1.54 + print ' <td>', $namesSizes{$key},"</td>\n"; 1.55 + print " <td> <a href=\"$ARGV[0]#$namesLinks{$key}\">", $key, "</a></td>\n"; 1.56 + print "</tr>\n" 1.57 + } 1.58 +} 1.59 + 1.60 +print "</table>\n</body></html>";