4.4BSD/usr/src/contrib/mprof/mprof.ps

%!PS-Adobe-2.0
%%Creator: dvips by Radical Eye Software
%%Title: mprof.dvi
%%Pages: 15 -1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginDocument: texc.pro
/TeXDict 200 dict def TeXDict begin /bdf{bind def}def /@rigin{72 Resolution
div 72 VResolution div neg scale translate}bdf /@letter{Resolution VResolution
-10 mul @rigin}bdf /@landscape{[0 1 -1 0 0 0]concat Resolution VResolution
@rigin}bdf /@a4{Resolution VResolution -10.6929133858 mul @rigin}bdf /@legal{
Resolution VResolution -13 mul @rigin}bdf /@manualfeed{statusdict /manualfeed
true put}bdf /@copies{/#copies exch def}bdf /@FontMatrix[1 0 0 -1 0 0]def
/@FontBBox[0 0 0 0]def /dmystr(ZZf@@@)def /newname{dmystr cvn}bdf /df{
/highest exch def /fontname exch def dmystr 2 fontname cvx(@@@@)cvs
putinterval newname 7 dict def newname load begin /FontType 3 def /FontMatrix
@FontMatrix def /FontBBox @FontBBox def /BitMaps highest array def /BuildChar{
CharBuilder}def /Encoding IdentityEncoding def end fontname{/foo setfont}2
array copy cvx def fontname load 0 dmystr 6 string copy cvn cvx put}bdf /dfe{
newname dup load definefont setfont}bdf /ch-image{ch-data 0 get}bdf /ch-width{
ch-data 1 get}bdf /ch-height{ch-data 2 get}bdf /ch-xoff{ch-data 3 get}bdf
/ch-yoff{ch-data 4 get}bdf /ch-dx{ch-data 5 get}bdf /CharBuilder{save 3 1 roll
exch /BitMaps get exch get /ch-data exch def ch-data null ne{ch-dx 0 ch-xoff
ch-yoff neg ch-xoff ch-width add ch-height ch-yoff sub setcachedevice ch-width
ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-height ch-yoff sub .1 add]/id
ch-image def /rw ch-width 7 add 8 idiv string def /rc 0 def /gp 0 def /cp 0
def{rc 0 ne{rc 1 sub /rc exch def rw}{G}ifelse}imagemask}if restore}bdf /G{{
id gp get /gp gp 1 add def dup 18 mod exch 18 idiv pl exch get exec}loop}bdf
/adv{cp add /cp exch def}bdf /chg{rw cp id gp 4 index getinterval putinterval
dup gp add /gp exch def adv}bdf /nd{/cp 0 def rw exit}bdf /lsh{rw cp 2 copy
get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and exch 1 and or}
ifelse}ifelse put 1 adv}bdf /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq
{pop 127}{dup 2 idiv exch 128 and or}ifelse}ifelse put 1 adv}bdf /clr{rw cp 2
index string putinterval adv}bdf /set{rw cp fillstr 0 4 index getinterval
putinterval adv}bdf /fillstr 18 string 0 1 17{2 copy 255 put pop}for def /pl[{
adv 1 chg}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}
bind{adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc exch def
nd}bind{1 add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}
bind]def /dc{/ch-code exch def /ch-data exch def newname load /BitMaps get
ch-code ch-data put}bdf /bop{gsave /SaveImage save def 0 0 moveto}bdf /eop{
clear SaveImage restore showpage grestore}bdf /@start{/Highest exch def
/VResolution exch def /Resolution exch def /IdentityEncoding Highest array def
0 1 Highest 1 sub{IdentityEncoding exch 1 string dup 0 3 index put cvn put}
for}bdf /p{show}bdf /RuleMatrix[1 0 0 -1 -.1 -.1]def /BlackDots 8 string def
/v{gsave currentpoint translate false RuleMatrix{BlackDots}imagemask grestore}
bdf /a{moveto}bdf /delta 0 def /tail{dup /delta exch def 0 rmoveto}bdf /b{
exch show tail}bdf /c{show delta 4 sub tail}bdf /d{show delta 3 sub tail}bdf
/e{show delta 2 sub tail}bdf /f{show delta 1 sub tail}bdf /g{show delta 0
rmoveto}bdf /h{show delta 1 add tail}bdf /i{show delta 2 add tail}bdf /j{show
delta 3 add tail}bdf /k{show delta 4 add tail}bdf /l{show -4 0 rmoveto}bdf /m{
show -3 0 rmoveto}bdf /n{show -2 0 rmoveto}bdf /o{show -1 0 rmoveto}bdf /q{
show 1 0 rmoveto}bdf /r{show 2 0 rmoveto}bdf /s{show 3 0 rmoveto}bdf /t{show 4
0 rmoveto}bdf /w{0 rmoveto}bdf /x{0 exch rmoveto}bdf /y{3 2 roll show moveto}
bdf /bos{/section save def}bdf /eos{clear section restore}bdf end
%%EndDocument
TeXDict begin 300 300 128 @start /fa 128 df[<EC01C0EC0780EC1E001478EB01E0EB07
80010EC7FC133C13F0EA03C0000FC8FC123C12F0A2123C120FEA03C0EA00F0133C130E6D7EEB01
E0EB0078141EEC0780EC01C0>26 26 4 2 35]60 dc[<12E01278121EEA0780EA01E0EA007813
1C130FEB03C0EB00F0143C140FEC03C0A2EC0F00143C14F0EB03C0010FC7FC131C1378EA01E0EA
0780001EC8FC127812E0>26 26 4 2 35]62 dc dfe /fb 128 df[<010F130C90383F801E9038
70C03C9038E0E01CD801C3130C00031418EB87C0D8078313309038810060018013C0390F000180
90387807C09038FC0E60EB8C1839070C3030000F1360121F383FF86C3838E07E3878007C143814
00481460A2007014C0A20078EB01800038EB03006C130E380F807C3807FFF0C61380>31 32 5 0
35]38 dc[<EA7FF0A2EAFFE0127F>12 4 3 -8 16]45 dc[<13021306130E131C133CEA01FCEA
07BCEA06781200A313F0A4EA01E0A4EA03C0A4EA0780A4EAFFF8A2>15 29 5 0 23]49 dc[<EB
0180EB03C0A2EB0780A314005BA2130E131E131C133C1338A25BA25BEA01CE13DEEA039EEA071E
1206485A12181230127FEAFFF83880FF8038007F0013785BA4485AA26C5A>18 38 3 9 23]52
dc[<131FEB7F80EBE1C0EA0181380300E05AA2380F01C0A2EB8380EBE700EA07FE5B1203487EEA
0EFFEA1C3F487E487E7F12E0A21306130E130C5BEA7070EA3FE0EA1F80>19 29 5 0 23]56 dc[
<133EEB7F803801E1C0EA03811207EB01E0120F121EA314C0EA1C03A21307A2EB0F80EA0FFFEA
07E7380007005B130E131EEA781CEAF8385B485AEAE1C0EA7F80003EC7FC>19 29 5 0 23]57
dc[<1406140EA2141FA25CA25C14DFA2EB019FA2EB031FA21306130CA213181580EB300FEB3FFF
5BEBE00F13C0EA0180A2EA0300A2120F397FC0FFF812FF>29 31 2 0 34]65 dc[<ECFC069038
07FF0C90381F819C90387C00FC01F0137C4848137848481338485A120F90C712305A123E150012
3C127CA3127812F8A215C00078EB0180A2EC0300127C003C13066C5B6C13383807C0F03803FFC0
C648C7FC>31 31 6 0 33]67 dc[<48B5128015E039001F01F0EC0078153C133E151EA35BA449
133EA44848137CA31578484813F0A2EC01E0EC03C03807C007EC0F80EC1E00147CB512F014C0>
31 31 3 0 34]68 dc[<48B512FE15FC39001F003C151CA2013E130CA31518EB7C0CA21500141C
495AEBFFF8A2EBF8383801F030A2153015603803E000A215C01401D807C013801403EC0700141F
B6FC5C>31 31 3 0 31]69 dc[<48B512FC15F839001F00781538A2013E1318A31530EB7C0CA2
1500141C495AEBFFF8A2EBF8383801F030A44848C7FCA4485AA4EAFFFE5B>30 31 3 0 30]70
dc[<903801FC0C903807FF1890381F03B890387C01F8EBF000484813F048481370485A120F90C7
12605A123E15005AA45A903801FFF0A29038000F800078EB1F00A3127C003C133E7E001F137E38
0FC1DE3803FF8C3800FE04>30 31 6 0 35]71 dc[<3801FFF8A238001F00A3133EA45BA45BA4
485AA4485AA4485AA4EAFFFCA2>21 31 2 0 18]73 dc[<3801FFFCA2D8001FC7FCA3133EA45B
A45BA4485AA2EC0180A23903E00300A21406A23807C00E5C143C14FCB55AA2>25 31 3 0 29]
76 dc[<3B01FF8001FFC0A2D8001F903803F800A215060137EB07F0150DA215190167495AA215
63A29039C3C0C7C0A2ECC187A23A0183C30F8014C6A214CCD8030349C7FC14D8A214F00006143E
14E014C0120E3AFFE387FFE001C35C>42 31 3 0 41]77 dc[<3A01FF80FFE0A2D8001FEB1E00
ECC00CA201375BEB33E0A3903863F0301361A214F801C05BA214FC147CD801805BA2143EA23903
003F80141FA300066DC7FCA3120E38FFE00613C0>35 31 3 0 34]78 dc[<48B5128015E03900
1F01F0EC0078A2013E137CA44913F8A215F0EC01E0EBF803EC0F8090B5120014F8D801F0C7FCA4
485AA4485AA4EAFFFC5B>30 31 3 0 31]80 dc[<48B5FC15C039001F03E0EC00F015F8133EA4
90387C01F0A2EC03E0EC07C09038F81F00EBFFFE14F8EBF83C3801F03E141E141FA23803E03EA4
48485A1518A2EC3E3039FFFC1FE09038F80FC0>29 31 3 0 33]82 dc[<903807E0C090381FF9
80EB3C1FEB700713E00001EB0300EA03C0A3000790C7FCA213F0EA03FEEBFFC06C7F6C7F6D7E13
07EB00FC147CA214781230A21470007013F0495A00785B387E0780D8E7FFC7FCEA81FC>26 31 3
0 26]83 dc[<000FB512F04814E0381E07C1001813C00038146038300F80A2126015C038C01F00
A200001400A2133EA45BA45BA4485AA31203B57EA2>28 31 8 0 33]84 dc[<EBF1803803FBC0
38070F80120EEA1C07123CEB0F001278A3EAF01EA31430EB3C60A2EA707CEBFCC0383F9F80380F
0F00>20 20 4 0 23]97 dc[<137E48B4FC38038780EA0F0F121E001C1300EA3C0648C7FCA35A
A5EA70021307EA381EEA1FF8EA07E0>17 20 4 0 21]99 dc[<1478EB07F814F01300A3EB01E0
A4EB03C0A213F3EA03FB38070F80120EEA1C07123CEB0F001278A3EAF01EA31430EB3C60A2EA70
7CEBFCC0383F9F80380F0F00>21 32 4 0 23]100 dc[<137C48B4FCEA0783380F0180121E123C
EB0300EA780EEA7FFC13E000F0C7FCA412701302EA7807EA3C1EEA1FF8EA07E0>17 20 4 0 21]
101 dc[<EB01E0EB03F8EB0778EB0FF8130EEB1E701400A3133E133CA23807FFE0A238003C005B
A55BA5485AA5485AA45B1277B4C7FCA212F612FC1278>21 41 -1 9 14]102 dc[<EB3E30EBFF
783801E3F0EA0381EA07801300380F01E0121EA3383C03C0A4EB0780121C130FEA0E3F380FFF00
EA03CFEA000FA2131E127012F85BEAF0F8B45AEA3F80>21 29 2 9 21]103 dc[<13F0120F5B12
01A3485AA4485AA2139FEBFF80380FE3C01381EB01E0A2381E03C0A4383C0780A3EB0F0C007813
18130EEB1E30EB0E7038F00FE038600780>22 32 2 0 23]104 dc[<136013F01201A2EA00E013
00A6120FEA1F80EA33C0A21263A2EAC7801207A2EA0F00A2121EA21330EA3C60A213C0A2EA1F80
EA0F00>12 31 3 0 14]105 dc[<EA01E0121F13C01203A3EA0780A4EA0F00A4121EA45AA45AA3
13C0EAF180A3EAF300127E123C>11 32 3 0 12]108 dc[<390F07C0F8391F9FE3FC3933F8F71E
3963E07C0E9038C0780FA239C780F01E1207A3390F01E03CA3ED7860261E03C013C01570EDF180
15733A3C07807F00391803003C>35 20 3 0 37]109 dc[<380F07C0381F9FE03833F8F03863E0
70EBC078A238C780F01207A3380F01E0A3EB03C3001E13C61486EB078CEB039C003C13F8381801
E0>24 20 3 0 26]110 dc[<137C48B4FC38038380380F01C0121E001C13E0123C1278A338F003
C0A3EB07801400EA700F131EEA3838EA1FF0EA07C0>19 20 4 0 23]111 dc[<3801E1E03803F3
F838067E1CEA0C7CEB781EA2EA18F01200A33801E03CA31478EA03C01470EBE0E0EBE1C03807BF
80EB9E001380A248C7FCA4121EEAFFE0A2>23 29 0 9 23]112 dc[<EA0F1EEA1FBF3833E18038
63C3C013C7A238C78780000713001380A248C7FCA4121EA45A1218>18 20 3 0 19]114 dc[<13
FCEA03FEEA0707EA060F120E130EEA1E00EA1FE0EA0FF813FC1207EA01FEEA003EEA781EEAF81C
A2EAF018EA6070EA3FE0EA1F80>16 20 3 0 19]115 dc[<13C0EA01E0EA03C0A4EA0780A2EAFF
F0A2EA0F00A4121EA45AA31330EA7860A213C01279EA3F80EA1E00>12 28 4 0 15]116 dc[<38
078060381FC0F03839C1E0EA31E1EA61C1126338C3C3C0EA0783A3380F0780A3148CEB0F18120E
120FEB1F303807F7E03803E3C0>22 20 3 0 24]117 dc[<39078060E0381FC0F13939C1E1F038
31E1E0D861C11370126339C3C3C060EA0783A3390F0780C0A3EC8180A21500EB0F8338071F86EB
FBFC3801F0F8>28 20 3 0 30]119 dc[<3807C380380FE7C038187CE0EA3079EA607BA238C0F3
C000001380EBF000A2485AA212390079136038FBC0C0A238F3C18038E7C300EA7CFEEA387C>19
20 3 0 21]120 dc[<38078030381FC078003913F0EA31E0EA61C0126338C3C1E0EA0781A3380F
03C0A4EB0780A3131F3807FF00EA01EFEA000F130EEA381EEA7C1C133CEA7878EA70F0EA3FC06C
C7FC>21 29 3 9 22]121 dc dfe /fc 128 df[<EA3018EA7838EAFC781370A213F013E0A212
79EA31C0120112031380A212071300A2EA0F18EA0E3C137E121E121CA2123CEA383CEA1818>15
26 1 3 18]37 dc[<EA03801207EA0F00121E5A12381278127012F05AA77E127012781238123C
7E7EEA07801203>9 25 5 2 18]40 dc[<12E07E12787E7E120E120F7E13801203A7120713005A
120E121E5A5A5A5A>9 25 3 2 18]41 dc[<EA0380A6EAFFFEA3EA0380A6>15 15 1 -3 18]43
dc[<EAFFF8A3>13 3 2 -9 18]45 dc[<127012F8A31270>5 5 6 0 18]46 dc[<131813381378
137013F013E0A2120113C01203138012071300A25A120E121E121C123C1238A21278127012F05A
A2>13 26 2 3 18]47 dc[<EA07C0EA0FE0EA1FF0EA3C78EA783CEA701CEAF01EEAE00EA6EAF0
1EEA701CEA783CEA3C78EA1FF0EA0FE0EA07C0>15 20 1 0 18]48 dc[<12035A5A5AB4FCA212
F71207AAEA7FF0A3>12 20 2 0 18]49 dc[<EA1F80EA7FE0EAFFF012F0137813381260120013
78137013F0EA01E0EA03C0EA0780EA1F00EA3C381278EAFFF8A3>13 20 2 0 18]50 dc[<EA0F
C0EA3FF0EA7FF8EA783C131C1230EA003C137CEA07F813F013F8EA003C131E130E1260EAF01E13
3CEAFFFCEA7FF0EA1FC0>15 20 1 0 18]51 dc[<EA01F01203A2EA0770120F120E121E123C12
38127812F0EAFFFEA3EA0070A3EA03FEA3>15 20 1 0 18]52 dc[<EA7FF0A3EA7000A5EA7F80
13E013F0EA70781200133812F0137813F012FFEA7FC0EA1F00>13 20 2 0 18]53 dc[<EA01F0
EA07F8EA1FFCEA3E3C127CEA7818EAF000EAFFF013F813FCEAF01EA2EAE00E12F0A2EA781E133C
EA3FF8EA1FF0EA07C0>15 20 1 0 18]54 dc[<12E0EAFFFEA3EAE03C1378EA00F0EA01E013C0
1203138012071300A25A120EA6>15 21 1 0 18]55 dc[<EA07C0EA1FF0EA3FF8EA783CEA701C
A3EA3C78EA1FF0A2EA3FF8EA783CEAE00EA3EAF01EEA783CEA7FFCEA1FF0EA07C0>15 20 1 0
18]56 dc[<EA07C0EA1FF0EA7FF8EA783CEAF01CEAE01EA312F0EA7FFE123FEA1FEEEA001EA2EA
303C127813F8EA7FF0EA3FE0EA0F80>15 20 1 0 18]57 dc[<1310133813F8EA01F0EA03E0EA
0F80EA1F00123E12F85A7E123E7EEA0F80EA03E0EA01F0EA00F813381310>13 19 2 -1 18]60
dc[<124012E012F8127C7EEA0F80EA07C0EA03E0EA00F8137813F8EA03E0EA07C0EA0F80EA3E00
5A5A12E01240>13 19 2 -1 18]62 dc[<EA0380EA07C0A21206A2EA0EE0A4EA0C60EA1C70A3EA
1FF0A2EA3FF8EA3838EAFEFEA3>15 20 1 0 18]65 dc[<EAFF80A3EA1C00AA13021307A3B5FC
A3>16 20 0 0 18]76 dc[<EA3FE0EA7FF0A2EAF078EAE038ACEAF078EA7FF0A2EA3FE0>13 20
2 0 18]79 dc[<EAFFFEA3EAE38EA3EA0380ABEA1FF0A3>15 20 1 0 18]84 dc[<EAFFC0A3EA
E000B3A2EAFFC0A3>10 26 6 3 18]91 dc[<12E0A27E127012781238A2123C121C121E120E12
0F7EA21380120313C0120113E01200A213F01370137813381318>13 26 2 3 18]92 dc[<EAFF
C0A31201B3A212FFA3>10 26 1 3 18]93 dc[<EAFFF8A3>13 3 2 3 18]95 dc[<EA3F80EAFF
E013F012F01263121F127FEAFC7012E013F012F1EAFFFE127FEA1E3E>15 14 2 0 18]97 dc[<
12FCA3121CA313F0EA1FFC13FEEA1E1E130FEA1C07A4EA1E0FEA1F1E13FE13FCEA1CF0>16 20 0
0 18]98 dc[<EA07E0EA1FF8123FEA7878EAF030EAE000A3EAF038A2EA7C78EA3FF0EA1FE0EA07
C0>13 14 2 0 18]99 dc[<EA01F8A3EA0038A3EA0FB8EA3FF8127FEA787812F0EAE038A31378
12F0EA78F8EA7FFF7EEA0F3F>16 20 1 0 18]100 dc[<EA0780EA1FE0EA3FF0EA787812F0EAFF
F8A3EAF038A2EA7C78EA3FF0EA1FE0EA0780>13 14 2 0 18]101 dc[<133E13FF5AEA03CF1380
A2EAFFFEA3EA0380A8EA7FFCA3>16 20 0 0 18]102 dc[<EA0FBEEA1FFF5AEA78F6EA7070A2EA
78F0EA3FE0EA7FC01380EA7000EA7FE013F813FCEAF01EEAE00EA2EAF01EEAF83EEA7FFCEA3FF8
EA0FE0>16 22 1 8 18]103 dc[<120E121FA2120EC7FCA3B4FCA31207A8EAFFF8A3>13 21 3 0
18]105 dc[<12FCA3121CA3EA1FFFA3EA1CF0EA1DE0EA1FC07FA2EA1EF0EA1C787F38FF3F80A3>
17 20 0 0 18]107 dc[<EAFF80A31203AEEAFFFEA3>15 20 1 0 18]108 dc[<EAFB8EB51280
A2EA3CF3EA38E3A738FEFBE0A3>19 14 -1 0 18]109 dc[<EAFDF0B47E7FEA1E1CA2121CA638
FF9F80A3>17 14 0 0 18]110 dc[<EA0F80EA3FE0A2EA78F0EAF078EAE038A4EAF078EA78F0EA
3FE0A2EA0F80>13 14 2 0 18]111 dc[<EAFCF0EAFFFC13FEEA1E1E130FEA1C07A4EA1E0FEA1F
1E13FE13FCEA1CF01300A4EAFF80A3>16 21 0 7 18]112 dc[<EAFE78EAFFFEA2EA0F9E130C13
00120EA5EAFFF0A3>15 14 1 0 18]114 dc[<EA1FF0127F12FFEAE070130012FEEA7FE0EA0FF0
EA0078EAE038EAF078EAFFF813F0EADFC0>13 14 2 0 18]115 dc[<120EA4EAFFF8A3EA0E00A4
1338A3EA0F7813F0EA07E0EA03C0>13 18 1 0 18]116 dc[<EAFCFCA3EA1C1CA7133C381FFF80
A2EA07DF>17 14 0 0 18]117 dc[<EAFEFEA3EA701CEA3018EA3838EA3BB8EA3FF8A2EA3AB8A2
EA1EF0A3>15 14 1 0 18]119 dc[<EAFCFEA3EA0EE0EA0FC01207EA0380120713C0EA0EE0EA1E
F0EAFEFEA3>15 14 1 0 18]120 dc[<EAFEFEA3EA1C781370A2120E136013E0120613C0120712
03A21380A21233EA7F00A2127E1238>15 21 1 7 18]121 dc[<EA7FFCA3EA70F8EA71F0EA03E0
EA07C0EA0F80EA1F1C123E127CEAFFFCA3>14 14 1 0 18]122 dc[<12E0B3A8>3 26 7 3 18]
124 dc dfe /fd 128 df[<120C127C12FC129C121CAAEAFF80A2>9 16 2 0 15]49 dc[<121F
EA7F80EAC3C0EAE1E012E01200120113C0EA0380EA0700120EEA18601230EA7FC012FFA2>11 16
1 0 15]50 dc[<121FEA3F80EA73C0A21223EA0380120F1300EA03C0120113E0124112E113C0EA
7F80EA3F00>11 16 1 0 15]51 dc dfe /fe 128 df[<1203120FB4FC12F71207AFEA7FF0A2>
12 21 2 0 18]49 dc[<EA1F80EA3FE0EA71F012F81378A212701200A213F013E0EA01C0EA0380
EA0700120EEA0C181218EA3038EA7FF012FFA2>13 21 2 0 18]50 dc[<EA0FC0EA1FF0EA3078
EA783CA31210EA007813F0EA07E0A2EA0078133C131E127012F8A2133CEA7038EA3FF0EA0FC0>
15 21 1 0 18]51 dc dfe /ff 128 df[<1370EA01F0120F12FFA212F31203B3A2B51280A3>
17 29 4 0 26]49 dc[<EA07F0EA1FFEEA7FFF387E7F8038FF3FC0131F14E0A2EA7E0F1218EA00
1F14C0A2EB3F801400137E13F85B485A3803C0E0EA0780EA0F00EA1E01EA1FFF4813C05AB5FCA3
>19 29 3 0 26]50 dc[<EA01FCEA07FF481380381F1FC0383F8FE0A4121FEB1FC01200EB3F80
3801FF0013FCEBFF8038000FC014E0EB07F0003C13F8127E12FFA314F0127E387C0FE0383FFFC0
000F1300EA03FC>21 29 2 0 26]51 dc[<EB03C01307130F131FA2133F137F13F7EA01E7A2EA
03C7EA0787EA0F07120E121E123C127812F0B512FEA338000FC0A53801FFFEA3>23 29 1 0 26]
52 dc[<38300380EA3FFFA214005B13F813E0003EC7FC1238A3EA39F8EA3FFE7F383E1F803838
0FC0A2000013E0A2123C127E12FEA214C0131F387C3F80383FFF00EA1FFCEA07F0>19 29 3 0
26]53 dc[<133F3801FFC0000713E0EA0FE3381F87F01307123F127EEB03E090C7FCEAFE3EEBFF
80B512C0EB87E0EB03F0A200FE13F8A4127EA3003E13F0A2381F87E0380FFFC06C13803801FC00
>21 29 2 0 26]54 dc[<1270387FFFF8A314F014E0B512C0EAF00338E00780EB0F00131EC65A
A25B13F8A2485AA21203A31207A8EA01C0>21 30 3 0 26]55 dc[<123C127E12FFA4127E123C
1200A4123C127E12FFA4127E123C>8 20 3 0 15]58 dc[<B612E0A33807F00714031401EC00F0
A215701470A31500EBF1F013FFA313F1EBF070A491C7FCA6B512C0A3>28 31 2 0 33]70 dc[<
007FB512FCA3387E0FE00078143C0070141C00F0141EA200E0140EA400001400AF0007B512C0A3
>31 30 2 0 36]84 dc[<EA03FC380FFF804813C0383F8FE0EB83F0A2EA1F03120EEA01FF120F
EA3FC3EA7E0312FCA4EA7E0F387FFDFEEA3FF9380FE07E>23 20 1 0 25]97 dc[<B47EA3121F
A9EB8FF0EBFFF880EBE07EEB803FA21580A815006D5AEBE0FEEBFFFC381E3FF8381C0FE0>25 32
1 0 29]98 dc[<EA01FE3807FF80001F13E0383F87F0EA7F03EB01F812FEB5FCA348C7FCA3127E
007F1338383F8078EBC0F0EA0FFF6C13C0C61300>21 20 1 0 24]101 dc[<3803FC7C380FFFFE
5AEA3F0F383E07DC007E13E0A4003E13C0EA3F0F381FFF801400EA3BFC0038C7FCA2383FFF8014
F06C13F814FC127F387C00FE48133EA3007C137C387F01FC383FFFF8000F13E000011300>23 30
1 10 26]103 dc[<120EEA3F80A2127FA2123FA2EA0E00C7FCA5EAFF80A3121FAEEAFFF0A3>12
33 2 0 15]105 dc[<EAFF80A3121FB3A8EAFFF0A3>12 32 2 0 15]108 dc[<EAFF3FEB7F80EB
FFC0381FEFE013CFA2EB87C0EB8380EB8000A9EAFFF8A3>19 20 1 0 22]114 dc[<38FF83FEA3
381F807EAC14FE13816CB512C03807FE7FEA03F8>26 20 2 0 29]117 dc dfe /fg 128 df[<
EA071CA5EA7FFFB51280A2380E3800A7B51280A26C1300EA1C70A5>17 23 1 0 20]35 dc[<EA
01C01203EA0780EA0F00121E5AA25AA35AA91278A37EA27E7EEA0780EA03C01201>10 29 6 3
20]40 dc[<12E07E12787E7E7EA2EA0780A3EA03C0A9EA0780A3EA0F00A2121E5A5A5A5A>10 29
3 3 20]41 dc[<EA0380A3EA739CEAFBBEEAFFFEEA7FFCEA1FF0A2EA7FFCEAFFFEEAFBBEEA739C
EA0380A3>15 16 2 -3 20]42 dc[<EA01C0A7B51280A33801C000A7>17 17 1 -3 20]43 dc[<
EAFFFEA3>15 3 2 -10 20]45 dc[<1306130E131E131C133C133813781370A213F013E0120113
C012031380120713005A120E121E121CA2123C12381278127012F05AA2>15 29 2 3 20]47 dc[
<EA07C0EA0FE0EA1FF0EA3C78EA3838EA783CA2EAF01EA9EA783CA2EA3C78A2EA1FF0EA0FE0EA
07C0>15 23 2 0 20]48 dc[<EA018012031207120F123F12FFA212471207ACEAFFF8A3>13 23
3 0 20]49 dc[<EA7FFCA3EA7800A6EA7FC013F013F8EA787CEA703EEA001EA2126012F0133EEA
F87CEA7FF8EA3FF0EA0FC0>15 23 2 0 20]53 dc[<123012FCA412301200A4127012FCA4127C
123C123812F812F012C0>6 21 7 5 20]59 dc[<1304130E133E137CEA01F8EA03E0EA07C0EA1F
00123E12FC12F012FC123E7EEA07C0EA03E0EA01F8EA007C133E130E1304>15 21 2 -1 20]60
dc[<B51280A3C8FCA3B51280A3>17 9 1 -7 20]61 dc[<124012E012F8127C123FEA0F80EA07
C0EA01F0EA00F8137E131E137E13F8EA01F0EA07C0EA0F80EA3F00127C5A12E01240>15 21 2
-1 20]62 dc[<EAFFF813FE7FEA1E0FEB0780A4EB0F00133FEA1FFEA27FEA1E0FEB0780A5EB0F
00B5FC5B5B>17 23 0 0 20]66 dc[<EAFFE013F87FEA3C3E131E131F7FA2EB0780A7130F1400
A2131E133EEAFFFC5B13E0>17 23 1 0 20]68 dc[<B51280A3EA1E07A490C7FC133CA2EA1FFC
A3EA1E3CA290C7FCEB03C0A4B5FCA3>18 23 0 0 20]69 dc[<EA03CEEA0FFE121FEA3E3E123C
EA7C1E127812F848C7FCA4EBFF80A338F81E001278A2EA3C3E123EEA1FFE120FEA03DE>17 23 1
0 20]71 dc[<B5FCA3EA03C0B1B5FCA3>16 23 2 0 20]73 dc[<EAFFE0A3001EC7FCADEB0780
A4B5FCA3>17 23 1 0 20]76 dc[<38FE0FE0A3383F1F80EA3B1BA313BBA2EA39B3A213F3A2EA
38E3A21303A538FE0FE0A3>19 23 0 0 20]77 dc[<38FE3F80A3383F0E00123BA3138E1239A2
13CEA31238A213EE136EA3137EEAFE3EA3>17 23 1 0 20]78 dc[<EAFFE07F7FEA3C7C7F131E
A3133E5BEA3FF85B7FEA3C7C133CA4EB3D80EB3FC012FF131FEB0700>18 23 1 0 20]82 dc[<
EA0FDCEA3FFC127FEA787C12F0133CA2EAF800A2EA7FC0EA3FF0EA1FF8EA07FCEA007E133E131E
12F0A2EAF83E133CEAFFFC13F8EAE7E0>15 23 2 0 20]83 dc[<B51280A3EAF1E7A43801E000
ADEA0FFCA3>17 23 1 0 20]84 dc[<38FFDFF8A3381E03C0AEEA1F07000F1380138F3807FF00
6C5AEA00F8>21 23 -1 0 20]85 dc[<38FE0FE0A338380380A50018130013E3EA1DF7A313B7A4
EA0DB6A2EA0F1EA4>19 23 0 0 20]87 dc[<EAFFFEA3EAF03C137C137813F8EA01F0A2EA03E0
13C012071380120FEA1F00A2EA3E1E123C127C1278EAFFFEA3>15 23 2 0 20]90 dc[<EAFFE0
A3EAF000B3A5EAFFE0A3>11 29 7 3 20]91 dc[<EAFFE0A31201B3A512FFA3>11 29 1 3 20]
93 dc[<EAFFFEA3>15 3 2 4 20]95 dc[<EA0FE0EA3FF87FEA3C3EEA181EEA00FE120F123FEA
7F9EEAF81E12F0133EEAF87E387FFFC07EEA0F8F>18 16 1 0 20]97 dc[<12FEA3121EA4137C
EA1FFE7FEB0F80EA1E0714C01303A41307001F1380130FEBFF005BEA1EF8>18 23 0 0 20]98
dc[<EA03F0EA0FFC123FEA7E3CEA7818EAF8005AA4EAF81E127CEA7E3EEA3FFCEA0FF8EA03E0>
15 16 2 0 20]99 dc[<13FEA3131EA4EA07DEEA1FFE123FEA7C3EEA781E12F812F0A412F8EA78
3EEA7C7E383FFFC07EEA079F>18 23 1 0 20]100 dc[<EA07E0EA1FF8EA3FFCEA7C7CEA783EEA
F81EEAFFFEA3EAF000EAF81E127CEA7E3EEA3FFCEA0FF8EA03E0>15 16 2 0 20]101 dc[<137C
EA01FE1203EA07DE138C1380A2EAFFFEA3EA0780AAEAFFFCA3>15 23 1 0 20]102 dc[<EA07CF
381FFF805AEA7C7F38783C00A4EA7C7CEA3FF85B13C00038C7FCEA3FF813FE487E38F00F80EAE0
071303A2EAF00738780F00EA3FFE6C5AEA07F0>17 25 1 9 20]103 dc[<EA0380EA07C0A3EA03
80C7FCA3EAFFC0A31203AAB5FCA3>16 24 2 0 20]105 dc[<12FCA3121CA4381DFF80A3381C78
005BEA1DE0EA1FC07FA2EA1EF0EA1C7013787F38FF3F80A3>17 23 1 0 20]107 dc[<EAFFC0A3
1203B1B5FCA3>16 23 2 0 20]108 dc[<38FBC780B512C014E0EA3C78A2EA3870A838FE7CF8A3
>21 16 -1 0 20]109 dc[<EAFE7CEAFFFE7FEA1F8F130F121EA838FFCFE0A3>19 16 0 0 20]
110 dc[<EA07C0EA1FF0EA3FF8EA7C7CEA783CEAF01EA5EAF83EEA783CEA7C7CEA3FF8EA1FF0EA
07C0>15 16 2 0 20]111 dc[<EAFE7CEAFFFE7F381F0F80EA1E0714C01303A41307001F138013
0FEBFF005BEA1EF890C7FCA5EAFFC0A3>18 24 0 8 20]112 dc[<EA07CFEA1FFF5AEA7C3FEA78
1FEAF80F12F0A412F8EA781FEA7C3FEA3FFF7EEA07CFEA000FA5EB7FE0A3>19 24 1 8 20]113
dc[<EAFF8FEBBFC013FFEA07F3EBE180EBC000A25BA6EAFFFEA3>18 16 0 0 20]114 dc[<EA0F
F8123F127FEAF07812E0EAF800EAFFE0EA7FF8EA1FFCEA00FEEAF01E130EEAF81EEAFFFC13F8EA
EFE0>15 16 2 0 20]115 dc[<120FA5EAFFFCA3EA0F00A6131EA313BEEA07FC13F8EA01E0>15
21 1 0 20]116 dc[<EAFE7FA3EA1E0FA95B381FFFE07EEA07EF>19 16 0 0 20]117 dc[<38FF
7F80A3381C1C00A36C5AA36C5AA313F06C5AA3>17 16 1 0 20]118 dc[<38FF7F80A338380E00
A3EA3BEEA3136EEA1B6CA2EA1F7CA2EA1E3CA2>17 16 1 0 20]119 dc[<38FF3F80A3381C1C00
121E120E5BA2120713301370120313F06C5AA35BA3EA7B80127F90C7FC127E123C>17 24 1 8
20]121 dc[<EA7FFFA3EA783E137C13F8EA01F0EA03E0EA07C0EA0F80EA1F0F123E127CB5FCA3>
16 16 1 0 20]122 dc[<137EEA01FE120313C0A91207EAFF80EAFE00EAFF80EA07C01203A913
FE1201EA007E>15 29 2 3 20]123 dc[<12FEEAFF8013C01203A913E0EA01FEEA007EEA01FEEA
03E013C0A912FF1380EAFE00>15 29 2 3 20]125 dc dfe /fh 128 df[<123C127E12FFA412
7E123C>8 8 4 0 16]46 dc[<1418143814781470A214F014E0130114C0A213031480A2130714
005B130EA2131E131C133C1338A21378137013F05BA212015B12035BA2120790C7FC5A120EA212
1E121CA2123C123812781270A212F05AA2>21 49 3 12 28]47 dc[<13181378EA03F812FFA312
03B3A5387FFFE0A3>19 32 4 0 28]49 dc[<EA03FCEA1FFF481380387C3FE0EAFE0F38FF07F0
A214F81303127E1218EA000714F0A2EB0FE014C0EB1F80EB3F00133E1378EBF038EA01E0EA03C0
EA0780380F0078381FFFF814F05A5AB5FCA3>21 32 3 0 28]50 dc[<13FE3803FF80000F13E0
381F07F01387383FC3F8A4EA1F87380F07F038000FE0EB1FC03801FF80EBFE00EBFFC0380007F0
EB03F8EB01FCA2003E13FE127FEAFF81A314FC1301387F03F8383E07F0381FFFE06C13C03801FE
00>23 32 2 0 28]51 dc[<EB01E013031307A2130F131F133FA2137F13FFEA01EFEA03CF138F
1207EA0F0F121E121C123C127812F0B512FEA338000FE0A63801FFFEA3>23 32 2 0 28]52 dc[
<00301360383C01E0EA3FFF14C0148014005B13F80039C7FC1238A3EA39FCEA3BFF003F13C038
3E0FE0EA3C07003813F0120014F8A2123C127E12FE12FF14F012FE387C0FE0EB1FC0383FFF806C
1300EA07F8>21 32 3 0 28]53 dc[<147014F8A3497EA2497EA3497EA2497FEB0E7FA2011E7F
EB1C3FA2496C7EA201787FEB700FA201E07F90B5FC4880A2EBC003000380EB8001A248C77E26FF
F01F13F8A3>37 34 2 0 42]65 dc[<B67E15F0813907F803FC6E7E140081A55D14015DEC07F8
90B55AA215FC9038F800FE157F1680153F16C0A6ED7F8015FF4A1300B65A15F815E0>34 34 2 0
40]66 dc[<903903FE018090381FFF8390B512E748EB00FFD803F8133F4848131F4848130F485A
48481307A2007F140390C7FCA24891C7FCA87EED03807F123F15076C6C14006C6C5B6C6C131E6C
6C5B6CB413F86CEBFFF0011F13C0D903FEC7FC>33 34 3 0 40]67 dc[<B67E15F015FC3907F8
03FEEC007FED3F80ED1FC0ED0FE0A216F01507A316F8A916F0A3ED0FE0A2ED1FC0ED3F80ED7F00
EC03FEB65A15F01580>37 34 2 0 43]68 dc[<B612FCA33807F801EC007C153C151C151EA2EC
1C0EA4EC3C00147CEBFFFCA3EBF87C143CEC1C07A3150E1400A2151EA2153E157EEC01FCB6FCA3
>32 34 2 0 37]69 dc[<D903FE13C090381FFFC1017F13F33901FF80FF3903FC003FD807F013
0F48481307485A003F14035B007F140190C7FCA24891C7FCA791381FFFFC7EA2903980003FC012
3F7F121F6C7E6C7EEA03FC3901FF80FF39007FFFEF011F13C301031300>38 34 3 0 44]71 dc[
<B512F0A33803FC00B3AAB512F0A3>20 34 0 0 21]73 dc[<B512F0A3D807F8C7FCB11538A415
78A315F014011403140FB6FCA3>29 34 2 0 34]76 dc[<D8FFFCEC3FFFA26D5C000716E0A201
7F14EFA290393F8001CFA390391FC0038FA290390FE0070FA3903807F00EA2903803F81CA29038
01FC38A3903800FE70A2EC7FE0A3EC3FC0A2EC1F80A2D8FFF80181B5FCEC0F01A2>48 34 2 0
53]77 dc[<EB07FC90383FFF8090B512E03903FC07F83907F001FC48486C7E4848137FA24848EB
3F80A2007F15C090C7121FA24815E0A96C15C06D133FA2003F15806D137F001F15006C6C13FE39
07F803FC3903FE0FF8C6B512E0013F1380D907FCC7FC>35 34 3 0 42]79 dc[<B6FC15E015F0
3907F807F8EC01FCEC00FEA215FFA615FEA2EC01FCEC07F890B512F015E0150001F8C7FCABB512
C0A3>32 34 2 0 38]80 dc[<B512FEECFFC015F03907F807F8EC01FC6E7E81A65D4A5AEC07F8
90B55A15C0819038F80FF06E7EA26E7EA8160EEC01FEB538C1FFFC9138C07FF8ED1FF0>39 34 2
0 42]82 dc[<3801FC0C3807FF9C001F13FCEA3F03EA3E0048137C143C00FC131CA27E14006C7E
13FC387FFFC014E06C13F06C13F86C13FC6C13FE120138000FFF1300147FA200E0133FA36C133E
A200FC137CB413FCEBFFF800E713E000C01380>24 34 3 0 31]83 dc[<007FB61280A3397E07
F81F00781407A20070140300F015C0A200E01401A4000091C7FCB20007B512F8A3>34 34 2 0
39]84 dc[<EA07FC381FFF804813C0387F0FE01307EB03F0123E121C1200EA01FF120FEA3FE3EA
7F83130312FEA31307EA7F0F383FFDFFEA1FF8380FC07F>24 22 2 0 27]97 dc[<B47EA3121F
AAEB87F0EBBFFCEBFFFEEBF07FEBC03F9038801F80A215C0A81580143F01C01300EBE07EEB7FFC
381E3FF8381C0FE0>26 35 2 0 31]98 dc[<13FF000713C04813E0381F87F0EA3F07127F387E
03E0EB01C000FEC7FCA6127E127F1470EA3F80381FC1E0380FFFC06C13803800FE00>20 22 2 0
25]99 dc[<EB03FEA3EB007EAAEA01FCEA07FF001F13FEEA3F81EB007E127EA212FEA8127EA26C
13FE13836CB512C00007137FEA01F8>26 35 2 0 31]100 dc[<13FE3807FF804813C0381F87E0
383F03F0EA7E0114F812FEB5FCA348C7FCA3127EA2007F13386C1378381FC0F0380FFFE0000313
C03800FE00>21 22 2 0 26]101 dc[<3801FC1E3807FF7F001FEBFF80383F07EF393E03E70000
7E13F214F0A4003E5BEA3F076CB45A91C7FCEA39FC0038C8FCA2123C383FFFE014F86C13FE805A
397C003F8048130FA4007CEB1F00003F137E6CB45A6C5B000113C0>25 33 1 11 28]103 dc[<
B47EA3121FAAEB87E0EB9FF8EBBFFC13F0EBE07E13C01380AD39FFF1FFC0A3>26 35 2 0 31]
104 dc[<120E123F1380127FA2123F1300120EC7FCA6EAFF80A3121FB0EAFFF0A3>12 36 1 0
15]105 dc[<B47EA3121FAA903883FF80A3903880F000EB83E0EB8780018FC7FC139E13BE13FE
7F80EBCFC0138FEB87E0EB83F0A2EB81F8EB80FC39FFF1FFC0A3>26 35 2 0 30]107 dc[<EAFF
80A3121FB3ABEAFFF0A3>12 35 1 0 15]108 dc[<3AFF87F00FE090399FFC3FF89039BFFE7FFC
391FF07EE09039E03FC07E01C0138001801300AD3BFFF1FFE3FFC0A3>42 22 2 0 47]109 dc[<
38FF87E0EB9FF8EBBFFCEA1FF0EBE07E13C01380AD39FFF1FFC0A3>26 22 2 0 31]110 dc[<13
FE3807FFC04813E0381F83F0383F01F8387E00FCA300FE13FEA7007E13FCA2383F01F8381F83F0
380FFFE06C13C03800FE00>23 22 2 0 28]111 dc[<38FF87F0EBBFFCEBFFFE381FF0FFEBC07F
9038803F80A2EC1FC0A8EC3F80A29038C07F00EBE0FEEBFFFCEBBFF8EB8FE00180C7FCA7EAFFF0
A3>26 32 2 10 31]112 dc[<EAFF3EEB7F80EBFFC0381FEFE013CFA2EB87C0EB8380EB8000AB
EAFFF8A3>19 22 2 0 23]114 dc[<EA07F3EA1FFF127FEA780F487EA290C7FC12FEEAFFF0EA7F
FC6C7E6C7E120738007F80130FEAE007A212F038FC0F00EAFFFE5BEAC7F0>17 22 2 0 22]115
dc[<EA01C0A41203A21207A2120F123FB5FCA3EA0FC0AAEBC380A5EBE7006CB4FC6C5AEA01F8>
17 32 1 0 22]116 dc[<38FF83FEA3381F807EAD14FEA21383390FFF7FC0EA07FEEA03F8>26
22 2 0 31]117 dc[<39FFF03FE0A3390FC00E00EBE01E0007131CA26C6C5AA2EBF87800011370
EBFCF000005BA2EB7FC0A36D5AA26DC7FCA2130E>27 22 1 0 30]118 dc[<39FFF0FFE0A33907
E078006D5A6C6C5AEA01F96CB45A6D5A91C7FC7F6D7E497E497EEBF7F0EA01E3EBC1F800037F38
0780FE39FFC1FFE0A3>27 22 1 0 30]120 dc[<39FFF03FE0A3390FC00E00EBE01E0007131CA2
6C6C5AA2EBF87800011370EBFCF000005BA2EB7FC0A36D5AA26DC7FCA2130EA25B127CEAFE3C13
38EAE078EAF1F0EA7FE05B001FC8FC>27 32 1 10 30]121 dc dfe /fi 128 df[<EB01F8EB07
FCEB0FFE131F133FEB7F7EEB7E3CEB7C00A4387FFFF8B512FCA36C13F838007C00B0387FFFFCA5
>23 37 2 0 31]102 dc[<38FC7C1F39FFFE7F8090B512C0A215E0381F8FE3EB07C1A2001E1381
AD39FFC7F1FCEBCFF3A3EBC7F1>30 26 0 0 31]109 dc[<13FCEA03FF481380001F13E0A2383F
87F0387E01F8A2EA7C0048137CA76C13FC007C13F8EA7E01EA7F03383F87F0381FFFE0A2000713
806C1300EA00FC>22 26 4 0 31]111 dc[<387F83FC38FFCFFE90B5FC15806C14C03807FC1F90
38F00FE0EBE0079038C003F0A21401A6140301E013E01407EBF00F9038FC3FC090B51280A201DF
1300EBCFFCEBC3F801C0C7FCA8EA7FFC487EA36C5A>28 39 0 13 31]112 dc[<38FFE07E9038
F1FF8001F713C090B5FCA2000113CFEC078049C7FC5B5BA25BAAB512F080A35C>26 26 2 0 31]
114 dc dfe /fj 128 df[<EB7F80EA03FFEA0787EA0F07121EA6B5FCA2EA1E07AC38FF9FF0A2>
20 26 0 0 21]13 dc[<000E1303003F5B3839800E3871E01E38F0FFFCEBDFF8EBC0385C146014
E0EBC1C038718180EA3983D83F07C7FCEA0E0E38000C0790381C1F809038381CC0EB3038903870
786013E013C01201EA038013005A000EEB38C0000C131C001CEB1F800018EB0700>27 30 2 2
32]37 dc[<13C0EA0180EA03001206120E120C121C5AA35AA412F0AA1270A47EA37E120C120E12
067EEA0180EA00C0>10 38 2 10 15]40 dc[<12C012607E7E121C120C120E7EA3EA0380A413C0
AA1380A4EA0700A3120E120C121C12185A5A5A>10 38 2 10 15]41 dc[<127012F012F8A21278
1218A212381230A212601240>5 12 3 7 11]44 dc[<EAFFC0A3>10 3 0 -7 13]45 dc[<1270
12F8A31270>5 5 3 0 11]46 dc[<EA07E0EA1FF8EA3C3CEA381CEA700EA3EAF00FAAEA700EA3
EA381CEA3C3CEA1FF8EA07E0>16 24 1 0 19]48 dc[<EA0180120712FFA21207B2EAFFF0A2>
12 24 3 0 19]49 dc[<EA0F80EA3FE0EA70F0EA6078EAE07C12F0133C1260EA007C1378A213F0
13E0EA01C0EA03801300EA060C120C1218EA301CEA3FF8127F12FFA2>14 24 2 0 19]50 dc[<
EA0F80EA3FE0EA30F0EA78F81378A2EA00F813F0A2EA01E0EA0FC01380EA00E013701378137CA2
126012F0137812E0EA70F0EA3FE0EA0F80>14 24 2 0 19]51 dc[<13381378A213F81201A2EA
037812071206120C121C12381230127012E0B5FCA2EA0078A5EA07FFA2>16 24 1 0 19]52 dc[
<EA6018EA7FF813F013E01380EA6000A4EA67C0EA7FE0EA7870EA60381200133CA2126012F0A2
EAE038EA6078EA70F0EA3FE0EA0F80>14 24 2 0 19]53 dc[<EA01E0EA07F0EA0E38EA1C7812
381330EA7000A212F0EAF7E0EAFFF0EAF838A2EAF03CA41270A2133812381370EA1FE0EA07C0>
14 24 2 0 19]54 dc[<1260EA7FFEA213FCA2EAE018EAC0301360A2EA00C0A2120113801203A3
1207A8EA0300>15 25 2 0 19]55 dc[<EA0780EA1FE0EA3870EA30381270A31278EA7E70EA3F
E0EA1FC0EA0FE0EA1FF0EA39F8EA707CEAE03C131CA31318EA7038EA3870EA1FE0EA0F80>14 24
2 0 19]56 dc[<EA0780EA1FE0EA38701270133812F0A2133CA4EA707CA2EA3FFCEA1FBCEA003C
1338A2EA3078EA787013E0EA71C0EA3F80EA1F00>14 24 2 0 19]57 dc[<127012F8A3127012
00A6127012F8A31270>5 16 3 0 11]58 dc[<127012F8A312701200A6127012F012F8A2127812
18A212381230A212601240>5 23 3 7 11]59 dc[<130C131EA3133FA3EB77801367A2EBC3C0A3
380181E0A348C67E13FFA238060078A3487F121E39FF81FFC0A2>26 26 1 0 29]65 dc[<B512
8014E0380F01F0EB00F8147CA514F8EB01F0EBFFE0A2EB01F0EB0078147C143EA5143C147C14F8
B512F014C0>23 26 1 0 27]66 dc[<EB3F023801FFC63803E06E380F803E381F001E001E130E
5A007C13061278A200F81300A600781306A2127C003C130C7E001F1318380F80383803E0703801
FFC038003F00>23 26 2 0 28]67 dc[<B57E14E0380F01F0EB00788080A280A21580A81500A2
5C141E5C147C5CB512E01480>25 26 1 0 29]68 dc[<B512F0A2EA0F001470143014381418A2
13061400A2130E13FEA2130E1306A390C7FCA6EAFFF8A2>21 26 1 0 25]70 dc[<39FFF07FC0
A2390F003E0014185C5C5C495A49C7FC13065B131E133F136FEBC780EB87C013036D7E80130014
78A280143E39FFF0FFC0A2>26 26 1 0 30]75 dc[<EAFFF8A2000FC7FCAE1430A31470A21460
14E01303B5FCA2>20 26 1 0 24]76 dc[<B4EBFFC07F000FEB1E00EBC00CEA0DE0A2EA0CF013
F81378133C133E131E130FA2EB078CEB03CCA2EB01ECEB00FCA2147CA2143C001E131CEAFFC014
0C>26 26 1 0 29]78 dc[<B5128014E0380F01F0EB00F81478147CA5147814F8EB01F0EBFFE0
148090C7FCA9EAFFF0A2>22 26 1 0 26]80 dc[<EAFFFEEBFFC0380F03E06D7E130080A45C13
01495AEBFFC091C7FCEB038080130180A380A215C0EB00F839FFF07F80EC3F00>26 26 1 0 28]
82 dc[<EA0FC2EA1FF6EA383EEA701EEA600EEAE006A3EAF0007EEA7F80EA3FF0EA1FF8EA0FFC
EA01FEEA001E130F130712C0A3EAE006EAF00EEAFC1CEADFF8EA87E0>16 26 2 0 21]83 dc[<
007FB5FCA238781E0F00601303A200E0148000C01301A3000090C7FCAF3803FFF0A2>25 26 1 0
28]84 dc[<39FFF0FFC0A2390F001E00140CB16C5B138000035B3801E0E06CB45A013FC7FC>26
26 1 0 29]85 dc[<3AFFC7FF1FF0A23A1E00F803C091387801806CEC0300A214FCD807801306
A2EB819E150ED803C1130CEBC30FA2D801E35B01E71398EBE607D800F613B0A29038FC03F0017C
5BA2EB7801A201385BEB3000>36 26 1 0 39]87 dc[<EA1FC0EA7FF0EA78787F12301200EA0F
FC123FEA7C3C12F812F0EB3D80A2EA787D383FFF00EA1F1E>17 16 1 0 19]97 dc[<12FEA212
1EA8137EEA1FFFEB8780381E03C0130114E0A614C01303381F8780381DFF00EA187C>19 26 0 0
21]98 dc[<EA07F0EA0FFCEA3C3C1238EA7018EAF000A61278EA380CEA3E18EA0FF8EA07E0>14
16 1 0 17]99 dc[<137FA2130FA8EA07CFEA1FFFEA3C1F487E127012F0A612701278EA3C3F38
1FFFE0EA07CF>19 26 1 0 21]100 dc[<EA07C0EA1FF0EA3C78EA7838EA703CEAFFFCA2EAF000
A41278EA380CEA3E18EA0FF0EA07E0>14 16 1 0 17]101 dc[<13F0EA03F8EA073C120FEA1E18
1300A5EAFFC0A2EA1E00ACEAFFE0A2>14 26 0 0 12]102 dc[<EA078EEA1FFFEA3877EA7878A5
EA3870EA3FE0EA3780EA7000A2EA7FF0EA3FFC13FEEA7FFFEAF00FEAE007A2EAF00FEA781EEA3F
FCEA07E0>16 24 1 8 19]103 dc[<12FEA2121EA8137E13FF381F87801307121EAA38FFCFF0A2
>20 26 0 0 21]104 dc[<121C123EA3121CC7FCA512FEA2121EACEAFFC0A2>10 26 0 0 11]
105 dc[<EA01C0EA03E0A3EA01C0C7FCA5EA0FE0A21201B0126112F1EAF3C0EA7F80EA3E00>11
33 -3 7 12]106 dc[<12FEA2121EA8EB3FC0A2EB1E0013385B5B121F7FA2EA1E78137C133C13
3E7F38FF9FE0A2>19 26 0 0 20]107 dc[<12FEA2121EB3A4EAFFC0A2>10 26 0 0 11]108 dc
[<39FE3E07C09038FF9FF0391F87F0F8903803E078001E13C0AA39FFCFF9FFA2>32 16 0 0 33]
109 dc[<EAFE7E13FF381F87801307121EAA38FFCFF0A2>20 16 0 0 21]110 dc[<EA07E0EA1F
F8EA3C3CEA781EEA700EEAF00FA6EA700EEA781EEA3C3CEA1FF8EA07E0>16 16 1 0 19]111 dc
[<EAFE7EB5FC381F8780381E03C0A2EB01E0A6EB03C0A2381F8780EBFF00EA1E7C90C7FCA5EAFF
C0A2>19 23 0 7 21]112 dc[<EAFEE0EAFFF8EA1F78A2EA1E301300A9EAFFE0A2>13 16 0 0
15]114 dc[<EA1F60EA3FE01260EAE060A2EAFC00EAFF80EA7FC0EA3FE0EA07F01200EAC070A2
EAF0E0EAFFC0EADF80>12 16 1 0 15]115 dc[<120CA4121CA2123CEAFFC0A2EA3C00A71360A5
EA1FC0EA0F80>11 23 1 0 15]116 dc[<38FE3F80A2EA1E07AA130F131F380FFFF0EA03E7>20
16 0 0 21]117 dc[<38FF1F80A2381E0E00130CA26C5AA213B8EA07B0A213F06C5AA26C5AA3>
17 16 1 0 20]118 dc[<39FE7F9F80A2393E1E0E00001E130C131F001F131C380F37181498EB
B7B83807E3B014F000035B13C1A200015B1380>25 16 1 0 28]119 dc[<387F9FC0A2380F1E00
EA079813B8EA03F06C5AA26C7E487E1203133CEA063EEA0E1E38FF3FE0A2>19 16 0 0 20]120
dc[<38FF1F80A2381E0E00130CA26C5AA213B8EA07B0A213F06C5AA26C5AA35BA2126100F3C7FC
12C712FE1278>17 23 1 7 20]121 dc[<EA7FF8A2EA70F0126113E0EA63C01267EA0780EA0F18
121F121EEA3C38EA7C30EA7870EAFFF0A2>13 16 1 0 17]122 dc[<B512C0A2>18 2 0 -9 19]
123 dc dfe /fk 128 df[<EA3803387C0780130F12FE14005BA2131E133EA2EA7C3C137C1238
EA007813F8A25B1201A25B1203A25B1207EBC380EB87C0120FEB8FE0130F121FA2121E123EEB07
C0123C38180380>19 36 2 4 24]37 dc[<137813F81201EA03E0EA07C0EA0F80EA1F00121E12
3E123C127C1278A212F85AA87E1278A2127C123C123E121E121FEA0F80EA07C0EA03E0EA01F812
001378>13 36 6 4 24]40 dc[<127012F8127C7E7EEA0F80EA07C0120313E0120113F01200A2
13F81378A813F813F0A2120113E0120313C01207EA0F80EA1F00123E5A5A1270>13 36 4 4 24]
41 dc[<EA01C0A27FA238E1E380EAF9EFEAFDFFB5FC383FFE00EA0FF8A2EA3FFEB5128012FDEA
F9EFEAE1E33801E000A25BA2>17 20 3 -4 24]42 dc[<EA7FFFB51280A26C1300>17 4 3 -12
24]45 dc[<EA01F0EA07FC487E487E131F383E0F80387C07C0EA7803A238F001E0A9EAF8030078
13C0A2EA7C07383E0F80381F1F0013FF6C5A6C5AEA01F0>19 28 2 0 24]48 dc[<EA01C0A212
031207120F123F12FFA212FB12631203AEEA7FFEB5FCA2EA7FFE>16 28 4 0 24]49 dc[<EA07
F8EA1FFE487E48138038FC1FC0EAF807EB03E0130112701200A2130314C01307EB0F80EB1F0013
3E5B5B485AEA07E0485A381F81E0EA3E01EA7FFFB5FCA27E>19 28 2 0 24]50 dc[<EA07F8EA
1FFE487E481380387C0FC013071303123812001307EB1F803803FF005BA27F38000F80EB03C014
E01301A21270EAF80314C0EAFC0F387FFF801400EA1FFEEA07F8>19 28 2 0 24]51 dc[<133F
5B5B13EF1201EA03CFA2EA078F120F130F121F123E123C127C12F8B512F8A438000F00A5EBFFF0
4813F8A26C13F0>21 28 1 0 24]52 dc[<383FFF80A4003CC7FCA7EA3FF813FE7F1480383E0F
C0383803E012001301127012F81303EB07C0EAFC1F387FFF806C13006C5AEA07F8>19 28 2 0
24]53 dc[<137E48B4FC000713804813C0EA1FC7EA3F07383E038048C7FC12781320EAFBFEB5FC
148014C0EAFC0738F803E0A2EAF00112F8A21278EA7C03EB07C0EA3F0F381FFF806C13006C5AEA
03F8>19 28 2 0 24]54 dc[<12F0B512E0A438F007C0EB0F8038001F00133E133C137C137813
F85B12015BA212035BA312075BA66CC7FC>19 29 2 0 24]55 dc[<EA03F8EA0FFE487E481380
EA3E0F387C07C0EA7803A3EA7C07383E0F80381FFF006C5AA2383FFF80387E0FC0EA780300F813
E0EAF001A3EAF803007813C0EA7E0F383FFF806C13006C5AEA03F8>19 28 2 0 24]56 dc[<EA
03F8EA0FFC487E487E387E0F80387C07C0EAF80312F014E0A312F8EA7C07EA7FFF7E7EEA0FFDEA
0083EB03C0A2130738380F80EA7C1FEB3F00EA7FFE6C5A6C5AEA0FE0>19 28 2 0 24]57 dc[<
1238127C12FEA3127C12381200A61238127C12FEA3127C1238>7 20 8 0 24]58 dc[<1303EB0F
80131FEB3F0013FE485AEA03F0485AEA1FC0485A007EC7FC5AA2127E6C7E6C7EEA07E06C7EEA01
FC6C7E133FEB1F80130FEB0300>17 24 3 -2 24]60 dc[<126012F87E127E6C7E6C7EEA07E06C
7EEA01FC6C7E133FEB1F80A2EB3F0013FE485AEA03F0485AEA1FC0485A007EC7FC5A5A1260>17
24 3 -2 24]62 dc[<13F8A3487E13DCA3EA03DEA4138EEA078FA5380F078013FFA4381E03C0A2
387F8FF038FFDFF8A2387F8FF0>21 28 1 0 24]65 dc[<3801F8E0EA03FF120FA2EA1F87EA3E
03127C1301127812F890C7FC5AA67EEB01E01278127CA2EA3E03381F87C0380FFF801400EA03FE
EA01F8>19 28 2 0 24]67 dc[<EA7FF8EAFFFE7F6C1380381E0FC01307EB03E01301A214F013
00A8130114E0A21303EB07C0130F387FFF80B512005BEA7FF8>20 28 1 0 24]68 dc[<B512F0
A4EA1E00A4EB1E00A3EA1FFEA4EA1E1EA390C7FC1478A5B512F8A4>21 28 1 0 24]69 dc[<B5
12F0A4EA1E00A41400130FA3EA1FFFA4EA1E0FA390C7FCA5EAFFE0A4>20 28 1 0 24]70 dc[<
3801F9C0EA07FF5A5A138FEA3E07127C1303127812F848C7FCA5EB1FF0133FA2EAF81F387803C0
EA7C07A2123EEA1F8F13FF7E7EEA01FB>20 28 2 0 24]71 dc[<387F8FF038FFDFF8A2387F8F
F0381E0F80A2EB1F00133E133C137C5B5BEA1FF8A27FA213BC133E131EEA1E1F7F1480130714C0
387F87F038FFCFF8A2387F87F0>21 28 1 0 24]75 dc[<EA7FF012FFA2127F000FC7FCAF14F0
A5EA7FFFB5FCA27E>20 28 1 0 24]76 dc[<38FF07F8A2138FA2383D8DE0A413DDA6EA3CD913
F9A313711301A538FF07F8A4>21 28 1 0 24]77 dc[<EA0FF8EA3FFE487EA2EA7C1F38F80F80
EAF007B0EAF80F387C1F00EA7FFFA26C5AEA0FF8>17 28 3 0 24]79 dc[<EAFFFE7F14C0A238
1E07E0130114F01300A4130114E01307381FFFC0A214005B001EC7FCA6EAFFC0A4>20 28 1 0
24]80 dc[<EA7FF8487E13FF6C1380EA1E1FEB07C01303A41307EB1F80EA1FFF14005B7F381E1F
80130F1307A414BCA2387F87FCEAFFC3EBC1F8387F80F0>22 28 1 0 24]82 dc[<3807F380EA
1FFF5A5AEA7C1FEAF80712F0A290C7FC7E127CEA7FC0EA3FFC6CB4FC0007138038007FC01307EB
03E01301A2127012F0130338FC07C0B5FC14801400EAE7FC>19 28 2 0 24]83 dc[<387FFFF8
B5FCA338F07878A400001300B03807FF80A4>21 28 1 0 24]84 dc[<EA7FFFB51280A26C1300>
17 4 3 4 24]95 dc[<EA1FF0EA3FFC487E7F387C1F80EA38071200EA07FF121F5A5AEAFC0712
F0A2EAF80FEAFC3F387FFFF87EEA1FFBEA0FE1>21 20 2 0 24]97 dc[<127F5AA27E120FA413
3FEBFFC014E014F0EBE1F81380147C1300143CA4EB807CA2EBC0F813E3EBFFF014E014C038073F
00>22 28 0 0 24]98 dc[<EA01FEEA07FF001F13805A130F387C07000078C7FC12F85AA438F8
03C01278EA7C07003F138013FF6C1300EA07FEEA01F8>18 20 3 0 24]99 dc[<EB1FC0133FA2
131F1303A4EA03F3EA0FFF5A5AEA7F0FEA7C0712F8130312F0A4EAF807A2EA7C0FEA7E1F383FFF
F86C13FCEA0FFB3803F3F8>22 28 1 0 24]100 dc[<EA01F8EA07FE487E481380383F0FC0EA7C
03007813E0EAF801B5FCA4EAF8011278EA7E03383F87C0EA1FFF6C13806C1300EA01FC>19 20 2
0 24]101 dc[<EB0F80EB3FC0EB7FE013FFEA01F3EBE1C0EBE000A2387FFFC0B5FCA33801E000
AC387FFF80A4>19 28 1 0 24]102 dc[<3801F1F03807FFF85A5AEB1F70383E0F80EA3C07A3EA
3E0F381F1F0013FF485A5BEA3DF0003CC7FCA2EA3FFF6C13C04813E04813F038FC01F8EAF80048
1378A26C13F8387E03F0EA7FFF6C13E0000F13803803FE00>21 31 1 11 24]103 dc[<127F5A
A27E120FA4133FEBFF8014C014E013E31381A21301A9387FE1FC38FFF3FEA2387FE1FC>23 28 0
0 24]104 dc[<EA01C0487EA36C5AC8FCA4EA7FE012FFA2127F1201ACB5128014C0A21480>18
29 3 0 24]105 dc[<131C133EA3131C1300A4EA0FFE121FA2120FEA001EB3A2EA703EEAF87CEA
FFF813F0EA7FE0EA3FC0>15 39 2 10 24]106 dc[<B4FCA4120FA4EB7FF8A4EB1F80EB3F0013
7E137C5B7F7F13DE139FEB0F80EB07C0A238FFC3FC13E7A213C3>22 28 0 0 24]107 dc[<EA7F
F012FFA2127F1200B3A2387FFFE0B512F0A26C13E0>20 28 2 0 24]108 dc[<387EF8F838FFFD
FCEBFFFE7E381F9F9EEB1F1EEA1E1EAA397F9F9F8039FFDFDFC0A2397F8F8F80>26 20 -1 0 24
]109 dc[<EA7F3FB5128014C06C13E0EA0FE31381A21301A9387FE1FC38FFF3FEA2387FE1FC>
23 20 0 0 24]110 dc[<EA01F0EA0FFE487E481380EA3E0F387C07C0EA780338F001E0A5EAF8
03007813C0EA7C07383E0F80EA3FFF6C13006C5AEA01F0>19 20 2 0 24]111 dc[<EA7F3FB512
C014E06C13F0380FE1F81380147C1300143CA4EB807CA2EBC0F813E3EBFFF014E014C0EB3F0090
C7FCA6EA7FE0487EA26C5A>22 30 0 10 24]112 dc[<387FC7E038FFDFF0EBFFF87EEA03FCEB
F07014005BA25BA7EA7FFFB51280A26C1300>21 20 1 0 24]114 dc[<EA0FFF123F5AB5FCEAF8
0F12F090C7FC12FEEA7FF0EA3FFCEA0FFEEA007F38700F80EAF00712F8EAFC1FB51200A25BEAE7
F8>17 20 3 0 24]115 dc[<EA01C01203A4387FFFC0B5FCA33803C000A614C0EBC1E0A313C3EB
E3C0EA01FF14806C1300137E>19 25 1 0 24]116 dc[<387F0FE0EAFF1FA2EA7F0FEA0F01AB13
07EBFFFC14FE7E3803FDFC>23 20 0 0 24]117 dc[<387F8FF000FF13F8A2007F13F0380F0780
A3138F00071300A3EA038E13DEA3EA01DC13FCA36C5A>21 20 1 0 24]118 dc[<38FFDFF8A438
3C01E0A3001C13C013F9EA1DFDA313DDA3000D1380EA0FDFA2138FA2>21 20 1 0 24]119 dc[<
387F8FF0EAFF9FA2EA7F8F3807DF00EA03DE13FC12016C5A5B7F487EA2EA03DEEA079F138F007F
13F000FF13F8A2007F13F0>21 20 1 0 24]120 dc[<387F8FF000FF13F8A2007F13F0380F0780
A213871207EB8F00A2EA03CF13CEA2120113DE13DCEA00FCA31378A35BA2127DEA7FE0A25B6C5A
001EC7FC>21 30 1 10 24]121 dc[<383FFFF05AA3387807E0EB0FC0EB1F8038003E005B5B48
5A485A3807C0F0EA1F80EA3F00127EB5FCA4>20 20 1 0 24]122 dc[<126012F0B3B01260>4
36 10 4 24]124 dc dfe /fl 128 df[<90381F83F09038FFEFF83901E0FE7C3803C1F8EA0781
390F01F03801001300A6B61280A2390F00F000B038FFC3FFA2>30 32 0 0 27]11 dc[<EB1F80
EBFFC03801E0E03803C0F0EA0781EA0F01EB00E01400A5B512F0A2EA0F00B038FFC3FFA2>24 32
0 0 25]12 dc[<EB1FB0EBFFF0EA01E1EA03C1EA0781EA0F00A7B5FCA2EA0F00B038FFE7FFA2>
24 32 0 0 25]13 dc[<90381FC0FC90387FE7FE3901F07F072603C0FE1380390780FC0F380F00
F8913878070092C7FCA5B71280A2390F007807B03AFFE3FF3FF8A2>37 32 0 0 38]14 dc[<EA
781EEAFC3FA200FE1380A2EA7E1FEA0601A3380C0300A2EA1806EA380E485AEA2008>17 15 2
-17 23]34 dc[<000F1430486C1370D838E0136039787001E039707C07C090383FFF8038F031FB
90383007001406140E5C141800701338495A007813603838C0E0381F81C0380F0180D8000313E0
EC03F09038070718010E130CEB0C0E131C9038381E061330137013E013C01201EA03809038000E
0C5A000E1307000C1418001CEB03F00018EB00E0>31 37 3 3 38]37 dc[<127812FCA212FEA2
127E1206A3120CA21218123812701220>7 15 3 -17 13]39 dc[<136013C0EA01801203EA0700
1206120E5AA2123C1238A212781270A412F0AC1270A412781238A2123C121CA27E12061207EA03
801201EA00C01360>11 46 3 12 18]40 dc[<12C012607E12387E120C120E7EA213801203A213
C01201A413E0AC13C0A412031380A212071300A2120E120C121C5A12305A5A>11 46 3 12 18]
41 dc[<1306AFB612F0A2D80006C7FCAF>28 32 3 5 35]43 dc[<127812FCA212FEA2127E1206
A3120CA21218123812701220>7 15 3 9 13]44 dc[<EAFFC0A3>10 3 1 -9 15]45 dc[<1278
12FCA41278>6 6 3 0 13]46 dc[<1303A213071306A2130E130CA2131C1318A213381330A213
701360A213E013C0A212011380A312031300A25A1206A2120E120CA2121C1218A212381230A212
701260A212E05AA2>16 45 3 11 23]47 dc[<EA03F0EA0FFCEA1E1E487EEA380700781380A300
F813C0AD00781380A3383C0F00A2EA1E1EEA0FFCEA03F0>18 29 2 0 23]48 dc[<13C0120112
0F12FF12F31203B3A4EA7FFFA2>16 29 3 0 23]49 dc[<EA07F0EA1FFCEA383EEA601F38F80F
8012FC14C0130712781230EA000F1480A2EB1F00131E5B5B5B5B485A485A380700C0120E5AEA18
01383FFF805AB5FCA2>18 29 2 0 23]50 dc[<EA07F0EA1FFCEA383E7F007C1380130FA2EA3C
1F00001300A2131E5BEA03F85BEA003C7F7F148014C0A21230127812FC1480A238781F00EA383E
EA1FFCEA07F0>18 29 2 0 23]51 dc[<130EA2131E133EA2137E13FE13DEEA019E1203131E12
06120E120C121812381230126012E0B512F0A238001E00A63801FFE0A2>20 29 1 0 23]52 dc[
<EA3803EA3FFF5B5B13F013C00030C7FCA5EA31F0EA37FCEA3E1EEA380F38300780120014C0A3
127812F8A21480EAF00F00601300EA383EEA1FF8EA07E0>18 29 2 0 23]53 dc[<137CEA01FE
EA0783380F0780EA1E0F121C383C070048C7FCA312F8EAF9FCEAFBFEEAFE0F487E148000F813C0
A41278A300381380123C381C0F00EA0E1EEA07FCEA03F0>18 29 2 0 23]54 dc[<1260387FFF
C0A21480A238E00300EAC0065BA2C65A5BA25B13E0A212015BA21203A41207A76C5A>18 30 3 0
23]55 dc[<EA03F0EA0FFCEA1C1EEA3807383003801270A21278127C387E0700EA3F8EEA1FFC5B
EA07FC487EEA1CFF38387F80EA701FEB07C0EAE0031301A31480EA700300781300EA3C0EEA0FFC
EA03F0>18 29 2 0 23]56 dc[<EA03F0EA0FF8EA1E1EEA3C0E487E148012F8A314C0A4EA780F
1238EA3C1FEA1FF7EA0FE7EA00071480A338380F00127C131EEA781CEA3078EA1FF0EA0FC0>18
29 2 0 23]57 dc[<127812FCA412781200A8127812FCA41278>6 20 3 0 13]58 dc[<127812
FCA412781200A8127012F812FCA3127C120CA31218A21238123012601220>6 29 3 9 13]59 dc
[<EB0380A3497EA3497EA3EB19F0A3EB30F8A3EB607CA3497EA2EBFFFE487FEB801FA23903000F
80A348EB07C0EA0F8039FFE07FFEA2>31 31 1 0 34]65 dc[<B512F014FC3807C03F80EC0F80
15C0A51580141F1500147EEBFFFC80EBC01FEC0F8015C0140715E0A515C0140F1580EC3F00B512
FE14F8>27 31 1 0 32]66 dc[<90381FC04090387FF0C03801F8193803E00F38078007380F00
03481301123EA2007E1300127CA200FC1400A7127C15C0127E123EA26CEB01807E390780030038
03E0063801F81C38007FF8EB1FC0>26 31 3 0 33]67 dc[<B512F014FE3807C03FEC0F80EC07
C0EC03E0EC01F0A2EC00F8A315FCA915F8A3EC01F0A2EC03E015C0EC0F80EC3F00B512FE14F0>
30 31 1 0 35]68 dc[<B61280A23807C00F14031401A215C01400A21460A21500A214E013FFA2
13C01460A21530A214001560A315E0A21401EC07C0B6FCA2>28 31 1 0 31]69 dc[<B61280A2
3807C00F14031401A215C01400A21460A21500A214E013FFA213C01460A491C7FCA8B5FCA2>26
31 1 0 30]70 dc[<90380FE02090387FF8603901F81CE03803E0073807C003380F800148C7FC
123EA2007E1460127CA200FC1400A6ECFFFC127CEC03E0127E123EA27EEA0F80EA07C03803E007
3801F80F38007FFC90380FE020>30 31 3 0 36]71 dc[<39FFFC7FFEA23907C007C0AC90B5FC
A2EBC007AD39FFFC7FFEA2>31 31 1 0 34]72 dc[<EAFFFEA2EA07C0B3A9EAFFFEA2>15 31 0
0 16]73 dc[<380FFFE0A238003E00B3A3127812FCA3485AEA70F8EA3FF0EA0FC0>19 31 1 0
23]74 dc[<39FFFE0FFEA23907C003E01580150014065C5C5C5C5CEBC18013C3EBC7C013CFEBDF
E0EBFBF013F1EBE0F813C0147C147E143E80A2EC0F8015C0140715E039FFFE3FFEA2>31 31 1 0
35]75 dc[<B5FCA2EA07C0B11403A41407A21406140E141E147EB512FEA2>24 31 1 0 28]76
dc[<D8FFC0EB0FFE6D131F000715C0A2D806F01337A301781367A36D13C7A390381E0187A29038
0F0307A3EB0786A3EB03CCA3EB01F8A3EB00F0120FD8FFF0EBFFFE1460>39 31 1 0 42]77 dc[
<39FFC01FFE13E03907F001E0EC00C0EA06F8A2137C137E133E7F1480130FEB07C014E0130314
F01301EB00F814FC147C143E143F141F140FA21407A21403000F1301EAFFF01400>31 31 1 0
34]78 dc[<EB3FC0EBFFF03803F0FC3807C03E48487E391F000F80A2003EEB07C0A248EB03E0A2
00FC14F0A9007C14E0007E1307A2003E14C06CEB0F80A2390F801F003807C03E3803F0FC3800FF
F0EB3FC0>28 31 3 0 35]79 dc[<B512F014FC3807C03E80EC0F80A215C0A51580A2EC1F0014
3EEBFFFC14F001C0C7FCACEAFFFEA2>26 31 1 0 31]80 dc[<B512C014F83807C07C8080A215
80A41500A2143E5CEBFFF814C0EBC0E0801478A2147CA3147EA31506147FEC3F8E39FFFE1FFCEC
03F0>31 31 1 0 33]82 dc[<3807E080EA0FF9EA3C1FEA3807EA7003A2EAF001A36CC7FCA212
FEEA7FE013FC6C7E6C7E00071380C6FC130FEB07C0A2130312C0A300E01380130700F01300EAFE
0EEACFFCEA83F8>18 31 3 0 25]83 dc[<007FB512E0A2387C0F810070138000601460A200E0
147000C01430A400001400B20007B5FCA2>28 31 2 0 33]84 dc[<39FFFE1FFEA23907C001E0
EC00C0B3A30003EB018013E00001EB03003800F006EB7C1CEB1FF8EB07E0>31 31 1 0 34]85
dc[<39FFF807FEA2390FC001F0EC00E0000714C0A23903E00180A33901F00300A213F800001306
A2EBFC0EEB7C0CA26D5AA36D5AA214B0EB0FE0A36D5AA26D5AA3>31 31 1 0 34]86 dc[<3BFF
F8FFF83FF0A23B0F800F800F80EE030015C02607C0071306A2EC0FE0D803E05CA215F02601F019
5BA33A00F830F830A390397C607C60A36D486C5AA390383F801F011F5CA2EC000F6D91C7FCA201
0E7F01061306>44 31 1 0 47]87 dc[<397FFC7FF8A23907E01F800003EB0E0013F03801F80C
00005BEBFC38EB7C30EB7E60EB3FE06D5AA26D5A806D7EA2497E130DEB19F8EB38FCEB307CEB60
7EEBE03EEBC03F0001EB1F80EB800F000314C0EA0FC039FFF07FFEA2>31 31 1 0 34]88 dc[<
3AFFFC03FF80A23A07E000F800000314607F00015CEBF80100005CEBFC03017E90C7FC1406133F
6D5A149CEB0F9814F86D5A5C1303ABEB7FFFA2>33 31 0 0 34]89 dc[<12FEA212C0B3B3A512
FEA2>7 45 4 11 13]91 dc[<EA0802EA1C07EA380EEA300C485AA2485AA3EAFC3F00FE1380A2
EA7E1FA2383C0F00>17 15 3 -17 23]92 dc[<12FEA21206B3B3A512FEA2>7 45 1 11 13]93
dc[<EA07F0EA1FFCEA3E1E7FEB0780121C1200A2EA03FF120FEA3F07127CA200F81398A3130F38
7C1FF8383FF3F0380FC1E0>21 20 1 0 23]97 dc[<120FB4FCA2120FA9EB1F80EB7FC0EBE1E0
EB80F0EB0078A2147CA71478A214F8EB80F0380EC1E0EB7FC0380C1F00>22 32 0 0 25]98 dc[
<EA03F0EA0FFCEA1E3E123CA2EA781C130012F8A61278127CEA3C03123EEA1F0EEA0FFCEA03F0>
16 20 2 0 20]99 dc[<EB03C0133FA21303A9EA03E3EA0FFBEA1E0FEA3C07EA7C031278A212F8
A61278A3EA3C07EA1E1F380FFBFCEA03E3>22 32 2 0 25]100 dc[<EA03F0EA0FFCEA1E1E487E
A21278EB078012F8B5FCA200F8C7FCA31278127C383C0180EA1E03380F0700EA07FEEA01F8>17
20 1 0 20]101 dc[<133E13FF3803CF80EA078FA2380F070090C7FCA6EAFFF0A2000FC7FCB0EA
FFF0A2>17 32 0 0 14]102 dc[<3803F1E0380FFFF0381E1F70383C0F60007C1380A5003C1300
EA1E1EEA1FFCEA33F00030C7FCA21238EA3FFEEBFF806C13C04813E0EA7801387000F0481370A3
007013E0EA7801383E07C0380FFF00EA03FC>20 30 1 10 23]103 dc[<120FB4FCA2120FA9EB
1F80EB7FC0EBE1E0EBC0F013801300AD38FFF3FFA2>24 32 0 0 25]104 dc[<120E121F5AA27E
120EC7FCA5120F127FA2120FAFEAFFE0A2>11 31 0 0 13]105 dc[<13F0EA01F8A4EA00F01300
A51378EA07F8A212001378B3127012F813F0EAF9E0EA7FC0EA3F00>13 40 -3 9 14]106 dc[<
120FB4FCA2120FA9EB0FF8A2EB07C0140013065B5B1338137813FC13BC131E131F7F1480EB07C0
130314E038FFE7FCA2>22 32 0 0 24]107 dc[<120FB4FCA2120FB3A9EAFFF0A2>12 32 0 0
13]108 dc[<390F0FC07E39FF3FE1FF9039E0F707803A0FC07E03C0EB807CEB0078AD3AFFF3FF
9FFCA2>38 20 0 0 39]109 dc[<380F1F8038FF7FC0EBE1E0380FC0F013801300AD38FFF3FFA2
>24 20 0 0 25]110 dc[<EA01F8EA07FE381F0F80383C03C0A2387801E0A200F813F0A6007813
E0A2383C03C0A2381F0F803807FE00EA01F8>20 20 1 0 23]111 dc[<380F1F8038FF7FC0EBE1
E0380F81F0EB00F8A2147CA7147814F8A2EB81F0EBC3E0EB7FC0EB1F0090C7FCA7EAFFF0A2>22
29 0 9 25]112 dc[<3803E0C0EA0FF9EA1F1DEA3E07127C1303127812F8A61278127C1307123E
EA1E1FEA0FFBEA03E3EA0003A7EB3FFCA2>22 29 2 9 24]113 dc[<EA0F7CEAFFFE13DFEA0F9F
A2130E1300ACEAFFF0A2>16 20 0 0 18]114 dc[<EA0FB0EA3FF0EA7070EAE030A3EAF000B4FC
EA7FC0EA3FE0EA1FF0EA03F8EA0078EAC038A212E01330EAF070EAFFE0EA8F80>13 20 2 0 18]
115 dc[<1206A4120EA2121E123EEAFFF8A2EA1E00AA1318A5EA0F30EA07E0EA03C0>13 28 1 0
18]116 dc[<000F13F0EAFF0FA2EA0F00AC1301A2EA07073803FEFFEA01F8>24 20 0 0 25]
117 dc[<38FFC7F8A2381F01E0000F13C01480A238078300A3EA03C6A213EEEA01ECA213FC6C5A
A21370A3>21 20 1 0 24]118 dc[<39FF9FF3FCA2391E03C0F015E0000F14C0130714E0390787
E180138C14F13903CCF300EBD873147BEBF87F0001137EEBF03EA20000133CEBE01CA2>30 20 1
0 33]119 dc[<387FE7FCA2380783E014803803C300EA01E613EEEA00FC1378A27F137E13FEEA
01CFEB87801203380703C0000F13E038FFCFFEA2>23 20 0 0 24]120 dc[<38FFC7F8A2381F01
E0000F13C01480A238078300A3EA03C6A213EEEA01ECA213FC6C5AA21370A31360A3EA70C012F8
EAC18012E3007FC7FC123C>21 29 1 9 24]121 dc[<EA3FFFA2EA381EEA303EEA703CEA607813
F8EA61F0EA01E01203EA07C01383120FEA1F03EA1E07EA3C06127CEA781EEAFFFEA2>16 20 1 0
20]122 dc[<B512FCA2>22 2 0 -11 23]123 dc dfe /fm 128 df[<1307131F137FEA07FFB5
FCA312F8C6FCB3A9007F13FEA4>23 39 5 0 34]49 dc[<EBFF80000713F0001F13FC487F397E
07FF80EA7F01D8FF8013C0A2EC7FE0A2143FEA7F00001C137FC7FCA215C014FF15804913005C49
5AEB07F0495A495A49C7FC90387E01E0137C13F83901F003C0EA03C0EA078048B5FC5A5A5AB612
80A4>27 39 3 0 34]50 dc[<EB7F803803FFF04813FC487F381F83FF487E01C01380A27F5B12
1FEA0F81D800011300A2495AEB07F8EBFFF014C014F8EB03FEEB00FF1580EC7FC0A215E0A2121C
127FEAFF80A315C014FF4913806C4813006CB45A6C5B000713F0C61380>27 39 3 0 34]51 dc[
<141F5CA25C5C5BA25B5B5B497E131E133C137813F8EA01F013E0EA03C0EA0780120F1300121E
5A127C5AB612F8A4C71300A6017F13F8A4>29 39 2 0 34]52 dc[<00181303381F803F90B5FC
5C5CA214F05C148001FCC7FC001EC8FCA5EB3FC0381FFFF880EB80FF9038007F80121EC7EA3FC0
A215E0A21218127EB4FCA315C0147F5A007CEBFF80D83F011300EBFFFE000F13F8000313E0C690
C7FC>27 39 3 0 34]53 dc[<EB07F0EB3FFCEBFFFE487F3807FC1F390FF03F80EBE07F121FEA
3FC0A2007FEB3F00EB801E91C7FCA2EAFF82EB9FF0EBFFFC80EBE07FEC3F8001C013C0A2018013
E0A5127FA4003F14C013C0001FEB7F80390FE0FF006CB45A6C5BC613F0EB3FC0>27 39 3 0 34]
54 dc[<91393FF00380903903FFFE07010FEBFF8F013F14FF9038FFF80748EB8001000790C712
7FD80FFC143F49141F121F4848140FA248481407A3484891C7FCAB6C7EEE0780A26C7E160F6C7E
000FED1F007F6CB4143E00016D13FC6C9038F803F8013FB55A010F14C0010391C7FC9038003FF0
>41 41 4 0 50]67 dc[<B512FEA400011300B3AFB512FEA4>23 41 1 0 26]73 dc[<B592383F
FFC06E5CA300036D9138FFF000A2D9DFE0EB01EFA2D9CFF0EB03CFA3D9C7F8EB078FA2D9C3FCEB
0F0FA3D9C1FE131EA2D9C0FF133CA291387F8078A391383FC0F0A291381FE1E0A391380FF3C0A2
913807FF80A36E1300A26E5AA2B52600FC03B512C0A31578>58 41 3 0 65]77 dc[<B612E015
FE6F7E16E03A03FE007FF0ED1FF86F7E1507A282A55EA24B5A4B5AED7FE090B612804BC7FC5D90
38FE01FF6E7F6F7EA26F7EA482A4170F16F816FCB539F81FFE1F92380FFFFE030313FC9238007F
F0>48 41 3 0 52]82 dc[<B539F803FFFCA4D803FEC7EA0F00B3A85E0001151E7F6C153E6E5B
6D6C5B90383FF0076DB512E001075C010191C7FC9038001FF8>46 41 3 0 53]85 dc[<B53CF8
7FFFF80FFFF0A42703FE000190C7EA3C006D6F5B6C8019F86C6D486D5BA202C01501017F4901E0
5BA202E01503013F9026079FF05BA290261FF00F6D485A160F02F8150F010F011F01FC90C7FCED
1E0702FC5D0107013EEBFE1EED3C0302FE153E010390397801FF3CA2902601FFF814F84B7EA26D
5E4B137FA2027F5D4B133FA26E486D5AA2021F5D92C7120FA2>68 41 1 0 71]87 dc[<48B47E
000F13F04813FC383FC1FEEBC0FFA2EC7F80A2EA0F00C7FC14FF137F0003B5FC120F383FF07FEA
7FC0138012FF1300A3EB80FFEA7F8101C313FC6CB5FC000F131F3801FC07>30 27 2 0 33]97
dc[<EB1FF0EBFFFE00037F390FF07F80EA1FE0EA3FC0A2127F9038801E0000FF90C7FCA96C7EA2
003FEB03C0EBE007EA1FF0390FFC1F800003B51200C613FCEB1FE0>26 27 2 0 31]99 dc[<EC
7FF8A41407ABEB3FC73801FFF74813FF380FF83F381FE00F383FC007A2127F138012FFA9127FA2
EA3FC0140F381FE01F3A0FF07FFF806CB6FC000113F738003F87>33 42 2 0 38]100 dc[<EB3F
E03801FFF84813FE380FF07F391FE03F80D83FC013C0141FEA7F80EC0FE012FFA290B5FCA30180
C7FCA4127F7F003FEB01E0EBE003D81FF013C0380FFC0F0003B51280C6EBFE00EB1FF0>27 27 2
0 32]101 dc[<EB03F8EB1FFEEB7FFF3901FF7F80EA03FE13FCEA07F8A2EC3F0091C7FCA6B512
C0A4D807F8C7FCB3387FFFC0A4>25 42 2 0 21]102 dc[<9038FF81F00003EBEFF8000FEBFFFC
381FC1FE123F1380007FEBFF301500A5003F5B13C1001F5BEBFFF814E0003C138090C8FC123EA2
383FFFF814FF15C06C14E06C14F05A4814F8387E000F00FE1303481301A36C1303007E14F0007F
1307393FC01FE0000FB512800003EBFE0038007FF0>30 40 2 13 34]103 dc[<EA0780EA0FE0
EA1FF0123FA4121FEA0FE0EA0780C7FCA6EAFFF0A4120FB3B5FCA4>16 43 2 0 19]105 dc[<EA
FFF0A4120FABEC7FFCA4EC1F80EC3F00147EEBF1F8EBF3F0EBF7E013FFA2808080A2EBF3FEEBE1
FF13E01580EC7FC0143F15E039FFFE7FFEA4>31 42 2 0 36]107 dc[<EAFFF0A4120FB3B0B5FC
A4>16 42 2 0 19]108 dc[<3BFFE03F800FE0903AE1FFE07FF801E79038F1FFFC903AEF87FBE1
FE3B0FFE03FF80FF01FC5CA201F85BA201F05BAEB5261FFFC713F0A4>52 27 3 0 57]109 dc[<
38FFE07F9038E1FFC001E77F9038EF8FF0390FFE07F813FCA213F8A213F0AEB5381FFF80A4>33
27 3 0 38]110 dc[<EB3FE03801FFFC487F390FF07F80391FC01FC0003F14E0EB800F007F14F0
A300FF14F8A8007F14F0A2003F14E0EBC01F391FE03FC0390FF07F806CB51200000113FC38003F
E0>29 27 2 0 34]111 dc[<38FFF0FE9038F7FFC090B512F09038FE0FF8390FFC07FC9038F003
FE140181A26E1380A94A1300A24A5A13F86D485A6D485A90B512E001F71380D9F1FEC7FC01F0C8
FCA8B5FCA4>33 39 2 12 38]112 dc[<38FFE3F0EBEFFCEBFFFEEBFCFF120F5BA25B143C1400
AEB51280A4>24 27 2 0 28]114 dc[<3803FE70380FFFF0123FEA7E03EA7C01EAF800A27EB413
0013F813FF6C13C014F06C13F8120F000313FCEA003F1301EAF000147C7EA26C13F8EAFF01EBFF
F014C038E1FE00>22 27 2 0 27]115 dc[<1378A413F8A312011203A21207381FFFF0B5FCA338
07F800AC1478A614F83803FCF0EA01FF6C13C0EB3F80>21 38 1 0 27]116 dc[<39FFF07FF8A4
000F1307B0140FA2141F3A07F83FFF8090B6FC000113F738007FC7>33 27 3 0 38]117 dc dfe
/fn 128 df[<38FC07E0EAFE0FA2003E1380EA3B1BA413BBA2EA39B3A313F3A2EA38E3A21303A5
38FE0FE0A3>19 25 1 0 22]77 dc[<131EEBFF805AEA03EF13CFEBC20013C0EA7FFFB5FCA2EA
03C0ACEA7FFEB5FC6C5A>17 25 1 0 22]102 dc[<38FBC78038FFEFC0EBFFE0EA3E7CEA3C78EA
3870AA38FE7CF8A3>21 18 0 0 22]109 dc[<EA03E0EA0FF8487EEA3E3EEA780FA238F00780A6
38780F00EA7C1FEA3E3EEA1FFC6C5AEA03E0>17 18 2 0 22]111 dc[<EA7F3FB512C06C13E038
0FC3F01381EB00F8A21478A414F814F01381EBC3E013FF1480EB3E0090C7FCA6EA7FE0487E6C5A
>21 27 -1 9 22]112 dc[<38FF8F80EBBFE013FFEA07F1EBE0C0EBC000A25BA8EAFFFEA3>19
18 1 0 22]114 dc dfe /fo 128 df[<127012F812FCA2127C120CA31218A2123012601240>6
13 3 -16 12]39 dc[<127012F012F8A212781218A31230A2127012601240>5 13 3 8 12]44
dc[<EAFFE0A3>11 3 0 -8 14]45 dc[<127012F8A31270>5 5 3 0 12]46 dc[<1303A2130713
06A2130E130C131C1318A213381330A213701360A213E013C0A21201138012031300A25A1206A2
120E120CA2121C1218A21238123012701260A212E05AA2>16 41 2 10 21]47 dc[<1306130FA3
497EA3497E1337A2EB77E01363A2EBE3F013C1A200017F1380A248B47EA2EB007C48137E000613
3EA2001F133F39FFC1FFF0A2>28 28 1 0 31]65 dc[<B512C014F0380F80F8147C143C143EA5
147C14F8EBFFF014E0EB80F8147C143E141E141FA5143EA214FCB512F814E0>24 28 2 0 29]
66 dc[<90381F8080EBFFE13803F03B3807C00F380F0007121E003E1303123C007C1301127812
F891C7FCA70078EB0180127C123C003EEB0300121E6C13063807C00C3803F0383800FFF0EB1FC0
>25 28 2 0 30]67 dc[<B512C014F0380F80FC143E8080EC078015C01403A215E0A815C0A214
071580140F1500143E14FCB512F014C0>27 28 2 0 32]68 dc[<B512FCA2380F803C141C140C
140E14061383A31400138713FFA213871383A21403A213801406A3140E141E147CB512FCA2>24
28 2 0 28]69 dc[<90381F8080EBFFE13803F03B3807C00F380F0007121E003E1303123C007C
1301127812F891C7FCA5903801FFF0A23978000F80127C123C123E121E7EEA07C03803F03F3800
FFF3EB1FC0>28 28 2 0 33]71 dc[<39FFF87FE0A2390F803E0014185C14705CEB81C0EB8380
91C7FC1386138F139FEBBF8013EFEBE7C0EBC7E01383801381EB80F8A2147C147E143E143F39FF
F9FFF0A2>28 28 2 0 32]75 dc[<EAFFFCA2EA0F80AF1418A4143814301470A2EB81F0B5FCA2>
21 28 2 0 26]76 dc[<3AFFC001FF80A23A0FE003F800A3380DF006A3380CF80CA3EB7C18A3EB
3E30A3EB1F60A3EB0FC0A3EB0780A2121E3AFFC30FFF80A2>33 28 2 0 38]77 dc[<EB3F8038
01FFF03803E0F83807803C48487E001E7F48EB0780A2007C14C00078130300F814E0A8007CEB07
C0A2003C1480003E130F001E14006C131E6C6C5A3803E0F86CB45A38003F80>27 28 2 0 32]
79 dc[<B5128014E0380F80F01478143C143EA6143C147814F0EBFFE01480EB8000AAEAFFF8A2>
23 28 2 0 28]80 dc[<B5FC14E0380F81F0EB807880143EA5143C5CEB81F0EBFFE05CEB83E0EB
81F0EB80F8A71530147C39FFF83FE0EC0FC0>28 28 2 0 31]82 dc[<3807E080EA1FF9EA3C1F
EA7807EA700312F01301A26CC7FCA2B4FCEA7FF0EA3FFC6C7E6C7E00031380EA003FEB07C0A213
0312C0A2148012E038F00700EAFC0FEACFFCEA83F8>18 28 2 0 23]83 dc[<007FB512C0A238
781F03007013010060130000E014E000C01460A400001400B03807FFFCA2>27 28 1 0 30]84
dc[<EA1FE0EA3FF8EA7C3C7FA212381200EA07FE121FEA3C1E127812F01460A2133E38787FE038
3FFFC0380F8F80>19 18 1 0 21]97 dc[<12FEA2121EA9137EEA1FFFEB8780381E01C014E013
0014F0A614E0130114C0381F8780381DFF00EA187C>20 29 1 0 23]98 dc[<EA03F0EA0FF8EA
1E7C12381278EA7038EAF000A612781306123CEA1E0CEA0FF8EA03E0>15 18 1 0 18]99 dc[<
EB3F80A21307A9EA03E7EA0FFFEA1E1FEA38071278127012F0A612701278EA380FEA1E1F380FF7
F0EA07E7>20 29 1 0 23]100 dc[<EA03E0EA0FF0EA1C38EA381CEA781EEA700EEAFFFEA2EAF0
00A41270EA7806123CEA1E0CEA0FF8EA03E0>15 18 1 0 18]101 dc[<137CEA01FEEA03DFEA07
9FEA0F1F130E1300A5EAFFE0A2EA0F00AEEA7FF0A2>16 29 0 0 13]102 dc[<3807E380380FFF
C0EA3C3D38381D8038781E00A4EA381CEA3C3CEA3FF0EA37E00070C7FCA2EA3FF813FE6C7E4813
80387007C0EAE001A438700380383C0F00EA1FFEEA07F8>18 27 1 9 21]103 dc[<12FEA2121E
A9137E13FFEA1F8FEB0780121EAC38FFCFF0A2>20 29 1 0 23]104 dc[<121C123EA3121CC7FC
A612FEA2121EAEEAFFC0A2>10 29 0 0 11]105 dc[<12FEA2121EA9EB7FC0A2EB3E0013185B5B
13E0121F7FA2EA1E78137C133C133E131E131F38FF9FE0A2>19 29 1 0 22]107 dc[<12FEA212
1EB3A7EAFFC0A2>10 29 0 0 11]108 dc[<39FE3E07C09038FF9FF0381F87B0903803E078A200
1E13C0AB39FFCFF9FFA2>32 18 1 0 35]109 dc[<EAFE7E13FFEA1F8FEB0780121EAC38FFCFF0
A2>20 18 1 0 23]110 dc[<EA03F0EA0FFCEA1E1EEA380700781380EA700300F013C0A6007013
80EA780700381300EA1E1EEA0FFCEA03F0>18 18 1 0 21]111 dc[<EAFE7EB5FC381F8780381E
03C0EB01E0A2EB00F0A6EB01E0A2EB03C0381F8780EBFF00EA1E7C90C7FCA6EAFFC0A2>20 26 1
8 23]112 dc[<EAFFE013F0EA1FF8121EA213701300AAEAFFE0A2>13 18 1 0 16]114 dc[<EA
1FB0EA3FF0EA7070EAE030A2EAF00012FEEA7FC013E0EA1FF0EA07F8EA0078EAC038A212E0EAF0
70EAFFE0EA8F80>13 18 1 0 16]115 dc[<1206A4120EA2121E123EEAFFE0A2EA1E00A81330A5
EA0E60EA0FE0EA03C0>12 26 1 0 16]116 dc[<38FE3F80A2EA1E07AC130FEA0E1F380FF7F0EA
03E7>20 18 1 0 23]117 dc[<38FF8FE0A2381E0780EB0300EA0F06A3EA078CA213DCEA03D8A2
13F86C5AA26C5AA3>19 18 1 0 22]118 dc[<39FF3FCFE0A2391E0F0780EC0300A2000F1386A2
131B38079BCCA213B13803F1F8A213E000015BA2EBC07000001360>27 18 1 0 30]119 dc[<38
7FCFF0A2380F878038078600EA03CC13DCEA01F86C5AA2137813FC1201139EEA031F487E380F07
8038FF9FF8A2>21 18 0 0 22]120 dc[<38FF8FE0A2381E0780EB0300EA0F06A3EA078CA213DC
EA03D8A213F86C5AA26C5AA35BA21270EAF98012C100C7C7FC127E123C>19 26 1 8 22]121 dc
[<EA7FFCA2EA7878EA70F8EA60F0EA61E0126313C0EA0780138CEA0F0C121FEA1E1CEA3C18127C
EA7878EAFFF8A2>14 18 1 0 18]122 dc dfe /fp 128 df[<EB0380497EA3497EA2497EA3EB
3BF8A2EB7BFC1371A2EBE0FEA200017F497EA248B51280A24814C0EB001FA24814E039FFE0FFFE
A3>31 28 2 0 36]65 dc[<EA07F8EA1FFE383F1F80130F14C0121E120CEA03FF121FEA3F8FEA
7E0F12FCA3131F387E3FF8EA3FF7EA0FC3>21 18 1 0 23]97 dc[<B47EA3121FA8EB9F80EBFF
E0EBE1F0EB80F8147CA2147EA6147CA214F8EBE1F0381EFFE0381C1F80>23 29 1 0 27]98 dc[
<EA03F8EA0FFEEA1F3F123E127C131EEAFC0C90C7FCA5127C387E0380123E381F0700EA0FFEEA
03F8>17 18 2 0 21]99 dc[<EAFF3C137FEBDF80EA1F9FA2EB8F0013861380A8EAFFF8A3>17
18 1 0 20]114 dc[<EA0FD8EA3FF8EA7078EAF038A2EAF800EAFFC013F0EA7FF8123FEA1FFC12
01EAE03CA212F0EAF878EAFFF0EACFC0>14 18 2 0 19]115 dc[<EA0380A41207A2120FA2EA3F
FC12FFA2EA1F80A8139CA4EA0F98EA07F8EA03E0>14 26 1 0 19]116 dc dfe /fq 128 df[<
EB0FC0EB3FE0EBF8703801E0783803C0F8A2EA0780147091C7FCA6B512F8A2EA07801478B0397F
E1FF80A2>25 35 0 0 27]12 dc[<127812FCA212FEA2127E1206A3120CA2121C121812301270
1260>7 16 4 10 14]44 dc[<127812FCA41278>6 6 4 0 14]46 dc[<B512F814FF3907C01F80
EC07C015E0140315F0A515E01407EC0FC0EC1F8090B512005C9038C01F80EC07C0EC03E015F014
0115F8A6EC03F0A2EC07E0EC0FC0B6120014FC>29 34 2 0 35]66 dc[<90380FE01090383FF8
309038FC0E703901E003F03807C001EA0F8090C7FC5A003E1470A2007E1430127CA212FC1500A7
007C1430A2127E123E15607E6C14C07F3907C001803901F003003800FC0EEB3FFCEB0FE0>28 34
3 0 35]67 dc[<B512F014FE3807C01FEC0FC01403EC01E015F0EC00F8A215FC157CA3157EA915
7CA315F8A2EC01F015E01403EC07C0EC1F00B512FE14F8>31 34 2 0 37]68 dc[<B612C0A238
07C00F14031401140015E0A215601460A3150014E013C113FFA213C113C01460A21518A2140015
30A4157015F01401EC07E0B6FCA2>29 34 2 0 33]69 dc[<39FFFE7FFFA23907C003E0AD90B5
FCA2EBC003AF39FFFE7FFFA2>32 34 2 0 37]72 dc[<B512F014FC3807C03FEC0F80A2EC07C0
A215E0A515C0A2EC0F80A2EC3F00EBFFFC14F001C0C7FCADEAFFFEA2>27 34 2 0 33]80 dc[<
3803F020380FFC60381E0FE0EA3803EA7801EA700012F01460A36C1300A2127CEA7FC0EA3FFC13
FF6C1380000713C0C6FCEB0FE01303EB01F0A2130012C0A36C13E0A2EAF00100F813C038FE0780
38C7FF00EA81FC>20 34 3 0 27]83 dc[<39FFFE0FFFA23907C001F8EC0060B3A5000314C07F
0001EB018012009038F00300EB3C0EEB1FFCEB07F0>32 34 2 0 37]85 dc[<387FFFFEA2EB00
7C127C007013F8130100E013F0130300C013E0EB07C0A2EB0F80EA001F14005B133E5BA25B1201
EBF003120313E0EA07C0A2380F8007121FEB000648130E123E48133E14FEB5FCA2>24 34 3 0
30]90 dc[<EA1FE0EA3FF8EA7C3C7F7F12381200A2EA03FF120FEA3F0F127CA212F81418A3EA78
1F387C3FB8383FE7F0380F83C0>21 21 2 0 24]97 dc[<EA01FEEA07FF380F0F80121E123C38
7C07000078C7FC12F8A7127C14C0123C381E0180380F8300EA07FEEA01F8>18 21 2 0 22]99
dc[<EB01E0131FA213031301AAEA03F1EA07FDEA1F07EA3E03EA3C011278A212F8A71278A2123C
1303381F0FF0380FFDFEEA03F1>23 35 2 0 27]100 dc[<EA01FCEA07FF380F0F80381E07C0EA
3C03007C13E0EA7801B5FCA200F8C7FCA51278007C1360123C6C13C0380F83803807FF00EA00FC
>19 21 1 0 22]101 dc[<131E137F3801E78013CF1203380787001380A8EAFFF8A2EA0780B1EA
7FFCA2>17 35 0 0 15]102 dc[<3803F0F0380FFFF8381E1F38383C0F301400007C1380A4003C
1300A2EA1E1EEA1FFCEA33F00030C7FCA21238EA3FFEEBFFC06C13E04813F0EA78013870007848
1338A4007013706C13E0381E03C0380FFF803801FC00>21 32 1 11 24]103 dc[<120E121F5A
A27E120EC7FCA7120FB4FCA2121F7EAFEAFFE0A2>11 34 0 0 13]105 dc[<13F0EA01F8A4EA00
F01300A71378EA07F8A212001378B3A31270EAF87013F0EAF9E0EA7FC0EA1F00>13 44 -3 10
15]106 dc[<120FB4FCA2121F7EAAEB0FFCA2EB03E01480EB0700130E5B5B137813FC13BE131E
131FEB0F80130714C0130314E014F038FFE7FEA2>23 35 1 0 26]107 dc[<120FB4FCA2121F7E
B3ABEAFFF0A2>12 35 0 0 13]108 dc[<390F0FC07E39FF3FE1FF9039E0F707803A1FC07E03C0
380F807CEB0078AE3AFFF3FF9FFCA2>38 21 1 0 41]109 dc[<380F1F8038FF7FC0EBE1E0381F
C0F0EA0F801300AE38FFF3FFA2>24 21 1 0 27]110 dc[<EA01FCEA07FF380F0780381E03C038
3C01E0387800F0A200F813F8A7007813F0EA7C01003C13E0381E03C0380F07803807FF00EA01FC
>21 21 1 0 24]111 dc[<380F1F8038FF7FE0EBE1F0380F80F8EB0078147CA2143EA7147CA214
78EB80F013E1EB7FC0EB1F0090C7FCA8EAFFF0A2>23 31 1 10 27]112 dc[<EA0F7CEAFFFE13
DFEA1F9F120F130E1300ADEAFFF8A2>16 21 1 0 19]114 dc[<EA0FD8EA3FF8EA7078EA601812
E0A2EAF00012FCEA7FC0EA3FE0EA1FF0EA0FF8EA007CEAC03C131C12E0A2EAF018EAF838EAFFF0
EA8FC0>14 21 2 0 19]115 dc[<1203A45AA35A5A5AEAFFF8A2EA0F00AA130CA6EA0798EA03F0
EA01E0>14 31 1 0 19]116 dc[<000F13F0EAFF0FA2EA1F01EA0F00AC1301A2380787F83803FE
FFEA01F8>24 21 1 0 27]117 dc[<38FFE3FEA2381F00F86C1360A2380780C0A213C03803C180
A213E300011300A2EA00F6A213FE137CA31338A2>23 21 1 0 26]118 dc[<38FFE3FEA2381F00
F86C1360A2380780C0A213C03803C180A213E300011300A2EA00F6A213FE137CA31338A21330A2
1370136012F85B12F9EAFB80007FC7FC123E>23 31 1 10 26]121 dc dfe /fr 128 df[<14FF
01077F90381F81C090383E006090387801F0EBF803EA01F0A248486C5A6E5A92C7FCA9B612F0A3
3803E0031401B3A63A7FFE1FFF80A3>33 50 1 0 36]12 dc[<14034A7EA34A7EA34A7EA3EC33
F0A2EC73F81461A2ECE1FC14C0A249487E157EA2903803007F81A201066D7EA2010E80010C130F
A2011C8001181307011FB5FC4980A2903830000349801501A2496D7EA34848147EA20003157F00
0781486CEC7F80D8FFF8903807FFFCA3>46 49 2 0 50]65 dc[<91383FE001903901FFF80301
0713FE90391FF00F0790393F80038F017EC712CF01F8147F4848143F4848141F485A000F150F5B
48C812075AA2003E1503127EA3481500AB127E1603A2123E123F16076C15066C7E6D140E000715
0C6C6C14186C6C14386C6C1430017E14E090393F8001C090391FF00F800107B51200010113FC90
38003FE0>40 49 4 0 48]67 dc[<B512E0A3D803F8C8FC5BB3A81660A416E016C0A31501A315
031507150FED1F8015FFB7FCA3>35 49 3 0 41]76 dc[<D8FFF8ED3FFE6D157FA20003178001
7E15DFA36DEC019FA36D6CEB031FA36D6C1306A26D6C130CA36D6C1318A36D6C1330A36D6C1360
A3027E13C0A291383F0180A391381F8300A3EC0FC6A3EC07ECA3EC03F8A26E5AEA0780EA0FC03C
FFFC00E007FFFEA3>55 49 3 0 61]77 dc[<B612E015FC15FF3A03F0003F80ED0FC0ED07E0ED
03F0150116F8150016FCA716F8150116F01503ED07E0ED0FC0ED7F8090B5EAFE0015F801F0C8FC
B3A2B512C0A3>38 49 3 0 45]80 dc[<EA03FE380FFFC0381E03E0383F00F01478147C001E13
3C000C133EC7FCA4EB03FE137F3801FF3EEA07F0EA0FC0EA1F005A127EA248140CA3147EA2007E
13FE393E01FF18391F871FF8390FFE0FF03903F807C0>30 31 3 0 33]97 dc[<EB1FF0EBFFFC
3801F01E3807C03FEA0F80130048131E003E130C91C7FC127E127C12FCA9127C127E123E003FEB
01807E390F8003006D5A3807E00E3801F81C3800FFF0EB1FC0>25 31 2 0 29]99 dc[<EC01F0
143FA314031401AEEB1FC1EBFFF13801F03D3803C00F380F80031300481301123EA2127E127CA2
12FCA8127CA27EA2121E001F1303380F80073907C00DF83A03F039FF803800FFE1EB3F81>33 50
2 0 37]100 dc[<EB3F80EBFFE03803E0F83807807C48487E5A001E7F123E127E007C1480140F
12FCB6FCA200FCC8FCA6127C127E123EEC01807E6CEB0300EB80063807E00E3801F83C3800FFF0
EB1FC0>25 31 2 0 29]101 dc[<EB03F0EB0FF8EB3E3CEB787E13F8EA01F0143CEBE018000313
00ABB512C0A33803E000B3A7387FFF80A3>23 50 1 0 20]102 dc[<013F13F83901FFE3FC3903
E1FF3C3807807C000F1418391F003E00A248133FA76C133EA26C6C5A00071378EBE1F0380DFFE0
D80C3FC7FC001CC8FCA4120FEBFFF86C13FF6C1480000F14C0391E000FE048EB01F048130015F8
481478A5007814F0A2003EEB03E06CEB07C03907E03F003801FFFC38003FE0>30 46 2 15 33]
103 dc[<1207EA0F80EA1FC0A3EA0F80EA0700C7FCAAEA07C012FFA3120F1207B3A5EAFFFCA3>
14 48 1 0 17]105 dc[<EA07C012FFA3120F1207B3B3A6EAFFFEA3>15 50 1 0 17]108 dc[<
2607C0FEEB3F803BFFC3FF80FFE0903ACE07C381F0903ADC03E700F8D80FD813E62707F001FC13
7C01E05BA201C05BB3A23CFFFE3FFF8FFFE0A3>51 31 2 0 55]109 dc[<3807C0FE39FFC3FF80
9038CE07C09038DC03E0EA0FD83907F001F013E0A213C0B3A23AFFFE3FFF80A3>33 31 2 0 37]
110 dc[<EB1FC0EBFFF83801F07C3807C01F390F800F80391F0007C0001E1303003E14E0A248EB
01F0A300FC14F8A8007C14F0A26CEB03E0A2001E14C0001F1307390F800F803907C01F003801F0
7C6CB45AEB1FC0>29 31 2 0 33]111 dc[<3807C0FE39FFC7FF809038CE07E09038D803F0390F
F000F86C487F49137C157E153E153FA2ED1F80A816005DA2153E157E157C6D5B6D485A9038D803
E09038CE0FC09038C7FF80D9C1FCC7FC01C0C8FCABEAFFFEA3>33 45 2 14 37]112 dc[<3807
C3E038FFCFF0EBDC78EBF0FC120FEA07E0147814005BB3A2B5FCA3>22 31 2 0 25]114 dc[<38
01FC10380FFF30381E03F0EA380000781370127000F01330A37E6C1300EA7F8013FC383FFF806C
13C0000713E0000113F038000FF8130138C0007CA2143C7EA27E14386C13786C13F038EF03E038
C3FFC03880FE00>22 31 2 0 26]115 dc[<1360A513E0A31201A212031207120F381FFFE0B5FC
A23803E000AF1430A83801F060A23800F8C0EB7F80EB1F00>20 44 1 0 25]116 dc[<3AFFFC03
FF80A33A07E000FC00157000031460A26D13E000015CA26C6C485AA213FCD97C03C7FCA2EB7E07
EB3E06A26D5AA2149CEB0F98A2EB07F0A36D5AA36D5AA25CA2130391C8FCA213061278EAFC0E13
0C131C5BEA7870EA3FE0EA0F80>33 45 1 14 35]121 dc dfe end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
 TeXDict begin @letter
