Merge remote-tracking branch 'redux/master' into sh4-pool
[tamarin-stm.git] / utils / sizereport
blobc4d80f9911b8b8a4822040596865cf111c5a67d5
1 #!/bin/sh
2 # ***** BEGIN LICENSE BLOCK *****
3 # Version: MPL 1.1/GPL 2.0/LGPL 2.1
5 # The contents of this file are subject to the Mozilla Public License Version
6 # 1.1 (the "License"); you may not use this file except in compliance with
7 # the License. You may obtain a copy of the License at
8 # http://www.mozilla.org/MPL/
10 # Software distributed under the License is distributed on an "AS IS" basis,
11 # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 # for the specific language governing rights and limitations under the
13 # License.
15 # The Original Code is [Open Source Virtual Machine].
17 # The Initial Developer of the Original Code is
18 # Adobe System Incorporated.
19 # Portions created by the Initial Developer are Copyright (C) 2007
20 # the Initial Developer. All Rights Reserved.
22 # Contributor(s):
23 # Adobe AS3 Team
25 # Alternatively, the contents of this file may be used under the terms of
26 # either the GNU General Public License Version 2 or later (the "GPL"), or
27 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28 # in which case the provisions of the GPL or the LGPL are applicable instead
29 # of those above. If you wish to allow use of your version of this file only
30 # under the terms of either the GPL or the LGPL, and not to allow others to
31 # use your version of this file under the terms of the MPL, indicate your
32 # decision by deleting the provisions above and replace them with the notice
33 # and other provisions required by the GPL or the LGPL. If you do not delete
34 # the provisions above, a recipient may use your version of this file under
35 # the terms of any one of the MPL, the GPL or the LGPL.
37 # ***** END LICENSE BLOCK *****
39 echo `pwd`
40 file="../platform/win32/obj_9/shell/Release/avmplus.map"
41 #file="../objdir-release/shell/avmshell.map"
42 test "$1" = "" || {
43 file=$1
47 grep -e '^ 0001:00...... ' -e '^ 0002:00...... ' -e '^ 0003:00...... ' <$file |
48 sed -e's/^ 0001:00/1/' -e 's/^ 0002:00/2/' -e 's/^ 0003:00/3/' |
49 tee x |
50 awk '{ print $3, $0 }' |
51 sort |
52 awk '
54 addr=strtonum("0x" $1)
55 if (saveaddr > 0 && addr > saveaddr) {
56 size = addr-saveaddr
57 # print per-function size
58 #print size, file, addr, saveaddr, $1
59 filetotal[file] += size
60 if (size < 100000)
61 total += size
63 file=$NF
64 saveaddr=addr
66 END {
68 # read the module definitions
69 while (getline <"modules.txt" > 0) {
70 if (NF > 0) {
71 mod = $1
72 if ($3 == "*")
73 for (n in filetotal) { if (index(n,$2)==1) map[n] = mod }
74 else
75 map[$2] = mod
79 # group files into modules
80 for(n in map) {
81 mod = map[n]
82 filetotal[mod] += filetotal[n]
83 delete filetotal[n]
86 # print per-module size
87 printf "%-7d %-12s 100.0%\n",total,"total"
88 for (f in filetotal) {
89 if (filetotal[f]>0)
90 printf("%-7d %-12s %.1f%%\n",filetotal[f], f, 100*(filetotal[f]/total))
93 ' | sort -rn
94 test -f x && rm x