%%EndSetup
%%Page: 15 1
 bop 146 117 a fl(As)17 b(a)g(\014nal)g(note,)g(w)o(e)g(ha)o(v)o(e)f(receiv)o
(ed)i(feedbac)o(k)f(from)f(C)h(application)f(programm)o(ers)e(who)j(ha)o(v)o
(e)75 173 y(used)22 b fk(mprof)p fl(.)38 b(They)22 b(rep)q(ort)f(that)g(the)g
(memory)e(leak)i(table)g(and)h(the)f(allo)q(cation)f(bin)h(table)g(are)75 229
y(b)q(oth)e(extremely)e(useful,)i(while)f(the)g(direct)h(allo)q(cation)d(tabl\
e)i(and)h(the)g(allo)q(cation)d(call)i(graph)g(are)75 286 y(harder)f(to)g(und\
erstand)h(and)f(also)f(less)h(useful.)27 b(Considering)16 b(the)h(execution)h
(o)o(v)o(erhead)f(asso)q(ciated)75 342 y(with)g(the)g(allo)q(cation)f(call)g
(graph)h(and)h(the)g(complexit)o(y)d(of)i(the)g(table,)g(it)g(is)g(questionab\
le)g(whether)75 399 y(the)f(allo)q(cation)e(call)h(graph)h(will)f(ev)o(er)h
(b)q(e)g(as)g(helpful)g(C)g(programm)o(ers)d(as)j(the)g(memory)d(leak)j(table\
.)75 455 y(On)j(the)f(other)g(hand,)h(with)e(automatic)f(storage)h(reclamatio\
n,)f(the)i(memory)e(leak)i(table)f(b)q(ecomes)75 512 y(unnecessary)l(.)j(Y)l
(et)14 b(for)g(memory)d(in)o(tensiv)o(e)i(languages,)g(suc)o(h)h(as)f(Lisp,)h
(the)g(need)h(for)e(e\013ectiv)o(e)g(use)h(of)75 568 y(the)f(memory)d(is)j
(more)e(imp)q(ortan)o(t,)g(and)i(to)q(ols)f(suc)o(h)h(as)f(the)h(allo)q(catio\
n)f(call)g(graph)g(migh)o(t)f(pro)o(v)o(e)h(v)o(ery)75 625 y(useful.)24 b(Bec\
ause)17 b(w)o(e)f(ha)o(v)o(e)g(limited)e(feedbac)o(k)j(from)e(Lisp)h(programm\
ers)d(using)j fk(mprof)p fl(,)g(w)o(e)g(cannot)75 681 y(rep)q(ort)f(their)g
(resp)q(onse)g(to)g(this)f(to)q(ol.)75 849 y fm(References)75 969 y fl([1])22
b(Da)o(vid)e(R.)h(Barac)o(h,)g(Da)o(vid)f(H.)h(T)l(aenzer,)i(and)e(Rob)q(ert)
g(E.)g(W)l(ells.)36 b(A)21 b(tec)o(hnique)g(for)g(\014nding)146 1026 y(storag\
e)16 b(allo)q(cation)g(errors)h(in)g(C-language)g(programs.)25 b fb(A)o(CM)17
b(SIGPLAN)g(Notic)n(es)p fl(,)g(17\(5\):16{)146 1082 y(23,)d(Ma)o(y)g(1982.)
75 1176 y([2])22 b(Susan)16 b(L.)g(Graham,)e(P)o(eter)i(B.)g(Kessler,)g(and)g
(Marshall)e(K.)i(McKusic)o(k.)23 b(An)16 b(execution)g(pro\014ler)146 1233 y
(for)e(mo)q(dular)g(programs.)k fb(Softwar)n(e)e(Pr)n(actic)n(e)f(&)i(Exp)n
(erienc)n(e)p fl(,)c(13:671{685,)f(1983.)75 1326 y([3])22 b(P)o(aul)c(N.)g
(Hil\014nger)g(and)h(Phillip)f(Collela.)29 b(FIDIL:)19 b(A)f(language)g(for)h
(scien)o(ti\014c)f(programmi)o(ng.)146 1383 y(T)l(ec)o(hnical)c(Rep)q(ort)h
(UCRL-PREPRINT)h(98057,)d(La)o(wrence)i(Liv)o(ermore)e(National)g(Lab)q(orato\
ry)l(,)146 1439 y(Jan)o(uary)i(1988.)75 1533 y([4])22 b(Da)o(vid)12 b(A.)i
(Mo)q(on.)19 b(Garbage)12 b(collection)h(in)g(a)h(large)f(Lisp)g(system.)18 b
(In)d fb(Confer)n(enc)n(e)d(R)n(e)n(c)n(or)n(d)j(of)g(the)146 1590 y(1984)j
(A)o(CM)e(Symp)n(osium)i(on)f(LISP)f(and)h(F)m(unctional)f(Pr)n(o)n(gr)n(ammi\
ng)p fl(,)g(pages)g(235{246,)f(Austin,)146 1646 y(T)l(exas,)f(August)h(1984.)
75 1740 y([5])22 b(F)l(red)14 b(Ob)q(ermeier)g(and)h(Randy)g(Katz.)k(EPO)o
(XY:)c(An)f(electrical)g(and)g(ph)o(ysical)g(la)o(y)o(out)f(optimizer)146 1796
y(that)h(considers)h(c)o(hanges.)k(T)l(ec)o(hnical)c(Rep)q(ort)g(UCB/CSD)g
(87/388,)d(UCBCS,)j(No)o(v)o(em)o(b)q(er)e(1987.)75 1890 y([6])22 b(John)16 b
(Ousterhout.)21 b(A)15 b(switc)o(h-lev)o(el)g(timing)e(v)o(eri\014er)i(for)g
(digital)f(MOS)i(VLSI.)22 b fb(IEEE)15 b(T)m(r)n(ansac-)146 1947 y(tions)g
(on)h(CAD)p fl(,)f(CAD-4\(3\),)e(July)j(1985.)75 2040 y([7])22 b(P)o(aul)e
(Ro)o(vner.)38 b(On)22 b(adding)f(garbage)g(collection)f(and)h(run)o(time)f
(t)o(yp)q(es)h(to)g(a)g(strongly-t)o(yp)q(ed,)146 2097 y(statically)15 b(c)o
(hec)o(k)o(ed,)k(concurren)o(t)f(language.)26 b(T)l(ec)o(hnical)18 b(Rep)q
(ort)g(CSL-84-7,)g(Xero)o(x)f(P)o(alo)g(Alto)146 2153 y(Researc)o(h)e(Cen)o
(ter,)g(P)o(alo)f(Alto,)g(California,)e(July)k(1985.)75 2537 y 720 2 v 42 x fg
(every)10 b fj(accoun)o(ted)k(for)e(13%)h(of)f(the)h(memory)e(allo)q(cated.)
17 b(W)m(e)12 b(rewrote)h fg(every)d fj(so)j(it)e(w)o(ould)i(not)g(allo)q(cat\
e)f(an)o(y)h(memory)m(,)75 2625 y(and)h(decreased)g(the)f(memory)e(consumptio\
n)j(of)e(the)h(program)g(b)o(y)h(13%.)952 2750 y fl(15)p eop
%%Page: 14 2
 bop 75 117 a fm(5)69 b(Related)22 b(W)-6 b(ork)75 246 y fk(Mprof)16 b fl(is)
h(similar)d(to)j(the)g(to)q(ol)f fk(gprof)g fl([2],)g(a)h(dynamic)f(execution)
h(pro\014ler.)26 b(Because)17 b(some)f(of)h(the)75 303 y(problems)j(of)g(in)o
(terpreting)g(the)i(dynamic)e(call)g(graph)h(are)g(the)g(same,)g(w)o(e)g(ha)o
(v)o(e)f(b)q(orro)o(w)o(ed)h(these)75 359 y(ideas)h(from)f fk(gprof)p fl(.)42
b(Also,)23 b(w)o(e)g(ha)o(v)o(e)f(used)h(ideas)g(from)e(the)h(user)h(in)o(ter\
face)f(of)g fk(gprof)g fl(for)g(t)o(w)o(o)75 416 y(reasons:)c(b)q(ecause)c
(the)f(information)e(b)q(eing)i(displa)o(y)o(ed)f(is)h(quite)g(similar)d(and)
j(b)q(ecause)h(users)f(familiar)75 472 y(with)k fk(gprof)h fl(w)o(ould)f(prob\
ably)g(also)g(b)q(e)i(in)o(terested)e(in)h fk(mprof)f fl(and)i(w)o(ould)e(b)q
(ene\014t)i(from)d(a)i(similar)75 529 y(presen)o(tation.)146 612 y(Barac)o
(h,)e(T)l(aenzer,)i(and)f(W)l(ells)g(dev)o(elop)q(ed)h(a)e(to)q(ol)h(for)f
(\014nding)i(storage)e(allo)q(cation)f(errors)h(in)h(C)75 669 y(programs)11 b
([1)o(].)19 b(Their)13 b(approac)o(h)g(concen)o(trated)g(on)g(\014nding)h(t)o
(w)o(o)e(sp)q(eci\014c)i(storage)e(allo)q(cation)f(errors:)75 725 y(memory)g
(leaks)j(and)g(duplicate)f(frees.)20 b(They)14 b(mo)q(di\014ed)f fk(malloc)g
fl(and)h fk(free)f fl(so)h(that)f(ev)o(ery)g(time)g(that)75 782 y(these)18 b
(functions)g(w)o(ere)g(called,)g(information)e(ab)q(out)i(the)g(memory)e(blo)
q(c)o(k)i(b)q(eing)g(manipulated)f(w)o(as)75 838 y(recorded)i(in)g(a)g(\014le\
.)30 b(A)19 b(program)e(that)h(examines)g(this)g(\014le,)i fk(prleak)p fl(,)e
(prin)o(ts)g(out)h(whic)o(h)g(memory)75 894 y(blo)q(c)o(ks)14 b(w)o(ere)h(nev)
o(er)f(freed)h(or)f(w)o(ere)h(freed)g(t)o(wice.)k(This)14 b(approac)o(h)g(di\
\013ers)g(from)f fk(mprof)h fl(in)g(t)o(w)o(o)f(w)o(a)o(ys.)75 951 y(First,)
21 b fk(mprof)f fl(pro)o(vides)h(more)f(information)e(ab)q(out)j(the)g(memory)
e(allo)q(cation)g(of)i(programs)e(than)75 1007 y fk(prleak)p fl(,)g(whic)o
(h)g(just)g(rep)q(orts)g(on)g(storage)f(errors.)32 b(Second,)21 b fk(prleak)d
fl(generates)h(extremely)f(large)75 1064 y(in)o(termediate)c(\014les)i(that)f
(are)h(comparable)f(in)g(size)h(to)g(the)g(total)f(amoun)o(t)f(of)h(memory)f
(allo)q(cated)h(b)o(y)75 1120 y(the)h(program)e(\(often)i(megab)o(ytes)f(of)g
(data\).)23 b(Although)15 b fk(mprof)h fl(records)g(more)f(useful)h(informati\
on,)75 1177 y(the)f(data)g(\014les)g(it)f(generates)h(are)g(of)g(mo)q(dest)f
(size)h(\(see)g(the)h(table)e(ab)q(o)o(v)o(e\).)75 1353 y fm(6)69 b(Conclusio\
ns)75 1482 y fl(W)l(e)12 b(ha)o(v)o(e)g(implemen)o(ted)e(a)i(memory)d(allo)q
(cation)h(pro\014ling)i(program)e(for)h(b)q(oth)i(C)e(and)i(Common)c(Lisp.)75
1539 y(Our)17 b(example)e(has)h(sho)o(wn)g(that)f fk(mprof)h fl(can)g(b)q(e)h
(e\013ectiv)o(e)e(in)h(elucidating)g(the)g(allo)q(cation)e(b)q(eha)o(vior)75
1595 y(of)g(a)g(program)f(so)h(that)g(a)g(programmer)d(can)k(detect)f(memory)
e(leaks)i(and)h(iden)o(tify)f(ma)s(jor)e(sources)i(of)75 1652 y(allo)q(cation\
.)146 1735 y(Unlik)o(e)h fk(gprof)p fl(,)h fk(mprof)f fl(records)h(ev)o(ery)h
(caller)e(in)h(the)g(call)g(c)o(hain)g(ev)o(ery)g(time)e(an)j(ob)s(ject)e(is)
h(allo-)75 1792 y(cated.)27 b(The)17 b(o)o(v)o(erhead)g(for)g(this)g(recordin\
g)g(is)g(large)g(but)g(not)g(impractically)e(so,)i(b)q(ecause)h(w)o(e)g(tak)o
(e)75 1848 y(adv)m(an)o(tage)13 b(of)g(the)g(fact)g(that)g(a)g(call)g(c)o(hai\
n)g(c)o(hanges)g(little)f(b)q(et)o(w)o(een)i(allo)q(cations.)j(Moreo)o(v)o
(er,)12 b(record-)75 1905 y(ing)i(this)f(information)f(do)q(es)i(not)g(requir\
e)g(large)g(amoun)o(ts)e(of)i(memory)d(b)q(ecause)16 b(there)e(are)g(relativ)
o(ely)75 1961 y(few)k(unique)g(caller/callee)e(address)i(pairs)f(on)h(call)f
(c)o(hains)g(in)h(whic)o(h)g(allo)q(cation)e(tak)o(es)h(place,)h(ev)o(en)75
2018 y(in)e(v)o(ery)g(large)f(programs.)21 b(W)l(e)16 b(ha)o(v)o(e)g(measured)
f(the)i(o)o(v)o(erhead)f(of)f fk(mprof)p fl(,)h(and)g(\014nd)h(that)f(t)o(ypi\
cally)75 2074 y(it)j(slo)o(ws)f(applications)g(b)o(y)h(a)h(factor)e(of)h(2{4)
g(times,)f(and)i(adds)f(up)h(to)f(33%)g(to)g(the)g(memory)e(allo-)75 2131 y
(cated)e(b)o(y)f(the)h(application.)k(Because)c fk(mprof)f fl(is)g(in)o(tende\
d)h(as)g(a)f(dev)o(elopmen)o(t)g(to)q(ol,)f(these)i(costs)f(are)75 2187 y(acc\
eptable.)146 2271 y(Because)e fk(mprof)e fl(merges)g(cycles)i(caused)f(b)o
(y)h(recursiv)o(e)f(function)g(calls,)g fk(mprof)f fl(ma)o(y)g(b)q(e)i(ine\
\013ectiv)o(e)75 2327 y(for)j(programs)f(with)h(large)f(cycles)i(in)g(their)f
(call)g(graph.)21 b(Only)16 b(with)f(more)f(data)h(will)f(w)o(e)i(b)q(e)g(abl\
e)g(to)75 2384 y(decide)h(if)e(man)o(y)f(programs)g(\(esp)q(ecially)h(those)h
(written)f(in)h(Lisp\))f(con)o(tain)g(so)h(man)o(y)e(recursiv)o(e)i(calls)75
2440 y(that)e(cycle)h(merging)e(mak)o(es)g fk(mprof)h fl(ine\013ectiv)o(e.)k
(Nev)o(ertheless,)d fk(mprof)e fl(has)i(already)f(b)q(een)i(e\013ectiv)o(e)75
2497 y(in)f(detecting)g(K)o(CL)g(system)f(functions)h(that)g(allo)q(cate)f
(memory)e(extraneously)l(.)1484 2480 y fe(3)75 2582 y 720 2 v 127 2609 a fd
(3)144 2625 y fj(Using)k fg(mprof)p fj(,)d(w)o(e)i(noted)h(that)g(for)f(a)h
(large)f(ob)r(ject-orien)o(ted)h(program)f(written)g(in)h(K)o(CL,)e(the)i(sys\
tem)e(function)952 2750 y fl(14)p eop
%%Page: 13 3
 bop 129 126 a 1693 2 v 128 183 a 2 57 v 856 w 2 57 v 2 57 v 1357 166 a fl
(Cost)1820 183 y 2 57 v 985 185 a 837 2 v 128 239 a 2 57 v 347 222 a(Resource)
16 b(Description)984 239 y 2 57 v 2 57 v 1009 222 a fk(example)1201 239 y 2 57
v 2 57 v 1226 222 a(fidilrt)1417 239 y 2 57 v 2 57 v 1452 222 a(epoxy)1604 239
y 2 57 v 2 57 v 1629 222 a(crystal)1820 239 y 2 57 v 129 241 a 1693 2 v 128
297 a 2 57 v 154 281 a fl(Num)o(b)q(er)e(of)h(allo)q(cations)984 297 y 2 57 v
1040 281 a(100000)1201 297 y 2 57 v 1280 281 a(77376)1417 297 y 2 57 v 1443
281 a(306295)1604 297 y 2 57 v 1683 281 a(31158)1820 297 y 2 57 v 128 354 a 2
57 v 154 337 a(Execution)g(time)e(with)i fk(mprof)f fl(\(seconds\))984 354 y 2
57 v 1096 337 a(62.7)1201 354 y 2 57 v 1290 337 a(132.7)1417 354 y 2 57 v 1476
337 a(188.8)1604 354 y 2 57 v 1693 337 a(134.1)1820 354 y 2 57 v 128 410 a 2
57 v 154 393 a(Execution)h(time)e(with)i fk(mprof-)f fl(\(seconds\))984 410 y
2 57 v 1096 393 a(44.1)1201 410 y 2 57 v 1290 393 a(116.0)1417 410 y 2 57 v
1476 393 a(149.7)1604 410 y 2 57 v 1716 393 a(25.5)1820 410 y 2 57 v 128 467 a
2 57 v 154 450 a(Execution)h(time)e(without)h fk(mprof)h fl(\(seconds\))984
467 y 2 57 v 1096 450 a(17.9)1201 467 y 2 57 v 1290 450 a(107.1)1417 467 y 2
57 v 1499 450 a(52.1)1604 467 y 2 57 v 1716 450 a(13.2)1820 467 y 2 57 v 129
469 a 1693 2 v 128 525 a 2 57 v 154 508 a(Slo)o(wdo)o(wn)f(using)h fk(mprof)
984 525 y 2 57 v 1118 508 a fl(3.5)1201 525 y 2 57 v 1335 508 a(1.2)1417 525 y
2 57 v 1521 508 a(3.6)1604 525 y 2 57 v 1716 508 a(10.1)1820 525 y 2 57 v 128
581 a 2 57 v 154 564 a(Slo)o(wdo)o(wn)f(using)h fk(mprof-)984 581 y 2 57 v
1118 564 a fl(2.5)1201 581 y 2 57 v 1335 564 a(1.1)1417 581 y 2 57 v 1521 564
a(2.9)1604 581 y 2 57 v 1738 564 a(1.9)1820 581 y 2 57 v 129 583 a 1693 2 v
128 640 a 2 57 v 154 623 a(Reduction)g(and)h(displa)o(y)e(time)g(\(seconds\))
984 640 y 2 57 v 1096 623 a(10.3)1201 640 y 2 57 v 1313 623 a(28.8)1417 640 y
2 57 v 1499 623 a(28.3)1604 640 y 2 57 v 1716 623 a(36.8)1820 640 y 2 57 v 129
641 a 1693 2 v 540 718 a ff(T)l(able)j(1:)40 b fo(Execution)16 b(Time)e(Ov)o
(erhead)h(of)e fn(mprof)75 919 y fh(4.2)56 b(Storage)18 b(Consumption)75 1055
y fl(The)h(storage)f(consumption)g(of)h fk(mprof)f fl(is)h(divided)g(in)o(to)
f(the)h(additional)f(memory)e(needed)21 b(b)o(y)e(the)75 1111 y(monitor)c(as)
j(an)g(application)e(executes,)j(and)f(the)g(external)f(storage)f(required)i
(b)o(y)g(the)g(pro\014le)g(data)75 1168 y(\014le.)h(The)12 b(most)e(signi\014\
can)o(t)h(source)h(of)f(memory)f(used)i(b)o(y)g(the)g(monitor)e(is)h(the)h
(data)f(stored)h(with)f(eac)o(h)75 1224 y(ob)s(ject)16 b(allo)q(cated:)k(an)d
(ob)s(ject)e(size)h(and)h(a)f(p)q(oin)o(ter)f(needed)j(to)d(construct)h(the)h
(memory)c(leak)j(table.)75 1281 y(The)k(monitor)d(also)i(uses)g(memory)e(to)i
(record)h(the)f(memory)e(bins)j(and)g(caller/callee)e(b)o(yte)h(coun)o(ts)75
1337 y(and)g(m)o(ust)e(write)g(this)h(information)e(to)i(a)g(\014le)h(when)g
(the)f(application)f(is)i(\014nished.)30 b(W)l(e)19 b(measured)75 1394 y(ho)o
(w)e(man)o(y)f(b)o(ytes)h(of)g(memory)d(and)k(disk)f(space)g(are)g(needed)i
(to)e(store)f(this)h(information.)23 b(T)l(able)17 b(2)75 1450 y(summarizes)c
(the)i(measuremen)o(ts)e(of)h(storage)g(consumption)g(asso)q(ciated)h(with)f
fk(mprof)p fl(.)139 1579 y 1673 2 v 138 1635 a 2 57 v 836 w 2 57 v 2 57 v 1347
1618 a(Cost)1810 1635 y 2 57 v 974 1637 a 837 2 v 138 1691 a 2 57 v 347 1674 a
(Resource)i(Description)974 1691 y 2 57 v 2 57 v 999 1674 a fk(example)1190
1691 y 2 57 v 2 57 v 1216 1674 a(fidilrt)1407 1691 y 2 57 v 2 57 v 1442 1674 a
(epoxy)1593 1691 y 2 57 v 2 57 v 1619 1674 a(crystal)1810 1691 y 2 57 v 139
1693 a 1673 2 v 138 1750 a 2 57 v 164 1733 a fl(Num)o(b)q(er)e(of)h(allo)q
(cations)974 1750 y 2 57 v 1030 1733 a(100000)1190 1750 y 2 57 v 1270 1733 a
(61163)1407 1750 y 2 57 v 1433 1733 a(306295)1593 1750 y 2 57 v 1673 1733 a
(31158)1810 1750 y 2 57 v 138 1806 a 2 57 v 164 1789 a(User)g(memory)e(allo)q
(cated)h(\(Kb)o(ytes\))974 1806 y 2 57 v 1053 1789 a(20000)1190 1806 y 2 57 v
1292 1789 a(2425)1407 1806 y 2 57 v 1478 1789 a(6418)1593 1806 y 2 57 v 1673
1789 a(21464)1810 1806 y 2 57 v 139 1808 a 1673 2 v 138 1864 a 2 57 v 164 1847
a(P)o(er)h(ob)s(ject)f(memory)f(\(Kb)o(ytes\))974 1864 y 2 57 v 1098 1847 a
(781)1190 1864 y 2 57 v 1315 1847 a(477)1407 1864 y 2 57 v 1478 1847 a(2393)
1593 1864 y 2 57 v 1718 1847 a(168)1810 1864 y 2 57 v 138 1921 a 2 57 v 164
1904 a(Other)i(monitor)e(memory)g(\(Kb)o(ytes\))974 1921 y 2 57 v 1108 1904 a
(8.7)1190 1921 y 2 57 v 1302 1904 a(23.3)1407 1921 y 2 57 v 1489 1904 a(52.3)
1593 1921 y 2 57 v 1705 1904 a(17.5)1810 1921 y 2 57 v 138 1977 a 2 57 v 164
1960 a(T)l(otal)h(monitor)f(memory)f(\(Kb)o(ytes\))974 1977 y 2 57 v 1098 1960
a(790)1190 1977 y 2 57 v 1315 1960 a(500)1407 1977 y 2 57 v 1478 1960 a(2445)
1593 1977 y 2 57 v 1718 1960 a(186)1810 1977 y 2 57 v 138 2033 a 2 57 v 164
2017 a(Monitor)h(fraction)h(\(%)h(memory)e(allo)q(cated\))974 2033 y 2 57 v
1144 2017 a(4)1190 2033 y 2 57 v 1338 2017 a(17)1407 2033 y 2 57 v 1524 2017 a
(28)1593 2033 y 2 57 v 1764 2017 a(1)1810 2033 y 2 57 v 139 2035 a 1673 2 v
138 2092 a 2 57 v 164 2075 a(Data)h(\014le)h(size)g(\(Kb)o(ytes\))974 2092 y 2
57 v 1108 2075 a(4.5)1190 2092 y 2 57 v 1325 2075 a(8.1)1407 2092 y 2 57 v
1489 2075 a(28.6)1593 2092 y 2 57 v 1728 2075 a(9.6)1810 2092 y 2 57 v 139
2093 a 1673 2 v 582 2170 a ff(T)l(able)i(2:)40 b fo(Storage)14 b(Consumption)
h(of)e fn(mprof)146 2343 y fl(The)18 b(memory)d(o)o(v)o(erhead)i(of)h fk(mpro\
f)f fl(is)g(small,)f(except)i(that)f(an)h(additional)e(8)h(b)o(ytes)h(of)f
(storage)75 2399 y(are)h(allo)q(cated)f(with)h(ev)o(ery)g(ob)s(ject.)29 b(In)
19 b(programs)d(in)i(whic)o(h)h(man)o(y)d(small)h(ob)s(jects)g(are)h(allo)q
(cated,)75 2456 y(lik)o(e)c fk(epoxy)p fl(,)f fk(mprof)h fl(can)g(con)o(tribu\
te)g(signi\014can)o(tly)f(to)h(the)g(total)f(memory)f(allo)q(cated.)19 b(Nev)
o(ertheless,)75 2512 y(in)13 b(the)g(w)o(orst)e(case,)i fk(mprof)f fl(increas\
es)h(application)e(size)i(b)o(y)g(1/3,)f(and)h(since)g fk(mprof)f fl(is)h(a)f
(dev)o(elopmen)o(t)75 2569 y(to)q(ol,)h(this)h(o)o(v)o(erhead)g(seems)f(accep\
table.)20 b(F)l(rom)13 b(the)h(table)g(w)o(e)g(also)f(see)i(that)e(the)i(data)
f(\014les)g(created)75 2625 y(b)o(y)h fk(mprof)g fl(are)f(quite)h(small)e(\()
p fa(<)j fl(30)e(Kb)o(ytes\).)952 2750 y(13)p eop
%%Page: 12 4
 bop 75 117 a fl(addresses)17 b(to)g(b)q(e)g(mapp)q(ed)g(to)g(sym)o(b)q(olic)
e(function)i(names)f(so)g(that)h(the)g(call)f(stac)o(k)g(can)h(b)q(e)h(prin)o
(ted)75 173 y(at)i(a)g(breakp)q(oin)o(t.)34 b(In)21 b(this)f(case,)h(the)f
(monitor)e(can)j(use)f(the)g(same)f(mec)o(hanism)f(to)i(map)f(return)75 229 y
(addresses)c(to)g(function)g(names.)k(Therefore,)14 b(in)h(Lisp)h(systems)d
(in)i(whic)o(h)g(addresses)g(can)h(b)q(e)g(quic)o(kly)75 286 y(mapp)q(ed)c
(to)g(function)g(names,)f(memory)f(pro\014ling)i(in)g(the)g(st)o(yle)g(of)g fk
(mprof)f fl(is)h(not)g(a)g(di\016cult)g(problem.)75 342 y(In)18 b(systems)e
(in)i(whic)o(h)f(sym)o(b)q(olic)f(names)h(are)g(not)g(a)o(v)m(ailable)f(in)i
(compiled)e(co)q(de,)i(pro\014ling)f(is)g(more)75 399 y(di\016cult.)22 b(F)l
(urthermore,)14 b(man)o(y)h(systems)f(op)q(en-co)q(de)j(imp)q(ortan)o(t)d(all\
o)q(cation)g(functions,)i(lik)o(e)f fk(cons)p fl(.)75 455 y(Because)c(op)q
(en-co)q(ded)h(allo)q(cation)c(functions)i(will)f(not)h(necessarily)g(call)f
(a)h(cen)o(tral)g(allo)q(cation)e(function)75 512 y(\(lik)o(e)15 b fk(alloc)s
15 2 v 13 w(object)p fl(\),)g(suc)o(h)i(allo)q(cations)d(will)h(not)h(b)q(e)g
(observ)o(ed)h(b)o(y)f fk(mprof)p fl(.)22 b(T)l(o)16 b(a)o(v)o(oid)e(suc)o
(h)j(a)f(loss)75 568 y(of)i(information,)e fk(mprof)h fl(should)i(b)q(e)g(use\
d)f(in)h(conjunction)f(with)g(program)e(declarations)h(that)g(will)75 625 y
(force)e(allo)q(cation)e(functions)i(suc)o(h)h(as)f fk(cons)f fl(to)h(b)q(e)h
(co)q(ded)g(out-of-line.)75 814 y fm(4)69 b(Measuremen)n(ts)75 950 y fl(W)l
(e)17 b(ha)o(v)o(e)g(measured)f(the)i(C)f(implemen)o(tat)o(ion)d(of)j fk(mpro\
f)f fl(b)o(y)h(instrumen)o(ting)e(four)i(programs)e(using)75 1007 y fk(mprof)
p fl(.)26 b(The)18 b(\014rst)f(program,)f fk(example)p fl(,)g(is)h(our)h(exam\
ple)e(program)f(with)i(the)h(n)o(um)o(b)q(er)f(of)g(widgets)75 1063 y(allo)q
(cated)g(increased)h(to)f(100,000)f(to)i(increase)f(program)f(execution)i(tim\
e.)27 b(The)18 b(second)g(program,)75 1120 y fk(fidilrt)p fl(,)k(is)e(the)i
(run)o(time)e(library)g(of)h(FIDIL,)g(a)g(programming)d(language)j(for)f(\014\
nite)i(di\013erence)75 1176 y(computations)13 b([3)o(].)20 b(The)15 b(third)g
(program,)d fk(epoxy)p fl(,)i(is)h(an)g(electrical)f(and)h(ph)o(ysical)f(la)o
(y)o(out)g(optimizer)75 1233 y(written)j(b)o(y)h(F)l(red)g(Ob)q(ermeier)g([5)
o(].)29 b(The)18 b(fourth)g(program,)e fk(crystal)p fl(,)i(is)f(a)h(VLSI)h
(timing)d(analysis)75 1289 y(program)f([6)o(].)25 b(These)17 b(tests)f(repres\
en)o(t)h(a)g(small)e(program)f(\()p fk(example)p fl(,)i(100)g(lines\);)h(a)g
(medium-sized)75 1345 y(program)12 b(\()p fk(fidilrt)p fl(,)h(7,100)g(lines\)\
;)g(and)h(t)o(w)o(o)f(large)h(programs)e(\()p fk(epoxy)p fl(,)h(11,000)f(line\
s)i(and)g fk(crystal)p fl(,)75 1402 y(10,500)f(lines\).)19 b(In)d(the)f(remai\
nder)f(of)g(this)h(section,)f(w)o(e)h(will)f(lo)q(ok)g(at)g(the)i(resource)f
(consumption)e(of)75 1458 y fk(mprof)h fl(from)g(t)o(w)o(o)g(p)q(ersp)q(ectiv)
o(es:)20 b(execution)15 b(time)f(o)o(v)o(erhead)h(and)g(space)h(consumption.)
75 1627 y fh(4.1)56 b(Execution)18 b(Time)g(Ov)n(erhead)75 1747 y fl(There)f
(are)g(t)o(w)o(o)f(sources)h(of)g(execution)g(time)e(o)o(v)o(erhead)i(asso)q
(ciated)g(with)f fk(mprof)p fl(:)23 b(additional)16 b(time)75 1803 y(sp)q(en)
o(t)j(monitoring)d(an)j(application)e(and)i(the)g(time)e(to)h(reduce)h(and)g
(prin)o(t)f(the)h(data)f(pro)q(duced)i(b)o(y)75 1860 y(the)e(monitor.)26 b
(The)18 b(largest)e(source)i(of)g(monitor)d(o)o(v)o(erhead)i(is)h(the)g(time)
e(required)i(to)f(tra)o(v)o(erse)g(the)75 1916 y(complete)g(call)h(c)o(hain)g
(and)h(asso)q(ciate)f(allo)q(cations)e(with)i(caller/callee)f(pairs.)29 b(W)l
(e)19 b(implemen)o(ted)d(a)75 1973 y(v)o(ersion)e(of)g fk(mprof)p fl(,)g(call\
ed)g fk(mprof-)p fl(,)f(whic)o(h)i(do)q(es)g(not)f(create)g(the)h(allo)q(cati\
on)e(call)g(graph.)20 b(With)14 b(this)75 2029 y(v)o(ersion,)20 b(w)o(e)g(can)
g(see)g(the)g(relativ)o(e)e(cost)i(of)f(the)h(allo)q(cation)f(call)g(graph.)
33 b(The)21 b(ratio)d(of)i(the)g(time)75 2086 y(sp)q(en)o(t)13 b(with)f(pro\
\014ling)h(to)f(the)h(time)e(sp)q(en)o(t)i(without)f(pro\014ling)h(is)f(calle\
d)h(the)g fb(slowdown)h(factor)5 b fl(.)19 b(T)l(able)75 2142 y(1)d(summarize\
s)e(the)j(execution)g(time)e(o)o(v)o(erheads)h(for)g(our)g(four)g(application\
s.)23 b(Measuremen)o(ts)15 b(w)o(ere)75 2198 y(gathered)e(running)h(the)f(tes\
t)g(programs)e(on)j(a)f(V)-5 b(AX)13 b(8800)g(with)f(80)h(megab)o(ytes)f(of)h
(ph)o(ysical)g(memory)l(.)146 2286 y(The)f(slo)o(wdo)o(wn)g(asso)q(ciated)g
(with)g fk(mprof)g fl(v)m(aries)g(widely)l(,)g(from)f(1.5)h(to)g(10.)18 b fk
(crystal)12 b fl(su\013ered)h(the)75 2343 y(w)o(orst)h(degradation)g(from)f
(pro\014ling)h(b)q(ecause)i fk(crystal)e fl(uses)h(a)g(depth-\014rst)g(algori\
thm)d(that)j(results)75 2399 y(in)h(long)g(call)f(c)o(hains.)24 b(Programs)13
b(without)j(long)f(call)h(c)o(hains)g(app)q(ear)h(to)e(slo)o(w)h(do)o(wn)g
(b)o(y)g(a)g(factor)f(of)75 2456 y(2{4.)k(If)14 b(the)g(allo)q(cation)f(call)
g(graph)h(is)f(not)h(generated)g(and)h(long)e(call)g(c)o(hains)h(are)g(not)g
(tra)o(v)o(ersed,)f(the)75 2512 y(slo)o(wdo)o(wn)j(is)g(signi\014can)o(tly)g
(less,)h(esp)q(ecially)g(in)g(the)g(extreme)f(cases.)25 b(Since)18 b fk(mprof)
e fl(is)h(a)g(protot)o(yp)q(e)75 2569 y(and)f(has)g(not)f(b)q(een)j(carefully)
d(optimized,)f(this)h(o)o(v)o(erhead)h(seems)f(acceptable.)22 b(F)l(rom)14 b
(the)i(table,)f(w)o(e)75 2625 y(see)g(the)h(reduction)f(and)g(displa)o(y)g
(time)e(is)i(t)o(ypically)e(less)i(than)g(a)g(min)o(ute.)952 2750 y(12)p eop
%%Page: 11 5
 bop 75 117 a fl(w)o(e)14 b(only)g(k)o(eep)h(trac)o(k)e(of)h(caller/callee)f
(pairs,)g fk(F)h fl(app)q(ears)h(to)f(ha)o(v)o(e)g(requested)g(20)g(b)o(ytes)
g(from)f fk(G)p fl(,)h(ev)o(en)75 173 y(though)h(only)g(10)f(b)o(ytes)h(w)o
(ere)g(allo)q(cated.)266 310 y fk(CALL)23 b(STACK:)501 b(MPROF)23 b(RECORDS:)
266 366 y(main)g(calls)g(F)478 b(\(10)23 b(bytes)g(over)g(main)h(->)f(F\))385
423 y(F)h(calls)f(G)430 b(\(10)23 b(bytes)g(over)g(F)h(->)g(G\))433 479 y(G)g
(calls)f(F)382 b(\(10)23 b(bytes)g(over)g(G)h(->)g(F\))481 536 y(F)f(calls)h
(G)334 b(\(10)23 b(MORE)g(bytes)g(over)h(F)g(->)f(G\))528 592 y(G)h(calls)f
(malloc\(10\))71 b(\(10)23 b(bytes)g(allocated)g(in)g(G\))520 740 y ff(Figure)
16 b(7:)40 b fo(Problems)15 b(Caused)g(b)o(y)e(Recursiv)o(e)j(Calls)146 847 y
fl(W)l(e)e(considered)g(sev)o(eral)f(solutions)g(to)g(the)h(problems)e(caused)
j(b)o(y)f(cycles)g(and)g(adopted)g(the)g(most)75 903 y(conserv)m(ativ)o(e)i
(solution.)21 b(One)c(w)o(a)o(y)e(to)h(a)o(v)o(oid)f(recording)g(spurious)h
(allo)q(cation)e(caused)j(b)o(y)f(recursion)75 959 y(is)i(for)g(the)h(monitor)
d(to)i(iden)o(tify)f(the)i(cycles)g(b)q(efore)g(recording)f(the)g(allo)q(cati\
on.)28 b(F)l(or)18 b(example,)g(in)75 1016 y(Figure)13 b(7,)g(the)h(monitor)e
(could)i(realize)f(that)g(it)g(had)h(already)f(credited)h fk(F)g fl(with)f
(the)h(10)f(b)o(ytes)g(when)i(it)75 1072 y(encoun)o(tered)j fk(F)e fl(calling)
g fk(G)g fl(the)h(second)h(time.)23 b(This)16 b(solution)g(adds)h(o)o(v)o(erh\
ead)f(to)g(the)h(monitor)e(and)75 1129 y(con\015icts)g(with)g(our)f(goal)g
(to)h(mak)o(e)f(the)h(monitor)e(as)i(unobtrusiv)o(e)f(as)h(p)q(ossible.)146
1211 y(The)i(solution)f(that)h(w)o(e)f(adopted)i(w)o(as)e(to)h(merge)f(functi\
ons)h(that)f(are)h(in)g(a)g(cycle)h(in)o(to)e(a)h(single)75 1267 y(no)q(de)j
(in)g(the)f(reduction)h(phase.)33 b(Th)o(us,)21 b(eac)o(h)e(strongly)g(connec\
ted)h(comp)q(onen)o(t)f(in)g(the)h(dynamic)75 1324 y(call)e(graph)h(is)f(merg\
ed)g(in)o(to)g(a)h(single)f(no)q(de.)32 b(The)19 b(result)g(is)f(a)h(call)f
(graph)h(with)f(no)h(cycles.)31 b(This)75 1380 y(pro)q(cess)12 b(is)f(also)f
(used)i(b)o(y)f fk(gprof)p fl(,)h(and)f(describ)q(ed)i(carefully)d(elsewhere)
i([2)o(].)18 b(Suc)o(h)13 b(an)e(approac)o(h)g(w)o(orks)75 1437 y(w)o(ell)16 b
(in)h fk(gprof)f fl(b)q(ecause)i(C)e(programs,)f(for)h(whic)o(h)h fk(gprof)f
fl(w)o(as)g(primarily)f(in)o(tended,)i(tend)g(to)f(ha)o(v)o(e)75 1493 y(limit\
ed)e(amoun)o(ts)g(of)i(recursion.)23 b(Lisp)16 b(programs,)e(for)i(whic)o(h)g
fk(mprof)g fl(is)f(also)g(in)o(tended,)i(in)o(tuitiv)o(ely)75 1549 y(con)o
(tain)11 b(m)o(uc)o(h)g(more)g(recursion.)19 b(W)l(e)12 b(ha)o(v)o(e)g(exp)q
(erience)h(pro\014ling)e(a)h(n)o(um)o(b)q(er)g(of)f(large)g(Common)f(Lisp)75
1606 y(programs.)23 b(W)l(e)17 b(observ)o(e)g(sev)o(eral)f(recursiv)o(e)h(cyc\
les)g(in)g(most)e(programs,)g(but)i(the)g(cycles)g(generally)75 1662 y(con)o
(tain)d(a)h(small)e(p)q(ercen)o(tage)j(of)e(the)i(total)d(functions)i(and)h fk
(mprof)e fl(is)h(quite)g(e\013ectiv)o(e.)75 1811 y fh(3.4)56 b(Lisp)19 b(Impl\
emen)n(tation)75 1922 y fl(So)d(far,)g(w)o(e)g(ha)o(v)o(e)f(describ)q(ed)j
(the)e(implemen)o(tati)o(on)d(of)j fk(mprof)g fl(for)f(C.)h(The)h(Lisp)f(impl\
emen)o(tati)o(on)d(is)75 1979 y(quite)i(similar,)d(and)k(here)g(w)o(e)f(descr\
ib)q(e)h(the)f(ma)s(jor)e(di\013erences.)21 b(C)15 b(has)g(a)h(single)e(funct\
ion,)h fk(malloc)p fl(,)75 2035 y(that)e(is)f(called)h(to)g(allo)q(cate)f(mem\
ory)f(explicitly)l(.)18 b(Lisp)c(has)f(a)g(large)f(n)o(um)o(b)q(er)h(of)g(pri\
mitiv)o(es)e(that)h(allo-)75 2091 y(cate)j(memory)d(implicitly)g(\(i.e.,)h fk
(cons)p fl(,)h fk(*)p fl(,)h fk(intern)p fl(,)f(etc.\).)19 b(T)l(o)14 b(mak)o
(e)g fk(mprof)g fl(w)o(ork,)g(these)h(primitiv)o(es)75 2148 y(m)o(ust)f(b)q
(e)j(mo)q(di\014ed)f(so)f(that)h(ev)o(ery)g(allo)q(cation)e(is)h(recorded.)23
b(F)l(ortunately)l(,)15 b(at)h(the)g(Lisp)g(implemen-)75 2204 y(tation)d(lev)
o(el,)g(all)g(memory)e(allo)q(cations)h(ma)o(y)g(b)q(e)j(c)o(hanneled)f(throu\
gh)g(a)g(single)f(routine.)19 b(W)l(e)14 b(w)o(ork)o(ed)75 2261 y(with)k(K)o
(CL)h(\(Ky)o(oto)e(Common)f(Lisp\),)i(whic)o(h)h(is)f(implemen)o(ted)e(in)i
(C.)g(In)h(K)o(CL,)f(all)g(Lisp)h(memory)75 2317 y(allo)q(cations)10 b(are)h
(handled)h(b)o(y)g(a)f(single)g(function,)g fk(alloc)s 15 2 v 14 w(object)p fl
(.)18 b(Just)12 b(as)f(w)o(e)g(had)h(mo)q(di\014ed)f fk(malloc)75 2374 y fl
(in)k(C,)g(w)o(e)g(w)o(ere)f(able)h(to)g(simply)e(patc)o(h)i fk(alloc)s 15 2 v
14 w(object)f fl(to)h(monitor)e(memory)f(allo)q(cation)i(in)h(K)o(CL.)146 2456
y(The)20 b(other)f(ma)s(jor)f(di\013erence)i(in)g(monitoring)d(Lisp)j(is)g
(that)f(the)h(addresses)h(recorded)f(b)o(y)g(the)75 2512 y(monitor)15 b(m)o
(ust)h(b)q(e)i(translated)e(in)o(to)g(Lisp)h(function)g(names.)25 b(Again,)17
b(K)o(CL)h(mak)o(es)d(this)i(quite)g(easy)75 2569 y(b)q(ecause)d(Lisp)f(funct\
ions)g(are)g(de\014ned)h(in)f(a)g(cen)o(tral)f(place)i(in)e(K)o(CL)i(and)f
(the)g(names)f(of)h(the)g(functions)75 2625 y(are)k(kno)o(wn)g(when)h(they)g
(are)f(de\014ned.)29 b(Man)o(y)16 b(other)i(Lisp)f(systems)f(are)h(designed)h
(to)f(allo)o(w)f(return)952 2750 y(11)p eop
%%Page: 10 6
 bop 75 117 a fl(create)16 b(a)f(new)h(asso)q(ciation)e(b)q(et)o(w)o(een)i
([)p fk(foo)p fl(,)f fk(otherbar)p fl(])f(and)i(the)g(b)o(yte)g(coun)o(t,)f
(10.)21 b(A)16 b(disadv)m(an)o(tage)75 173 y(with)i(this)h(implemen)o(tati)o
(on)d(is)j(that)g(the)g(exact)g(call)f(c)o(hains)h(are)f(no)i(longer)e(a)o
(v)m(ailable.)30 b(Ho)o(w)o(ev)o(er,)75 229 y(from)16 b(the)i(pairs)f(w)o(e)h
(can)g(construct)g(the)g(correct)f(dynamic)g(call)g(graph)h(of)f(the)i(progra\
m,)d(whic)o(h)h(is)75 286 y(the)e(information)e(that)h(w)o(e)h(need)h(for)f
(the)g(allo)q(cation)e(call)i(graph.)146 367 y(F)l(or)g(the)h(o)o(v)o(erhead)
g(imp)q(osed)f(b)o(y)h(the)g(monitor)e(to)i(b)q(e)g(reasonable,)g(w)o(e)g(ha)
o(v)o(e)f(to)h(mak)o(e)e(the)j(asso-)75 424 y(ciation)c(b)q(et)o(w)o(een)i
(caller/callee)e(pairs)h(and)g(cum)o(ulativ)o(e)f(b)o(yte)h(coun)o(ts)g(fast.)
19 b(W)l(e)c(use)f(a)h(hash)f(table)g(in)75 480 y(whic)o(h)g(the)f(hash)h(fun\
ction)g(is)f(a)g(simple)g(b)o(yte-sw)o(ap)g(X)o(OR)h(of)f(the)h(callee)f(addr\
ess.)20 b(Eac)o(h)13 b(callee)h(has)f(a)75 537 y(list)i(of)g(its)h(callers)f
(and)h(the)g(n)o(um)o(b)q(er)g(of)f(allo)q(cated)g(b)o(ytes)h(asso)q(ciated)f
(with)h(eac)o(h)g(pair.)21 b(In)c(an)f(e\013ort)75 593 y(to)f(decrease)h(the)
f(n)o(um)o(b)q(er)g(of)g(hash)g(lo)q(okups,)g(w)o(e)g(noted)h(that)f(from)e
(allo)q(cation)h(to)h(allo)q(cation,)e(most)75 650 y(of)j(the)g(call)g(c)o
(hain)g(remains)f(the)h(same.)22 b(Our)17 b(measuremen)o(ts)d(sho)o(w)i(that)
g(on)g(the)g(a)o(v)o(erage,)f(60{75%)75 706 y(of)f(the)g(call)f(c)o(hain)g
(remains)g(the)h(same)e(b)q(et)o(w)o(een)j(allo)q(cations.)i(This)d(observ)m
(ation)f(allo)o(ws)f(us)i(to)g(cac)o(he)75 762 y(the)j(pairs)g(asso)q(ciated)
g(with)f(the)i(curren)o(t)f(caller)f(c)o(hain)h(and)h(to)e(use)i(most)d(of)i
(these)h(pairs)e(the)i(next)75 819 y(time)f(a)h(caller)g(c)o(hain)g(is)h(reco\
rded.)30 b(Th)o(us,)19 b(on)g(an)o(y)f(particular)f(allo)q(cation,)h(only)g
(a)g(few)h(addresses)75 875 y(need)c(to)e(b)q(e)i(hashed.)20 b(Here)14 b(are)
g(the)g(ev)o(en)o(ts)g(that)f(tak)o(e)g(place)h(when)g(a)g(call)f(to)h fk(mal\
loc)f fl(is)g(monitored:)131 1001 y(1.)22 b(The)15 b(c)o(hain)g(of)g(return)g
(addresses)g(is)g(stored)g(in)g(a)g(v)o(ector.)131 1094 y(2.)22 b(The)12 b
(new)h(c)o(hain)e(is)h(compared)f(with)h(the)g(previous)g(c)o(hain,)g(and)h
(the)f(p)q(oin)o(t)g(at)f(whic)o(h)h(they)h(di\013er)189 1150 y(is)h(noted.)
131 1242 y(3.)22 b(F)l(or)14 b(the)g(addresses)h(in)f(the)h(c)o(hain)f(that)g
(ha)o(v)o(e)g(not)h(c)o(hanged,)f(the)h(caller/callee)e(b)o(yte)h(coun)o(t)h
(for)189 1299 y(eac)o(h)g(pair)f(is)h(already)g(a)o(v)m(ailable)f(and)h(is)g
(incremen)o(ted.)131 1391 y(4.)22 b(F)l(or)10 b(new)i(addresses)g(in)f(the)h
(c)o(hain,)f(eac)o(h)h(caller/callee)e(b)o(yte)h(coun)o(t)g(is)g(lo)q(ok)o
(ed)g(up)h(and)f(up)q(dated.)131 1484 y(5.)22 b(F)l(or)d(the)g(tail)f(of)h
(the)h(c)o(hain)f(\(i.e.,)g(the)h(function)f(that)g(called)g fk(malloc)f fl
(directly\),)i(the)f(direct)189 1540 y(allo)q(cation)13 b(information)f(is)j
(recorded.)146 1666 y(Main)o(taining)h(allo)q(cation)g(call)h(graph)h(informa\
tion)e(requires)i(a)g(b)o(yte)g(coun)o(t)g(for)g(ev)o(ery)g(distinct)75 1722 y
(caller/callee)e(pair)i(in)g(ev)o(ery)g(call)f(c)o(hain)h(that)f(allo)q(cates)
g(memory)l(.)25 b(Our)19 b(exp)q(erience)g(is)f(that)f(there)75 1779 y(are)i
(a)g(limited)e(n)o(um)o(b)q(er)i(of)f(suc)o(h)i(pairs,)f(ev)o(en)h(in)f(v)o
(ery)g(large)f(C)h(programs,)f(so)h(that)f(the)i(memory)75 1835 y(requiremen)
o(ts)14 b(of)g(the)i fk(mprof)e fl(monitor)f(are)i(not)g(large)f(\(see)h(sect\
ion)g(4.2\).)75 1981 y fh(3.3)56 b(Reduction)18 b(and)i(Displa)n(y)75 2092 y
fl(The)g(second)g(phase)g(of)f fk(mprof)g fl(reads)h(the)f(output)h(of)f(the)
h(monitor,)e(reduces)i(the)g(data)f(to)g(create)75 2148 y(a)i(dynamic)f(call)
g(graph,)j(and)e(displa)o(ys)f(the)i(data)e(in)h(four)g(tables.)37 b(The)22 b
(\014rst)f(part)f(of)h(the)h(data)75 2205 y(reduction)c(is)g(to)g(map)f(the)i
(caller/callee)e(address)h(pairs)g(to)f(actual)h(function)g(names.)29 b(A)18 b
(program)75 2261 y fk(mpfilt)e fl(reads)h(the)g(executable)g(\014le)g(that)f
(created)h(the)g(monitor)d(trace)j(\(compiled)e(so)h(that)h(sym)o(b)q(ol)75
2318 y(table)j(information)e(is)i(retained\),)g(and)h(outputs)f(a)g(new)h(set)
f(of)h(function)f(caller/callee)f(relations.)75 2374 y(These)d(relations)e
(are)h(then)h(used)g(to)f(construct)g(the)h(subset)g(of)f(the)g(program's)e
(dynamic)i(call)f(graph)75 2431 y(that)g(in)o(v)o(olv)o(ed)h(memory)d(allo)q
(cation.)146 2512 y(The)j(call)f(graph)h(initially)e(can)j(con)o(tain)e(cycle\
s)i(due)g(to)e(recursion)h(in)g(the)h(program's)c(execution.)75 2569 y(Cycles)
h(in)g(the)h(call)e(graph)h(in)o(tro)q(duce)h(spurious)f(allo)q(cation)e(rela\
tions,)h(as)h(is)g(illustrated)f(in)h(Figure)g(7.)75 2625 y(In)k(this)f(examp\
le,)f fk(main)h fl(is)g(credited)h(as)f(b)q(eing)h(indirectly)f(resp)q(onsibl\
e)g(for)g(10)g(b)o(ytes,)g(but)h(b)q(ecause)952 2750 y(10)p eop
%%Page: 9 7
 bop 75 117 a fl(call)14 b(c)o(hain)h(in)f(whic)o(h)h(the)g(n)o(um)o(b)q(er)f
(of)h(allo)q(cations)e(do)q(es)i(not)g(matc)o(h)e(the)i(n)o(um)o(b)q(er)f(of)
h(frees)g(indicates)75 173 y(a)g(memory)e(leak)h(and)i(is)e(prin)o(ted)h(in)g
(the)h(leak)e(table.)146 255 y(T)l(o)h(construct)g(the)h(allo)q(cation)d(bin)
j(table,)f(the)g(monitor)e(has)j(a)f(1026-elemen)o(t)e(arra)o(y)i(of)g(in)o
(tegers)75 312 y(to)20 b(coun)o(t)g(allo)q(cations)f(and)h(another)g(1026-ele\
men)o(t)f(arra)o(y)g(to)h(coun)o(t)g(frees.)36 b(When)20 b(ob)s(jects)g(of)g
(a)75 368 y(particular)10 b(size)h(from)f(0{1024)f(b)o(ytes)i(are)g(allo)q
(cated)f(or)h(freed,)h(the)f(appropriated)g(bin)g(is)g(incremen)o(ted.)75 425
y(Ob)s(jects)k(larger)f(than)h(1024)f(b)o(ytes)h(are)g(group)q(ed)h(in)o(to)e
(the)h(same)f(bin.)146 507 y(The)k(construction)f(of)g(the)h(direct)g(allo)q
(cation)e(table)h(falls)f(out)i(directly)f(from)f(main)o(taining)f(the)75 564
y(allo)q(cation)e(call)i(graph)g(information,)d(whic)o(h)j(is)f(describ)q(ed)
i(in)f(the)h(next)f(section.)75 714 y fh(3.2)56 b(Constructing)19 b(the)f(All\
o)r(cation)j(Call)f(Graph)75 826 y fl(T)l(o)g(construct)g(the)h(allo)q(cation)
d(call)i(graph,)h(the)f(monitor)e(m)o(ust)h(asso)q(ciate)g(the)i(n)o(um)o(b)q
(er)e(of)h(b)o(ytes)75 882 y(allo)q(cated)12 b(with)g(ev)o(ery)h(function)g
(on)g(the)g(curren)o(t)g(dynamic)f(call)h(c)o(hain,)f(eac)o(h)i(time)d fk(mal\
loc)h fl(is)h(called.)75 939 y(Consider)i(the)g(sample)f(call)g(c)o(hain)h
(in)g(Figure)g(6,)f(whic)o(h)h(w)o(e)g(abbreviate:)k fk(main)p fl(-)p fa(>)p
fk(foo)p fl(-)p fa(>)p fk(bar)p fl(\(24\).)194 1079 y fk(CALL)24 b(STACK:)500
b(MPROF)23 b(RECORDS:)194 1135 y(main)h(calls)f(foo)548 b(24)24 b(bytes)f(ove\
r)g(main)h(->)f(foo)337 1191 y(foo)h(calls)f(bar)429 b(24)24 b(bytes)f(over)g
(foo)h(->)f(bar)409 1248 y(bar)h(calls)f(malloc\(24\))189 b(24)24 b(bytes)f
(allocated)g(in)g(bar)539 1396 y ff(Figure)16 b(6:)40 b fo(Example)15 b(of)e
(a)g(Dynamic)h(Call)h(Chain)146 1500 y fl(In)e fk(mprof)p fl(,)g(the)g(monito\
r)e(tra)o(v)o(erses)h(the)h(en)o(tire)g(call)g(c)o(hain)g(b)o(y)g(follo)o(win\
g)e(return)i(addresses.)19 b(This)75 1557 y(di\013ers)g(from)f fk(gprof)p fl
(,)i(where)h(only)e(the)h(immediate)d(caller)i(of)h(the)g(curren)o(t)g(functi\
on)f(is)h(recorded.)75 1613 y fk(gprof)e fl(mak)o(es)e(the)j(assumption)d(tha\
t)i(eac)o(h)h(call)e(tak)o(es)h(an)g(equal)g(amoun)o(t)f(of)h(time)e(and)j
(uses)g(this)75 1670 y(assumption)d(to)i(reconstruct)g(the)g(complete)f(dynam\
ic)g(call)g(graph)h(from)e(information)f(only)j(ab)q(out)75 1726 y(the)h(imme\
diate)e(callers.)31 b(In)20 b fk(mprof)p fl(,)f(w)o(e)g(actually)f(tra)o(v)o
(erse)g(the)h(en)o(tire)g(dynamic)f(call)h(c)o(hain)g(and)75 1783 y(need)d
(to)f(mak)o(e)e(no)i(assumptions.)146 1865 y(In)c(c)o(ho)q(osing)g(to)f(tra)o
(v)o(erse)g(the)h(en)o(tire)g(call)f(c)o(hain,)h(w)o(e)g(ha)o(v)o(e)g(elected)
g(to)g(p)q(erform)e(an)i(op)q(eration)g(that)75 1922 y(is)k(p)q(oten)o(tially)
f(exp)q(ensiv)o(e)j(b)q(oth)e(in)h(time)e(and)i(space.)22 b(One)16 b(implemen)
o(tati)o(on)d(w)o(ould)i(simply)f(record)75 1978 y(ev)o(ery)k(function)g(in)g
(ev)o(ery)g(c)o(hain)g(and)g(write)g(the)g(information)d(to)j(a)g(\014le)g
(\(i.e.,)f(in)h(the)g(example)f(w)o(e)75 2035 y(w)o(ould)c(output)h([)p fk
(main)p fl(-)p fa(>)p fk(foo)p fl(-)p fa(>)p fk(bar)p fl(,)f(24]\).)18 b(Cons\
idering)13 b(that)g(man)o(y)g(programs)f(execute)i(millions)d(of)75 2091 y
(calls)h(to)h fk(malloc)f fl(and)i(that)e(the)i(depth)g(of)f(a)f(call)h(c)o
(hain)g(can)g(b)q(e)h(h)o(undreds)g(of)f(functions,)g(the)h(amoun)o(t)75 2147
y(of)h(information)d(could)j(b)q(e)h(prohibitiv)o(e.)146 2230 y(An)k(alternat\
iv)o(e)e(to)h(recording)h(the)f(en)o(tire)h(c)o(hain)f(of)h(callers)f(is)g
(to)h(break)f(the)h(call)f(c)o(hain)h(in)o(to)75 2286 y(a)e(set)g(of)f(caller\
/callee)g(pairs,)h(and)g(asso)q(ciate)f(the)h(b)o(ytes)g(allo)q(cated)f(with)
h(eac)o(h)g(pair)f(in)h(the)h(c)o(hain.)75 2343 y(F)l(or)e(the)h(call)f(in)h
(the)g(example,)f(w)o(e)g(could)h(main)o(tain)e(the)i(pairs)f([)p fk(main)p fl
(,)g fk(foo)p fl(])g(and)h([)p fk(foo)p fl(,)f fk(bar)p fl(],)h(and)75 2399 y
(asso)q(ciate)11 b(24)g(b)o(ytes)g(with)g(eac)o(h)h(pair.)18 b(Conceptually)l
(,)12 b(the)g(data)f(structure)g(our)h(monitor)d(main)o(tains)g(is)75 2456 y
(an)14 b(asso)q(ciation)f(b)q(et)o(w)o(een)h(caller/callee)f(pairs)h(and)g
(the)h(cum)o(ulativ)o(e)d(b)o(ytes)i(allo)q(cated)f(o)o(v)o(er)h(the)g(pair,)
75 2512 y(whic)o(h)19 b(w)o(e)f(denote)h(\([)p fk(main)p fl(,)f fk(foo)p fl
(],)g(24\).)30 b(T)l(o)18 b(con)o(tin)o(ue)g(with)g(the)h(example,)f(if)g(the)
h(next)g(allo)q(cation)75 2569 y(w)o(as:)g fk(main)p fl(-)p fa(>)p fk(foo)p fl
(-)p fa(>)p fk(otherbar)p fl(\(10\),)12 b(where)j(this)f(is)g(the)h(\014rst)g
(call)e(to)h fk(otherbar)p fl(,)g(w)o(e)g(w)o(ould)g(up)q(date)75 2625 y(the)
i(b)o(yte)f(coun)o(t)g(asso)q(ciated)g(with)g(the)h([)p fk(main)p fl(,)e fk
(foo)p fl(])h(pair)g(to)f(34)h(from)f(24.)21 b(F)l(urthermore,)13 b(w)o(e)j
(w)o(ould)964 2750 y(9)p eop
%%Page: 8 8
 bop 75 117 a fl(categories,)14 b(while)h(the)g fk(frac-ances)f fl(\014eld)i
(sho)o(ws)f(the)g(size)g(breakdo)o(wn)h(of)f(the)g(b)o(ytes)g(requested)h(b)o
(y)75 173 y(this)g(ancestor)g(as)h(a)f(fraction)g(of)g(b)o(ytes)h(allo)q(cate\
d)f(at)g(the)h(request)f(of)h(all)e(ancestors.)24 b(F)l(or)16 b(example,)75
229 y(in)d(the)h(en)o(try)f(for)f(function)i fk(make)s 15 2 v 13 w(widget)f fl
(\(index)g(1\),)g(the)g(ancestor)g fk(make)s 15 2 v 14 w(red)s 15 2 v 13 w
(widget)g fl(can)g(b)q(e)h(seen)75 286 y(to)f(ha)o(v)o(e)g(requested)h(1,023,\
876)d(b)o(ytes)i(of)g(data)g(from)f fk(make)s 15 2 v 14 w(widget)p fl(,)g(99%)
h(of)g(whic)o(h)h(w)o(as)f(of)g(medium-)75 342 y(sized)20 b(ob)s(jects.)34 b
(F)l(urthermore,)20 b(calls)f(from)g fk(make)s 15 2 v 13 w(red)s 15 2 v 14 w
(widget)g fl(accoun)o(ted)i(for)e(50%)h(of)f(the)i(total)75 399 y(memory)14 b
(allo)q(cated)h(b)o(y)h fk(make)s 15 2 v 13 w(widget)g fl(and)g(its)f(descend\
en)o(ts.)24 b(Other)17 b(\014elds)f(sho)o(w)g(ho)o(w)f(man)o(y)g(calls)75 455
y(the)j(ancestor)g(made)f(to)g(the)i(en)o(try)e(function)h(and)h(ho)o(w)e(man)
o(y)g(calls)g(the)h(ancestor)g(made)f(in)h(total.)75 512 y(In)d(a)g(similar)d
(fashion,)i(information)e(ab)q(out)j(the)g(function's)f(descenden)o(ts)i(app)
q(ears)f(b)q(elo)o(w)f(the)h(en)o(try)75 568 y(function.)146 651 y(Had)h(the)
h(memory)d(leak)i(table)g(not)h(already)f(told)g(us)g(what)h(ob)s(jects)f(w)o
(ere)g(not)g(b)q(eing)h(freed,)g(w)o(e)75 707 y(could)g(use)g(the)g(allo)q
(cation)e(call)i(graph)f(for)h(the)g(same)e(purp)q(ose.)26 b(The)17 b(direct)
g(allo)q(cation)e(table)i(told)75 764 y(us)k(that)e fk(make)s 15 2 v 14 w(wid\
get)g fl(allo)q(cated)h(1,023,876)d(b)o(ytes)j(of)g(unfreed)i(memory)l(,)c
(all)i(for)g(medium-sized)75 820 y(ob)s(jects.)f(F)l(rom)12 b(the)i(allo)q
(cation)e(call)h(graph,)h(w)o(e)g(can)g(see)g(that)f(the)h(function)g fk(make)
s 15 2 v 14 w(red)s 15 2 v 14 w(widget)f fl(w)o(as)75 877 y(the)i(function)g
(calling)f fk(make)s 15 2 v 14 w(widget)g fl(that)h(requested)g(1,023,876)e
(b)o(ytes)i(of)g(medium-sized)e(ob)s(jects.)146 960 y(Cycles)f(in)h(the)g(cal\
l)f(graph)h(are)f(not)h(illustrated)e(in)i(Figure)f(5.)19 b(As)13 b(describ)q
(ed)h(in)f(the)g(next)g(section,)75 1016 y(cycles)j(obscure)f(allo)q(cation)f
(information)f(among)g(functions)j(that)f(are)g(mem)o(b)q(ers)e(of)i(a)h(cycl\
e.)21 b(When)75 1073 y(the)16 b(paren)o(t/c)o(hild)g(relationships)f(that)g
(app)q(ear)i(in)f(the)g(graph)g(are)g(b)q(et)o(w)o(een)h(mem)o(b)q(ers)d(of)i
(the)g(same)75 1129 y(cycle,)f(most)e(of)i(the)g(\014elds)h(in)f(the)g(graph)
g(m)o(ust)f(b)q(e)i(omitted.)75 1302 y fm(3)69 b(Implemen)n(tation)75 1431 y
fl(W)l(e)18 b(ha)o(v)o(e)h(implemen)o(ted)d fk(mprof)h fl(for)h(use)h(with)f
(C)g(and)g(Common)e(Lisp)j(programs.)27 b(Since)19 b(the)f(im-)75 1487 y(plem\
en)o(tations)c(are)i(quite)f(similar,)f(the)i(C)g(implemen)o(tat)o(ion)d(will)
i(b)q(e)i(describ)q(ed)g(in)f(detail,)f(and)h(the)75 1544 y(minor)d(di\013ere\
nces)j(in)f(the)g(Lisp)g(implemen)o(tation)d(will)i(b)q(e)i(noted)f(at)g(the)
g(end)h(of)e(the)i(section.)75 1695 y fh(3.1)56 b(The)18 b(Monitor)75 1808 y
fl(The)h(\014rst)g(phase)g(of)f fk(mprof)g fl(is)h(a)f(monitor)f(that)h(is)g
(link)o(ed)h(in)o(to)e(the)i(executing)g(application.)30 b(The)75 1865 y(moni\
tor)14 b(includes)i(mo)q(di\014ed)g(v)o(ersions)f(of)h fk(malloc)f fl(and)i fk
(free)e fl(that)h(record)g(information)d(eac)o(h)k(time)75 1921 y(they)f(are)
g(in)o(v)o(ok)o(ed.)23 b(Along)16 b(with)f fk(malloc)h fl(and)g fk(free)p fl
(,)g fk(mprof)f fl(pro)o(vides)h(its)g(o)o(wn)g fk(exit)f fl(function,)h(so)
75 1978 y(that)f(when)g(the)h(application)e(program)f(exits,)i(the)g(data)g
(collected)g(b)o(y)g(the)g(monitor)e(is)i(written)g(to)f(a)75 2034 y(\014le.)
20 b(The)15 b(monitor)e(main)o(tains)g(sev)o(eral)h(data)h(structures)g(neede\
d)h(to)f(construct)g(the)g(tables.)146 2117 y(T)l(o)i(construct)g(the)g(leak)
g(table,)g(the)g(monitor)f(asso)q(ciates)g(a)h(list)f(of)h(the)g(last)g(\014v)
o(e)g(callers)g(in)g(the)75 2173 y(call)f(c)o(hain,)h(the)g fb(p)n(artial)i
(c)n(al)r(l)e(chain)s fl(,)h(with)e(the)h(ob)s(ject)g(allo)q(cated.)25 b fk
(mprof)16 b fl(augmen)o(ts)g(ev)o(ery)h(ob)s(ject)75 2230 y(allo)q(cated)c
(with)g(t)o(w)o(o)f(items:)17 b(an)d(in)o(teger)f(whic)o(h)g(is)g(the)h(ob)s
(ject)f(size)h(as)f(requested)h(b)o(y)g(the)f(user)h(\(since)75 2286 y(the)h
(allo)q(cator)f(ma)o(y)f(allo)q(cate)h(an)h(ob)s(ject)g(of)g(a)g(di\013eren)o
(t)f(size)i(for)e(con)o(v)o(enience\),)h(and)h(a)f(p)q(oin)o(ter)g(to)f(a)75
2343 y(structure)j(that)f(con)o(tains)g(the)h(ob)s(ject's)f(partial)f(call)h
(c)o(hain)h(and)g(a)g(coun)o(t)f(of)h(allo)q(cations)e(and)i(frees)75 2399 y
(of)i(ob)s(jects)g(with)g(that)g(call)g(c)o(hain.)33 b(A)19 b(hash)h(table)f
(is)g(used)h(to)f(map)g(a)g(partial)f(call)h(c)o(hain)g(to)g(the)75 2456 y
(structure)13 b(con)o(taining)f(the)h(coun)o(ters.)19 b(When)14 b(an)f(ob)s
(ject)g(is)g(allo)q(cated,)f(its)g(partial)g(call)h(c)o(hain)g(is)f(used)75
2512 y(as)g(a)h(hash)f(k)o(ey)h(to)f(retriev)o(e)g(the)h(structure)f(con)o
(taining)g(the)g(coun)o(ters.)19 b(A)13 b(p)q(oin)o(ter)f(to)g(the)h(structur\
e)f(is)75 2569 y(placed)k(in)f(the)h(allo)q(cated)e(ob)s(ject)h(and)h(the)g
(allo)q(cation)d(coun)o(ter)j(is)f(incremen)o(ted.)20 b(When)c(the)g(ob)s(jec\
t)75 2625 y(is)h(later)f(freed,)h(the)g(p)q(oin)o(ter)g(is)f(follo)o(w)o(ed)g
(and)h(the)g(coun)o(ter)g(of)f(frees)h(is)g(incremen)o(ted.)25 b(An)o(y)17 b
(partial)964 2750 y(8)p eop
%%Page: 7 9
 bop 216 164 a fc(self)281 b(|)88 b(/ances)33 b(|)88 b(/ances)33 b(|)i(called\
/tot)o(al)120 b(ancestors)75 204 y(index)69 b(+)123 b(self)16 b(\(%\))52 b
(|)17 b(size-func)50 b(|)17 b(frac)140 b(|)35 b(called/rec)o(ur)50 b(name)16 b
([index])216 243 y(desc)281 b(|)88 b(\\desc)51 b(|)88 b(\\desc)51 b(|)35 b
(called/tot)o(al)120 b(descendents)75 322 y(----------)o(---)o(---)o(---)o
(--)o(---)o(---)o(---)o(-s-)o(-m)o(--l)o(--x)o(---)o(-s-)o(-m)o(--l)o(--x)o
(---)o(---)o(--)o(--)75 401 y([0])69 b(100.0)140 b(0)17 b(\(0\))52 b(|)229 b
(|)17 b(-----------)d(|)123 b(0)159 b(main)16 b([0])322 440 y(1023876)f(\(50\
\))34 b(|)70 b(99)123 b(|)70 b(50)123 b(|)70 b(5019/5019)138 b(make_red_wi)o
(dg)o(et)14 b([2])322 480 y(1016124)h(\(49\))34 b(|)70 b(99)123 b(|)70 b(49)
123 b(|)70 b(4981/4981)138 b(make_blue_w)o(id)o(get)14 b([3])234 519 y(all)34
b(2040000)121 b(|)70 b(99)123 b(|)229 b(|)75 598 y(----------)o(---)o(---)o
(---)o(--)o(---)o(---)o(---)o(-s-)o(-m)o(--l)o(--x)o(---)o(-s-)o(-m)o(--l)o
(--x)o(---)o(---)o(--)o(--)234 677 y(all)34 b(2040000)121 b(|)70 b(99)123 b
(|)229 b(|)322 716 y(1023876)15 b(\(50\))34 b(|)70 b(99)123 b(|)70 b(50)123 b
(|)70 b(5019/5019)138 b(make_red_wi)o(dg)o(et)14 b([2])322 756 y(1016124)h
(\(49\))34 b(|)70 b(99)123 b(|)70 b(49)123 b(|)70 b(4981/4981)138 b(make_blue\
_w)o(id)o(get)14 b([3])75 795 y([1])69 b(100.0)34 b(2040000)15 b(\(100\))h
(|)70 b(99)123 b(|)17 b(-----------)d(|)53 b(10000)157 b(make_widg)o(et)14 b
([1])75 874 y(----------)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o(-s-)o(-m)
o(--l)o(--x)o(---)o(-s-)o(-m)o(--l)o(--x)o(---)o(---)o(--)o(--)322 953 y(1023\
876)h(\(100\))h(|)70 b(99)123 b(|)70 b(99)123 b(|)70 b(5019/10000)120 b(main)
16 b([0])75 992 y([2])87 b(50.2)140 b(0)17 b(\(0\))52 b(|)229 b(|)17 b(------\
-----)d(|)70 b(5019)158 b(make_red_)o(wid)o(get)14 b([2])322 1032 y(1023876)h
(\(100\))h(|)70 b(99)123 b(|)70 b(99)123 b(|)70 b(5019/10000)120 b(make_widge\
t)14 b([1])75 1111 y(----------)o(---)o(---)o(---)o(--)o(---)o(---)o(---)o
(-s-)o(-m)o(--l)o(--x)o(---)o(-s-)o(-m)o(--l)o(--x)o(---)o(---)o(--)o(--)322
1190 y(1016124)h(\(100\))h(|)70 b(99)123 b(|)70 b(99)123 b(|)70 b(4981/10000)
120 b(main)16 b([0])75 1229 y([3])87 b(49.8)140 b(0)17 b(\(0\))52 b(|)229 b
(|)17 b(-----------)d(|)70 b(4981)158 b(make_blue)o(_wi)o(dge)o(t)14 b([3])
322 1268 y(1016124)h(\(100\))h(|)70 b(99)123 b(|)70 b(99)123 b(|)70 b(4981/10\
000)120 b(make_widget)14 b([1])75 1347 y(----------)o(---)o(---)o(---)o(--)o
(---)o(---)o(---)o(-s-)o(-m)o(--l)o(--x)o(---)o(-s-)o(-m)o(--l)o(--x)o(---)o
(---)o(--)o(--)340 1535 y ff(Figure)j(5:)40 b fo(Allo)q(cation)16 b(Call)e
(Graph)g(for)f(Pro)q(ducer/Consumer)j(Example)75 1670 y fl(function)j(is)g
(easy)g(to)f(iden)o(tify)h(in)g(eac)o(h)g(table)g(en)o(try)g(b)q(ecause)h(a)f
(large)f(rule)h(app)q(ears)g(in)g(the)h fk(frac)75 1727 y fl(column)14 b(on)h
(that)f(ro)o(w.)19 b(In)d(the)f(\014rst)f(en)o(try)h(of)f(Figure)h(5,)f fk
(main)g fl(is)h(the)g(en)o(try)g(function;)f(there)h(are)g(no)75 1783 y(ances\
tors)g(and)g(t)o(w)o(o)f(descenden)o(ts.)146 1865 y(The)22 b(en)o(try)g(funct\
ion)g(line)g(of)g(the)g(allo)q(cation)f(call)g(graph)h(con)o(tains)f(informat\
ion)f(ab)q(out)i(the)75 1922 y(function)15 b(itself.)j(The)d fk(index)f fl
(\014eld)i(pro)o(vides)e(a)g(unique)i(index)f(to)f(help)h(users)g(na)o(vigate)
e(through)i(the)75 1978 y(call)d(graph.)19 b(The)13 b fk(self)23 b fl(+)h fk
(desc)13 b fl(\014eld)g(con)o(tains)f(the)h(p)q(ercen)o(t)g(of)f(total)g(memo\
ry)e(allo)q(cated)i(that)g(w)o(as)75 2035 y(allo)q(cated)g(in)i(this)f(functi\
on)g(and)h(its)e(descenden)o(ts.)21 b(The)13 b(call)g(graph)g(is)g(sorted)g
(b)o(y)g(decreasing)h(v)m(alues)75 2091 y(in)f(this)g(\014eld.)19 b(The)13 b
fk(self)g fl(\014eld)g(con)o(tains)g(the)g(n)o(um)o(b)q(er)f(of)h(b)o(ytes)g
(that)f(w)o(ere)h(allo)q(cated)f(directly)h(in)g(the)75 2148 y(en)o(try)h(fun\
ction.)20 b(The)15 b fk(size-func)e fl(\014elds)i(con)o(tain)f(a)h(size)f(bre\
akdo)o(wn)h(of)f(the)h(memory)d(allo)q(cated)i(in)75 2204 y(the)f(function)g
(itself.)18 b(Some)12 b(functions,)h(lik)o(e)f fk(main)g fl(\(index)h(0\))f
(allo)q(cated)g(no)h(memory)e(directly)l(,)h(so)h(the)75 2261 y fk(size-func)
i fl(\014elds)i(are)f(all)g(blank.)24 b(The)17 b fk(called)f fl(\014eld)g(sho)
o(ws)g(the)h(n)o(um)o(b)q(er)f(of)g(times)f(this)h(function)75 2317 y(w)o(as)
f(called)h(during)g(a)g(memory)e(allo)q(cation,)g(with)h(the)i(n)o(um)o(b)q
(er)e(of)h(recursiv)o(e)g(calls)f(recorded)i(in)f(the)75 2373 y(adjacen)o(t)f
(\014eld.)146 2456 y(Eac)o(h)j(caller)f(of)h(the)h(en)o(try)f(function)g(is)g
(listed)g(on)g(a)g(separate)g(line)g(ab)q(o)o(v)o(e)g(it.)29 b(A)19 b(summary)
c(of)75 2512 y(all)k(callers)g(is)g(giv)o(en)h(on)f(the)h(top)g(line)f(of)h
(the)g(en)o(try)f(if)h(there)g(is)f(more)g(than)g(one)h(ancestor.)34 b(The)75
2569 y fk(self)13 b fl(\014eld)h(of)f(ancestors)f(lists)h(the)g(n)o(um)o(b)q
(er)g(of)g(b)o(ytes)g(that)g(the)g(en)o(try)g(function)h(and)f(its)g(descende\
n)o(ts)75 2625 y(allo)q(cated)f(on)h(b)q(ehalf)g(of)g(the)g(ancestor.)18 b
(The)13 b fk(size-ances)f fl(\014eld)h(breaks)g(do)o(wn)g(those)f(b)o(ytes)h
(in)o(to)f(size)964 2750 y(7)p eop
%%Page: 6 10
 bop 163 164 a fc(%)17 b(mem)141 b(bytes)15 b(|)j(%)f(mem\(size\))d(|)53 b
(bytes)16 b(kept)g(|)35 b(%)17 b(all)g(kept)f(|)141 b(calls)51 b(name)75 243 y
(----------)o(---)o(---)o(---)o(--)o(---)o(---)o(s--)o(m--)o(l-)o(-x-)o(---)o
(---)o(---)o(--)o(---)o(---)o(-s-)o(-m-)o(-l)o(--x)o(---)o(---)o(---)o(--)o
(---)o(-)163 322 y(-----)104 b(2040000)15 b(|)71 b(99)122 b(|)106 b(1023876)
15 b(|)70 b(99)123 b(|)141 b(10000)51 b(<TOTAL>)163 401 y(100.0)104 b(2040000)
15 b(|)71 b(99)122 b(|)106 b(1023876)15 b(|)70 b(99)123 b(|)141 b(10000)51 b
(make_widge)o(t)329 588 y ff(Figure)16 b(4:)40 b fo(Direct)16 b(Allo)q(cation)
f(T)m(able)f(for)g(Pro)q(ducer/Consumer)i(Example)75 726 y fl(the)g(function)
h(and)f(nev)o(er)h(freed)f(\()p fk(bytes)23 b(kept)p fl(\),)16 b(and)g(the)h
(n)o(um)o(b)q(er)e(of)h(calls)g(made)f(to)h(the)g(function)75 783 y(that)k
(resulted)h(in)g(allo)q(cation)e(\()p fk(calls)p fl(\).)35 b(The)22 b fk(%)h
(mem\(size\))d fl(\014elds)h(con)o(tain)f(a)h(size)g(breakdo)o(wn)1856 766 y
fe(2)75 839 y fl(of)f(the)i(memory)c(allo)q(cated)i(b)o(y)h(eac)o(h)g(functio\
n)f(as)h(a)g(fraction)e(of)i(the)g(memory)d(allo)q(cated)i(b)o(y)h(all)75 896
y(functions.)32 b(In)20 b(this)f(example,)g(99%)g(of)g(the)g(memory)e(allo)q
(cated)h(b)o(y)i(the)f(program)e(w)o(as)i(allo)q(cated)75 952 y(in)h fk(make)
s 15 2 v 14 w(widget)g fl(for)f(medium-sized)g(ob)s(jects.)35 b(Blank)20 b
(columns)g(indicate)g(v)m(alues)g(less)g(than)h(1%.)75 1009 y(The)c(other)g
(size)h(breakdo)o(wn)f(giv)o(en)f(in)h(the)h(direct)f(allo)q(cation)e(table)i
(is)g(for)f(the)i(memory)c(that)j(w)o(as)75 1065 y(allo)q(cated)d(and)h(nev)o
(er)h(freed.)k(The)15 b fk(%)24 b(all)f(kept)15 b fl(\014eld)g(con)o(tains)f
(a)h(size)g(breakdo)o(wn)g(of)f(the)i(memory)75 1122 y(not)d(freed)g(b)o(y)g
(a)g(particular)f(function)h(as)f(a)h(fraction)f(of)h(all)f(the)h(memory)d
(not)j(freed.)20 b(In)13 b(the)g(example,)75 1178 y(99%)h(of)h(the)h(unfreed)
g(memory)c(w)o(as)j(of)f(medium-sized)g(ob)s(jects)g(allo)q(cated)h(b)o(y)g fk
(make)s 15 2 v 13 w(widget)p fl(.)75 1336 y fh(2.5)56 b(The)18 b(Allo)r(catio\
n)i(Call)h(Graph)75 1452 y fl(Understanding)h(the)g(memory)d(allo)q(cation)h
(b)q(eha)o(vior)h(of)g(a)h(programs)d(sometimes)g(requires)i(more)75 1508 y
(information)12 b(than)j(just)g(kno)o(wing)f(the)h(functions)g(that)g(are)g
(directly)f(resp)q(onsible)h(for)g(memory)d(allo-)75 1564 y(cation.)18 b(Some\
times,)11 b(as)i(happ)q(ens)h(in)f(Figure)g(1,)f(the)i(same)e(allo)q(cation)f
(function)i(is)g(called)g(b)o(y)g(sev)o(eral)75 1621 y(di\013eren)o(t)i(funct\
ions)g(for)f(di\013eren)o(t)h(purp)q(oses.)21 b(The)16 b(allo)q(cation)d(call)
i(graph)g(sho)o(ws)f(all)h(the)g(functions)75 1677 y(that)f(w)o(ere)h(indirec\
t)g(callers)f(of)h(functions)g(that)g(allo)q(cated)f(memory)l(.)146 1762 y
(Because)e(the)g(dynamic)f(caller/callee)f(relations)h(of)g(a)h(program)d(are)
j(n)o(umerous,)f(the)h(dynamic)f(call)75 1819 y(graph)17 b(is)g(a)g(complex)f
(table)g(with)h(man)o(y)f(en)o(tries.)25 b(Often,)18 b(the)f(information)e
(pro)o(vided)i(b)o(y)g(the)g(\014rst)75 1875 y(three)e(tables)g(is)g(enough)g
(to)g(allo)o(w)e(programmers)f(to)j(understand)g(the)h(memory)c(allo)q(cation)
i(of)g(their)75 1931 y(program.)36 b(Nev)o(ertheless,)22 b(for)e(a)h(full)g
(understanding)g(of)g(the)g(allo)q(cation)f(b)q(eha)o(vior)g(of)h(programs)75
1988 y(the)i(allo)q(cation)d(call)i(graph)g(is)g(useful.)42 b(Figure)21 b(5)i
(con)o(tains)e(the)i(allo)q(cation)d(call)i(graph)g(for)g(the)75 2044 y(pro)q
(ducer/consumer)15 b(example)e(and)i(corresp)q(onds)g(to)f(the)h(call)f(graph)
h(pro\014le)f(generated)h(b)o(y)g fk(gprof)p fl(.)146 2129 y(The)g(allo)q(cat\
ion)e(call)i(graph)g(is)f(a)h(large)f(table)h(with)g(an)g(en)o(try)f(for)h
(eac)o(h)g(function)g(that)g(w)o(as)f(on)h(a)75 2186 y(call)h(c)o(hain)h(when)
g(memory)e(w)o(as)h(allo)q(cated.)24 b(Eac)o(h)17 b(table)f(en)o(try)h(is)f
(divided)h(in)o(to)f(three)h(parts.)25 b(The)75 2242 y(line)16 b(for)h(the)f
(function)h(itself)f(\(called)g(the)g fb(entry)i(function)s fl(\);)f(lines)f
(ab)q(o)o(v)o(e)h(that)f(line,)g(eac)o(h)h(of)f(whic)o(h)75 2298 y(represen)o
(ts)k(a)g(caller)f(of)h(the)g(en)o(try)g(function)f(\(the)h(ancestors\),)g
(and)h(lines)e(b)q(elo)o(w)h(that)f(line,)i(eac)o(h)75 2355 y(of)d(whic)o(h)g
(represen)o(ts)g(a)f(function)h(called)g(b)o(y)g(the)g(en)o(try)g(function)g
(\(the)g(descenden)o(ts\).)29 b(The)18 b(en)o(try)75 2445 y 720 2 v 127 2472 a
fd(2)144 2488 y fj(Both)g(the)g(direct)f(allo)q(cation)h(table)g(and)g(the)g
(dynamic)f(call)g(graph)h(break)h(do)o(wn)f(ob)r(ject)g(allo)q(cation)f(in)o
(to)h(four)75 2534 y(categories)d(of)f(ob)r(ject)g(size:)20 b(small)13 b(\(s\
\),)h(from)f(0{32)i(b)o(ytes;)g(medium)e(\(m\),)g(from)g(33{256)i(b)o(ytes;)g
(large)f(\(l\),)g(from)f(257{)75 2579 y(2048)g(b)o(ytes;)g(and)g(extra)f(larg\
e)h(\(x\),)f(larger)g(than)h(2048)g(b)o(ytes.)k(F)m(or)12 b(Lisp,)g(categoriz\
ation)h(is)f(b)o(y)h(t)o(yp)q(e)g(rather)f(than)h(size:)75 2625 y(cons)h(cell)
e(\(c\),)g(\015oating)i(p)q(oin)o(t)f(n)o(um)o(b)q(er)g(\(f)s(\),)f(structure)
i(or)f(v)o(ector)g(\(s\),)f(and)i(other)f(\(o\).)964 2750 y fl(6)p eop
%%Page: 5 11
 bop 218 181 a fk(size:)95 b(allocs)118 b(bytes)24 b(\(%\))142 b(frees)h(kept)
23 b(\(%\))119 b(types)266 294 y(204)g(10000)71 b(2040000)23 b(\(99\))142 b
(4981)71 b(1023876)23 b(\(99\))71 b(widget)194 351 y(>)24 b(1024)214 b(0)h
(0)334 b(0)214 b(0)170 464 y(<TOTAL>)119 b(10000)71 b(2040000)261 b(4981)71 b
(1023876)353 668 y ff(Figure)16 b(3:)41 b fo(Allo)q(cation)15 b(Bin)g(T)m(abl\
e)f(for)g(Pro)q(ducer/Consumer)h(Example)146 806 y fl(The)g(allo)q(cation)e
(bin)i(table)g(con)o(tains)f(information)e(ab)q(out)j(ob)s(jects)g(of)f(eac)o
(h)i(b)o(yte)e(size)h(from)f(0)h(to)75 863 y(1024)g(b)o(ytes)h(and)g(groups)g
(ob)s(jects)f(larger)g(than)h(1024)f(b)o(ytes)h(in)o(to)f(a)h(single)f(bin.)
23 b(F)l(or)15 b(eac)o(h)h(b)o(yte)g(size)75 919 y(in)h(whic)o(h)h(memory)d
(w)o(as)i(allo)q(cated,)g(the)g(allo)q(cation)f(bin)i(table)f(sho)o(ws)g(the)
h(n)o(um)o(b)q(er)f(of)g(allo)q(cations)75 976 y(of)f(that)h(size)g(\()p fk
(allocs)p fl(\),)e(the)i(total)e(n)o(um)o(b)q(er)i(of)f(b)o(ytes)h(allo)q(cat\
ed)f(to)g(ob)s(jects)g(of)h(that)f(size)h(\()p fk(bytes)p fl(\),)75 1032 y
(the)j(n)o(um)o(b)q(er)g(of)g(frees)g(of)g(ob)s(jects)f(of)h(that)g(size)g
(\()p fk(frees)p fl(\),)g(the)g(n)o(um)o(b)q(er)f(of)h(b)o(ytes)g(not)g(freed)
h(that)75 1088 y(w)o(ere)e(allo)q(cated)g(to)g(ob)s(jects)g(of)g(that)g(size)
h(\()p fk(kept)966 1072 y fe(1)985 1088 y fl(\),)g(and)g(user)f(t)o(yp)q(es)h
(whose)g(size)f(is)g(the)h(same)e(as)75 1145 y(the)e(bin)f(size)h(\()p fk(typ\
es)p fl(\).)k(F)l(rom)14 b(the)h(example,)f(w)o(e)i(can)g(see)f(that)g(10,000)
f(widgets)h(w)o(ere)g(allo)q(cated)g(b)o(y)75 1201 y(the)h(program,)e(but)j
(only)e(4,981)g(of)h(these)g(w)o(ere)g(ev)o(en)o(tually)f(freed,)i(resulting)
e(in)h(1,023,876)d(b)o(ytes)j(of)75 1258 y(memory)8 b(lost)i(to)h(the)g(memor\
y)d(leak.)18 b(The)11 b(p)q(ercen)o(tages)g(sho)o(w)g(what)f(fraction)g(of)h
(all)f(bins)h(a)f(particular)75 1314 y(bin)17 b(con)o(tributed.)26 b(This)17 b
(information)e(is)i(pro)o(vided)g(to)f(allo)o(w)g(a)h(user)g(to)g(rapidly)g
(determine)f(whic)o(h)75 1371 y(bins)d(are)g(of)g(in)o(terest)g(\(i.e.,)f(con)
o(tribute)g(a)h(substan)o(tial)f(p)q(ercen)o(tage\).)19 b(99%)13 b(is)f(the)i
(largest)e(p)q(ercen)o(tage)75 1427 y(p)q(ossible)j(b)q(ecause)h(w)o(e)f(c)o
(hose)g(to)g(use)g(a)g(2)g(c)o(haracter)g(\014eld)g(width.)75 1585 y fh(2.4)
56 b(The)18 b(Direct)g(Allo)r(cation)j(T)-5 b(able)75 1701 y fl(Another)20 b
(facet)g(of)f(understanding)i(memory)c(allo)q(cation)h(is)i(kno)o(wing)f(whic)
o(h)h(functions)g(allo)q(cated)75 1758 y(memory)12 b(and)k(ho)o(w)e(m)o(uc)o
(h)g(they)h(allo)q(cated.)k(In)d(C,)e(memory)e(allo)q(cation)i(is)g(p)q(erfor\
med)g(explicitly)g(b)o(y)75 1814 y(calling)f fk(malloc)p fl(,)g(and)h(so)f
(programmers)e(are)i(often)h(a)o(w)o(are)f(of)g(the)h(functions)g(that)f(allo)
q(cate)g(memory)l(.)75 1870 y(Ev)o(en)g(in)g(C,)g(ho)o(w)o(ev)o(er,)f(kno)o
(wing)g(ho)o(w)h(m)o(uc)o(h)f(memory)f(w)o(as)h(allo)q(cated)g(can)h(p)q(oin)
o(t)g(out)g(functions)g(that)75 1927 y(do)20 b(unnecessary)g(allo)q(cation)e
(and)j(guide)e(the)h(programmer)d(when)j(he)h(attempts)d(to)h(optimize)f(the)
75 1983 y(space)d(consumption)e(of)h(his)g(program.)k(In)d(Lisp,)f(memory)e
(allo)q(cation)h(happ)q(ens)j(implicitly)11 b(in)j(man)o(y)75 2040 y(primitiv)
o(e)h(routines)j(suc)o(h)g(as)f fk(mapcar)p fl(,)h fk(*)p fl(,)g(and)g fk(int\
ern)p fl(.)27 b(The)18 b(direct)f(allo)q(cation)f(table)i(can)g(rev)o(eal)75
2096 y(unsusp)q(ected)f(sources)e(of)g(allo)q(cation)e(to)i(Lisp)g(programmer\
s.)146 2181 y(Figure)c(4)h(con)o(tains)g(the)g(direct)g(allo)q(cation)f(table)
h(for)f(our)i(example.)k(The)c(direct)f(allo)q(cation)f(table)75 2238 y(corre\
sp)q(onds)k(to)g(the)g(\015at)g(pro\014le)g(generated)g(b)o(y)g fk(gprof)p fl
(.)146 2322 y(The)e(\014rst)g(line)f(of)h(the)g(direct)g(allo)q(cation)e(tabl\
e)i(con)o(tains)f(the)h(totals)e(for)i(all)f(functions)h(allo)q(cating)75 2379
y(memory)l(.)24 b(In)18 b(this)f(example,)f(only)h(one)h(function,)f fk(make)
s 15 2 v 14 w(widget)p fl(,)f(allo)q(cates)h(memory)l(.)24 b(The)17 b(direct)
75 2435 y(allo)q(cation)c(table)i(prin)o(ts)f(p)q(ercen)o(t)i(of)e(total)g
(allo)q(cation)f(that)h(to)q(ok)h(place)g(in)g(eac)o(h)g(function)g(\()p fk
(%)23 b(mem)p fl(\),)75 2492 y(the)16 b(n)o(um)o(b)q(er)f(of)h(b)o(ytes)g(all\
o)q(cated)e(b)o(y)i(eac)o(h)g(function)g(\()p fk(bytes)p fl(\),)f(the)h(n)o
(um)o(b)q(er)f(of)g(b)o(ytes)h(allo)q(cated)f(b)o(y)75 2582 y 720 2 v 127 2609
a fd(1)144 2625 y fj(The)e(lab)q(el)g fg(kept)e fj(is)i(used)g(throughout)i
(the)e(pap)q(er)h(to)f(refer)g(to)g(ob)r(jects)g(that)g(w)o(ere)g(nev)o(er)g
(freed.)964 2750 y fl(5)p eop
%%Page: 4 12
 bop 75 117 a fl(are)17 b(prin)o(ted:)23 b(a)17 b(list)f(of)g(memory)f(leaks,)
h(an)h(allo)q(cation)f(bin)h(table,)f(a)h(direct)g(allo)q(cation)e(table,)i
(and)75 173 y(a)g(dynamic)f(call)g(graph.)26 b(Eac)o(h)17 b(table)f(presen)o
(ts)h(the)h(allo)q(cation)d(b)q(eha)o(vior)i(of)g(the)g(program)e(from)g(a)75
229 y(di\013eren)o(t)d(p)q(ersp)q(ectiv)o(e.)20 b(The)13 b(rest)g(of)g(this)f
(section)h(describ)q(es)h(eac)o(h)f(of)g(the)g(tables)f(for)h(the)g(C)g(progr\
am)75 286 y(in)i(Figure)f(1.)75 460 y fh(2.2)56 b(The)18 b(Memory)g(Leak)f
(T)-5 b(able)75 583 y fl(C)13 b(programmers)d(m)o(ust)h(explicitly)h(free)i
(memory)c(ob)s(jects)j(when)g(they)h(are)e(done)i(using)f(them.)18 b(Mem-)75
639 y(ory)g(leaks)g(arise)f(when)i(programmers)c(acciden)o(tly)j(forget)f(to)
h(release)g(memory)l(.)26 b(Because)19 b(Lisp)g(re-)75 696 y(claims)12 b(memo\
ry)f(automatical)o(ly)l(,)g(the)i(memory)e(leak)j(table)f(is)g(not)g(necessar\
y)h(in)f(the)h(Lisp)g(v)o(ersion)e(of)75 752 y fk(mprof)p fl(.)146 842 y(The)
18 b(memory)d(leak)i(table)g(tells)g(a)h(programm)o(er)d(whic)o(h)j(functions)
f(allo)q(cated)g(the)h(memory)d(as-)75 898 y(so)q(ciated)j(with)g(memory)e
(leaks.)30 b(The)18 b(table)h(con)o(tains)e(a)h(list)g(of)g(partial)f(call)h
(paths)g(that)g(resulted)75 955 y(in)f(memory)e(that)h(w)o(as)h(allo)q(cated)
f(and)h(not)g(subsequen)o(tly)h(freed.)26 b(The)17 b(paths)g(are)g(partial)f
(b)q(ecause)75 1011 y(complete)h(path)h(information)d(is)i(not)h(recorded;)h
(only)f(the)g(last)f(\014v)o(e)h(callers)f(on)h(the)g(call)f(stac)o(k)g(are)
75 1068 y(listed)d(in)g(the)h(memory)d(leak)i(table.)19 b(In)c(our)g(simple)e
(example,)g(there)i(is)f(only)g(one)h(suc)o(h)g(path,)f(and)h(it)75 1124 y
(tells)h(us)h(immediat)o(ely)d(what)i(ob)s(jects)g(are)g(not)h(freed.)24 b
(Figure)16 b(2)h(con)o(tains)e(the)i(memory)d(leak)j(table)75 1181 y(for)e
(our)g(example.)170 1354 y fk(allocs)119 b(bytes)23 b(\(%\))119 b(path)218
1467 y(5019)71 b(1023876)23 b(\(99\))71 b(||)24 b(>)f(main)h(>)g(make_red_wid\
get)d(>)j(make_widget)360 1671 y ff(Figure)16 b(2:)40 b fo(Memory)14 b(Leak)g
(T)m(able)g(for)g(Pro)q(ducer/Consumer)i(Example)146 1787 y fl(In)h(larger)f
(examples,)h(more)e(than)i(one)h(path)f(through)g(a)g(particular)e(function)i
(is)g(p)q(ossible.)26 b(W)l(e)75 1843 y(pro)o(vide)18 b(an)g(option)g(that)f
(distinguishes)h(individual)f(call)h(sites)g(within)f(the)i(same)e(function)h
(in)g(the)75 1900 y(memory)13 b(leak)h(table)h(if)g(suc)o(h)g(a)g(distinction)
f(is)h(needed.)75 2074 y fh(2.3)56 b(The)18 b(Allo)r(cation)i(Bin)g(T)-5 b
(able)75 2197 y fl(A)18 b(ma)s(jor)e(part)i(of)g(understanding)g(the)g(memory)
e(allo)q(cation)g(b)q(eha)o(vior)i(of)g(a)g(program)e(is)i(kno)o(wing)75 2253
y(what)f(ob)s(jects)g(w)o(ere)g(allo)q(cated.)27 b(In)18 b(C,)f(memory)e(allo)
q(cation)h(is)h(done)h(b)o(y)f(ob)s(ject)h(size;)g(the)g(t)o(yp)q(e)f(of)75
2310 y(ob)s(ject)g(b)q(eing)g(allo)q(cated)g(is)g(not)g(kno)o(wn)g(at)g(allo)
q(cation)e(time.)25 b(The)18 b(allo)q(cation)d(bin)j(table)e(pro)o(vides)75
2366 y(information)11 b(ab)q(out)i(what)g(sizes)g(of)g(ob)s(jects)g(w)o(ere)h
(allo)q(cated)e(and)i(what)f(program)e(t)o(yp)q(es)j(corresp)q(ond)75 2423 y
(to)19 b(the)g(sizes)g(listed.)32 b(This)19 b(kno)o(wledge)g(helps)h(a)f(prog\
rammer)d(recognize)j(whic)o(h)h(data)e(structures)75 2479 y(consume)12 b(the)
h(most)e(memory)f(and)j(allo)o(ws)e(him)h(to)g(concen)o(trate)g(an)o(y)h(spac\
e)g(optimizations)d(on)i(them.)146 2569 y(The)h(allo)q(cation)e(bin)i(table)g
(breaks)g(do)o(wn)g(ob)s(ject)g(allo)q(cation)e(b)o(y)i(the)g(size,)g(in)g
(b)o(ytes,)g(of)g(allo)q(cated)75 2625 y(ob)s(jects.)19 b(Figure)c(3)g(sho)o
(ws)f(the)h(allo)q(cation)f(bin)h(table)g(for)f(the)h(program)f(in)h(Figure)f
(1.)964 2750 y(4)p eop
%%Page: 3 13
 bop 75 520 a fg(typedef)17 b(struct)g({)588 b(void)153 565 y(enum)19 b(color)
e(c;)568 b(consume_wi)o(dge)o(t\()o(w\))153 611 y(int)19 b(data[50];)565 b
(widget)37 b(*w;)75 657 y(})19 b(widget;)723 b({)1056 702 y(if)19 b(\(w->c)e
(==)i(BLUE\))f({)75 748 y(#define)f(WSIZE)h(sizeof\(wi)o(dg)o(et\))506 b(/*)
19 b(record)e(blue)h(widget)g(*/)1134 794 y(free\(w\);)75 839 y(widget)f(*)
824 b(})19 b(else)f({)75 885 y(make_widge)o(t\()o(\))801 b(/*)19 b(record)e
(red)i(widget)e(*/)75 931 y({)961 b(})153 976 y(widget)116 b(*w;)528 b(})153
1068 y(w)20 b(=)f(\(widget)e(*\))i(malloc\(WS)o(IZ)o(E\);)153 1113 y(return)f
(w;)75 1159 y(})882 b(#define)17 b(NUM_WIDGET)o(S)95 b(10000)75 1250 y(widget)
17 b(*)745 b(int)75 1296 y(make_blue_)o(wi)o(dge)o(t\()o(\))546 b(main\(\))75
1341 y({)882 b({)153 1387 y(widget)116 b(*w;)607 b(int)175 b(i;)1056 1433 y
(widget)115 b(*wqueue[NU)o(M_)o(WID)o(GE)o(TS])o(;)153 1478 y(w)20 b(=)f(make\
_widg)o(et\()o(\);)153 1524 y(w->c)g(=)g(BLUE;)665 b(for)18 b(\(i)h(=)g(0;)g
(i)g(<)h(NUM_WIDG)o(ETS)o(;)c(i++\))153 1570 y(return)i(w;)764 b(if)19 b(\(ra\
ndom_f)o(lip)o(\(\))o(\))75 1615 y(})1039 b(wqueue[i])16 b(=)k(make_blu)o(e_w)
o(id)o(get)o(\(\);)1095 1661 y(else)75 1707 y(widget)d(*)902 b(wqueue[i])16 b
(=)k(make_red)o(_wi)o(dg)o(et\()o(\);)75 1752 y(make_red_w)o(id)o(get)o(\(\))
75 1798 y({)961 b(for)18 b(\(i)h(=)g(0;)g(i)g(<)h(NUM_WIDG)o(ETS)o(;)c(i++\))
153 1844 y(widget)116 b(*w;)646 b(consume_w)o(idg)o(et\()o(wq)o(ueu)o(e[)o
(i]\))o(;)153 1935 y(w)20 b(=)f(make_widg)o(et\()o(\);)546 b(return)17 b(0;)
153 1981 y(w->c)i(=)g(RED;)606 b(})153 2026 y(return)18 b(w;)75 2072 y(})387
2266 y ff(Figure)e(1:)40 b fo(A)14 b(Simple)h(Pro)q(ducer/Consumer)h(Sim)o
(ulation)f(Program)964 2750 y fl(3)p eop
%%Page: 2 14
 bop 75 117 a fl(allo)q(cation)12 b(and)i(also)g(records)f(the)i(dynamic)e
(call)g(c)o(hain)h(at)f(an)h(allo)q(cation)e(to)i(sho)o(w)f(whic)o(h)h(functi\
ons)75 173 y(w)o(ere)g(indirectly)f(resp)q(onsible)i(for)e(the)h(allo)q(catio\
n.)k(The)d(design)f(of)g fk(mprof)f fl(w)o(as)g(inspired)i(b)o(y)f(the)g(to)q
(ol)75 229 y fk(gprof)p fl(,)i(a)g(dynamic)f(execution)h(pro\014ler)g([2].)23
b fk(gprof)16 b fl(is)f(a)i(v)o(ery)f(useful)g(to)q(ol)g(for)f(understanding)
i(the)75 286 y(execution)j(b)q(eha)o(vior)f(of)h(programs;)f fk(mprof)h fl
(extends)g(the)g(ideas)f(of)h fk(gprof)f fl(to)g(giv)o(e)g(programmers)75 342
y(information)13 b(ab)q(out)j(the)g(dynamic)f(memory)e(allo)q(cation)i(b)q
(eha)o(vior)g(of)h(their)f(programs.)20 b fk(Mprof)c fl(is)f(a)75 399 y(t)o
(w)o(o-phase)h(to)q(ol.)23 b(A)16 b(monitor)f(phase)i(is)f(link)o(ed)g(in)o
(to)g(an)g(executing)h(application)e(and)i(collects)f(data)75 455 y(as)f(the)
g(application)f(executes.)21 b(A)15 b(reduction)g(and)h(displa)o(y)e(phase)h
(tak)o(es)g(the)g(data)g(collected)g(b)o(y)g(the)75 512 y(monitor)e(and)i(pre\
sen)o(ts)g(it)g(to)f(the)i(user)f(in)g(concise)g(tables.)146 596 y(A)21 b(pro\
\014ling)g(program)e(suc)o(h)i(as)g fk(mprof)g fl(should)g(satisfy)f(sev)o
(eral)h(criteria.)37 b(First,)21 b(a)g(program)75 652 y(monitor)d(should)i
(not)g(signi\014can)o(tly)e(alter)h(the)i(b)q(eha)o(vior)e(of)h(the)g(program)
e(b)q(eing)j(monitored.)32 b(In)75 708 y(particular,)12 b(a)h(monitor)d(shoul\
d)k(not)e(imp)q(ose)g(so)h(m)o(uc)o(h)f(o)o(v)o(erhead)h(on)g(the)g(program)e
(b)q(eing)j(monitored)75 765 y(that)g(large)f(programs)g(cannot)h(b)q(e)h(pro\
\014led.)20 b(Second,)15 b(a)g(monitor)d(should)i(b)q(e)i(easy)e(to)g(in)o
(tegrate)f(in)o(to)75 821 y(existing)i(applications.)22 b(T)l(o)16 b(use)g fk
(mprof)p fl(,)f(programmers)e(simply)i(ha)o(v)o(e)g(to)h(relink)g(their)f(app\
lications)75 878 y(with)k(a)g(sp)q(ecial)h(v)o(ersion)f(of)g(the)g(system)g
(library)l(.)32 b(No)19 b(source)h(co)q(de)g(mo)q(di\014cations)e(are)h(requi\
red.)75 934 y(Finally)l(,)c(a)g(monitor)f(should)i(pro)o(vide)f(a)h(programme\
r)d(with)i(information)f(that)h(he)h(can)g(understand)75 991 y(and)k(use)g
(to)f(reduce)h(the)g(memory)d(allo)q(cation)g(o)o(v)o(erhead)i(of)h(his)f(pro\
grams.)31 b(W)l(e)19 b(will)f(presen)o(t)i(an)75 1047 y(example)14 b(that)h
(illustrates)e(suc)o(h)i(a)g(use)h(of)e fk(mprof)p fl(.)146 1131 y(In)f(Secti\
on)h(2,)f(w)o(e)g(presen)o(t)g(a)g(simple)e(program)h(and)h(describ)q(e)h(the)
f(use)h(of)f fk(mprof)f fl(with)h(resp)q(ect)h(to)75 1188 y(the)g(example.)k
(In)d(Section)f(3)g(w)o(e)f(discuss)h(tec)o(hniques)h(for)e(the)h(e\013ectiv)
o(e)f(implemen)o(tatio)o(n)f(of)h fk(mprof)g fl(.)75 1244 y(Section)f(4)g(pre\
sen)o(ts)g(some)f(measuremen)o(ts)e(of)j fk(mprof)p fl(.)18 b(Section)12 b
(5)g(describ)q(es)h(other)e(memory)f(pro\014ling)75 1300 y(to)q(ols)j(and)i
(previous)f(w)o(ork)f(on)h(whic)o(h)g fk(mprof)g fl(is)f(based,)i(while)e(Sec\
tion)h(6)g(con)o(tains)g(our)g(conclusions.)75 1477 y fm(2)69 b(Using)24 b fi
(mprof)75 1609 y fh(2.1)56 b(A)19 b(Pro)r(ducer/Consumer)f(Example)75 1723 y
fl(T)l(o)c(illustrate)f(ho)o(w)i fk(mprof)f fl(helps)h(a)f(programmer)e(under\
stand)j(the)g(memory)d(allo)q(cation)h(in)i(his)f(pro-)75 1780 y(gram,)d(cons\
ider)h(the)g(C)g(program)e(in)i(Figure)g(1.)19 b(In)12 b(this)g(program,)e
(a)i(simpli\014ed)f(pro)q(ducer/consumer)75 1836 y(sim)o(ulation,)16 b(ob)s
(jects)h(are)h(randomly)f(allo)q(cated)g(b)o(y)h(t)o(w)o(o)f(pro)q(ducers)i
(and)g(freed)f(b)o(y)h(the)f(consumer.)75 1893 y(The)d(function)g fk(random)s
15 2 v 13 w(flip)p fl(,)f(whic)o(h)g(is)h(not)f(sho)o(wn,)g(randomly)f(return\
s)i(1)f(or)g(0)h(with)f(equal)g(proba-)75 1949 y(bilit)o(y)l(.)k(The)12 b(fun\
ction)g fk(consume)s 15 2 v 13 w(widget)p fl(,)g(whic)o(h)g(is)f(resp)q(onsib\
le)h(for)g(freeing)g(the)g(memory)d(allo)q(cated,)75 2006 y(con)o(tains)j(a)h
(bug)h(and)f(do)q(es)g(not)g(free)g(red)h(widgets.)k(If)c(the)f(sim)o(ulation)
d(ran)j(for)g(a)f(long)h(time,)f(memory)75 2062 y(w)o(ould)j(ev)o(en)o(tually)
f(b)q(e)i(exhausted,)f(and)g(the)h(program)d(w)o(ould)h(fail.)146 2146 y(In)k
(the)g(example,)f fk(make)s 15 2 v 14 w(widget)g fl(is)h(the)g(only)f(functio\
n)h(that)f(allo)q(cates)g(memory)e(directly)l(.)28 b(T)l(o)75 2202 y(fully)19
b(understand)h(the)f(allo)q(cation)f(b)q(eha)o(vior)h(of)g(the)h(program,)e
(w)o(e)h(m)o(ust)f(kno)o(w)h(whic)o(h)g(functions)75 2259 y(called)g fk(make)
s 15 2 v 14 w(widget)g fl(and)g(hence)i(w)o(ere)e(indirectly)g(resp)q(onsible)
h(for)f(memory)e(allo)q(cation.)31 b fk(Mprof)75 2315 y fl(pro)o(vides)15 b
(this)f(information.)146 2399 y(T)l(o)g(use)g fk(mprof)p fl(,)g(programmers)d
(link)j(in)g(sp)q(ecial)g(v)o(ersions)g(of)g(the)g(system)f(functions)h fk
(malloc)g fl(and)75 2456 y fk(free)p fl(,)j(whic)o(h)h(are)f(called)h(eac)o
(h)g(time)e(memory)f(is)i(allo)q(cated)g(and)h(freed,)g(resp)q(ectiv)o(ely)l
(.)27 b(The)18 b(appli-)75 2512 y(cation)e(is)h(then)g(run)h(normally)l(.)23 b
(The)18 b fk(mprof)e fl(monitor)f(function,)i(link)o(ed)g(in)g(with)f fk(mall\
oc)p fl(,)h(gathers)75 2569 y(statistics)g(as)h(the)h(program)e(runs)i(and)g
(writes)f(this)g(information)e(to)j(a)f(\014le)h(when)g(the)g(application)75
2625 y(exits.)34 b(The)20 b(programmer)d(then)k(runs)f(a)g(displa)o(y)f(progr\
am)f(o)o(v)o(er)h(the)h(data)g(\014le,)h(and)f(four)g(tables)964 2750 y(2)p
eop
%%Page: 1 15
 bop 165 299 a fr(A)22 b(Memory)g(Allo)r(cation)i(Pro\014ler)f(for)f(C)f(and)
g(Lisp)h(Programs)815 425 y fq(Benjamin)16 b(Zorn)619 483 y(Departmen)o(t)g
(of)g(Computer)h(Science)612 541 y(Univ)o(ersit)o(y)f(of)g(Colorado)j(at)e
(Boulder)827 658 y(P)o(aul)g(Hil\014nger)510 716 y(Computer)f(Science)g(Divis\
ion,)i(Dept.)k(of)16 b(EECS)596 774 y(Univ)o(ersit)o(y)f(of)i(California)i
(at)e(Berk)o(eley)884 925 y fp(Abstract)251 984 y fo(This)g(pap)q(er)h(descri\
b)q(es)h fn(mprof)p fo(,)d(a)h(to)q(ol)g(used)g(to)g(study)g(the)g(dynamic)g
(memory)f(allo)q(cation)189 1034 y(b)q(eha)o(vior)f(of)e(programs.)19 b fn
(Mprof)14 b fo(records)i(the)f(amoun)o(t)e(of)h(memory)g(that)g(a)g(function)
h(allo)q(cates,)189 1084 y(breaks)d(do)o(wn)g(allo)q(cation)h(information)f
(b)o(y)f(t)o(yp)q(e)i(and)e(size,)j(and)d(displa)o(ys)i(a)f(program's)f(dynam\
ic)189 1134 y(call)19 b(graph)e(so)h(that)g(functions)h(indirectly)i(resp)q
(onsible)g(for)c(memory)h(allo)q(cation)h(are)f(easy)g(to)189 1183 y(iden)o
(tify)m(.)f fn(Mprof)9 b fo(is)i(a)f(t)o(w)o(o-phase)g(to)q(ol.)17 b(The)10 b
(monitor)g(phase)h(is)g(link)o(ed)g(in)o(to)g(executing)h(programs)189 1233 y
(and)h(records)i(information)e(eac)o(h)h(time)g(memory)f(is)h(allo)q(cated.)
19 b(The)14 b(displa)o(y)g(phase)g(reduces)i(the)189 1283 y(data)c(generated)
j(b)o(y)e(the)g(monitor)h(and)e(presen)o(ts)j(the)f(information)f(to)g(a)g
(user)h(in)g(sev)o(eral)h(tables.)189 1333 y fn(Mprof)f fo(has)i(b)q(een)g
(implemen)o(ted)i(for)d(C)g(and)h(Ky)o(oto)f(Common)f(Lisp.)24 b(Measuremen)o
(ts)17 b(of)e(these)189 1383 y(implemen)o(tations)g(are)g(presen)o(ted.)75
1524 y fm(1)69 b(In)n(tro)r(duction)75 1650 y fl(Dynamic)15 b(memory)g(allo)q
(cation,)g(hereafter)i(referred)g(to)g(simply)e(as)i(memory)d(allo)q(cation,)
i(is)g(an)h(im-)75 1706 y(p)q(ortan)o(t)h(part)g(of)g(man)o(y)f(programs.)28 b
(By)19 b(dynamic)e(allo)q(cation,)g(w)o(e)i(mean)e(the)i(memory)d(allo)q(cate\
d)75 1763 y(from)10 b(the)i(heap.)19 b(Unnecessary)12 b(allo)q(cation)e(can)i
(decrease)h(program)c(lo)q(calit)o(y)h(and)i(increase)g(execution)75 1819 y
(time)17 b(for)i(the)g(allo)q(cation)e(itself)g(and)j(for)e(p)q(ossible)h(mem\
ory)d(reclamation.)28 b(If)20 b(reclamation)c(is)i(not)75 1876 y(p)q(erformed\
,)11 b(or)h(if)f(some)f(ob)s(jects)i(are)f(acciden)o(tly)g(not)h(reclaimed)e
(\(a)h(\\memory)e(leak"\),)i(programs)f(can)75 1932 y(fail)j(when)i(they)g
(reac)o(h)f(the)h(memory)d(size)i(limit.)j(Programmers)11 b(often)j(write)g
(their)g(o)o(wn)g(v)o(ersions)f(of)75 1989 y(memory)d(allo)q(cation)h(routine\
s)i(to)f(measure)g(and)h(reduce)h(allo)q(cation)d(o)o(v)o(erhead.)18 b(It)13 b
(is)g(estimated)e(that)75 2045 y(Mesa)16 b(programmers)e(sp)q(en)o(t)i(40%)g
(of)h(their)f(time)f(solving)g(storage-managemen)o(t)e(related)j(problems)75
2102 y(b)q(efore)h(automatic)d(storage)h(reclamation)g(tec)o(hniques)h(w)o
(ere)h(in)o(tro)q(duced)g(in)f(Cedar)h([7)o(].)24 b(Ev)o(en)17 b(with)75 2158
y(automatic)11 b(storage)h(managemen)o(t,)e(in)j(whic)o(h)g(reclamation)e(o)q
(ccurs)i(transparen)o(tly)l(,)f(memory)f(allo)q(ca-)75 2214 y(tion)i(has)g
(a)h(strong)e(e\013ect)i(on)f(the)h(p)q(erformance)f(of)g(programs)e([4].)18 b
(Although)c(memory)d(allo)q(cation)g(is)75 2271 y(imp)q(ortan)o(t,)g(few)i
(soft)o(w)o(are)f(to)q(ols)g(exist)h(to)f(help)i(programmers)c(understand)k
(the)f(memory)e(allo)q(cation)75 2327 y(b)q(eha)o(vior)k(of)g(their)f(program\
s.)146 2409 y fk(Mprof)i fl(is)h(a)g(to)q(ol)g(that)g(allo)o(ws)e(programmers)
f(to)j(iden)o(tify)g(where)g(and)h(wh)o(y)f(dynamic)g(memory)75 2465 y(is)g
(allo)q(cated)f(in)h(a)g(program.)25 b(It)17 b(records)g(whic)o(h)h(functions)
f(are)g(directly)f(resp)q(onsible)i(for)f(memory)75 2537 y 720 2 v 144 2579 a
fj(This)12 b(researc)o(h)h(w)o(as)f(funded)h(b)o(y)f(D)o(ARP)m(A)g(con)o(trac\
t)h(n)o(um)o(b)q(er)f(N00039-85-C-0269)h(as)f(part)h(of)e(the)i(SPUR)f(resear\
c)o(h)75 2625 y(pro)r(ject.)964 2750 y fl(1)p eop
%%Trailer
 end
%%EOF