HAL Id: inria-00073312
https://hal.inria.fr/inria-00073312
Submitted on 24 May 2006
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Code Cloning Tracing: A New Approach to Trace Collection
Thierry Lafage, André Seznec, Erven Rohou, François Bodin
To cite this version:
Thierry Lafage, André Seznec, Erven Rohou, François Bodin. Code Cloning Tracing: A New Approach to Trace Collection. [Research Report] RR-3377, INRIA. 1998. �inria-00073312�
ISSN 0249-6399
a p p o r t
d e r e c h e r c h e
INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE
Code Cloning Tracing: A New Approach to Trace Collection
Thierry Lafage, Andr´e Seznec, Erven Rohou, Fran¸cois Bodin
N ˚ 3377
March 1998
TH `EME 1
.0/2143657578:9<;>=?;A@B3ACDE%F57GIH#3KJ6E%3KLMCONP5QB3RESTA/2TAU+C%V25W;>E%XKTA1ZY[0T\F1ZE
]+^`_7a0b0cedgf<hijbk6l`mb noijp`i?nj_a0bi
q,r?s6tub n<vwoq x
f<kRyzyMsRrjn {zbr?b7|}^`br~|}^`b\RKRdIk6r~|}^ c766dcyzk66b7i
Wz66 ]#r~k6| b*{zrjRbijal`knjsKi<k+{`bplzijb{n?b7|}^z`l`bn?sb Wklzknjba0|r?sKyzr?s`| bi~i?sKrkRrj|}^znjb|*n~lzrjbk6z{M WsRr
a0ba0sKr?p¡^`b7rjkRrj|}^Kp¢yMbr?£¤sRr~ak6z| b6¥§¦esWOb6b7r ¨i?s6£¤nkRr?bnjr~k6| b©|*sRb| n?sRªz{>lz|*b7iijK`¬«A| k6Knb mb7| l`njsKi?sWo{`sWo®¥
wei<sKZ`b-ija-l`kn?sRz{zl>|*bi¯k6b6b7©a0sRrjb{`ijkRi?n~r?sKlzioijsWo{`sWo°¨Mija-l`k6n?`kRyzy`|kn?sR>ioz| lzr~rj`njrjsR>ios£
zijnjr~lz|*njsKzi| kR`s6n±Mb|*sKzi?{`b7r?b7{ +nj^`sKl`nn~rjkR|*bijkRay``M¥]+^`brjb*£¤sKr?b|*sKKn?KlzsRlzi²ijs£¤n k6rjbnjr~k6|*b| s6b7|*n?sRIs£
n~^`b|*sKa0yzbn?b²sRr~³RsRkR{s£%k{`bi~³Kn?sKy| sRayzl`njbr+| kRz`sRn ±Mb²bKijk66b{°¥
]+^`bvOs{zbvOsK``©]#r~k6| z©a-bnj^`s`{ik6a0b{´k6nksW+`n~rjkR|*b|*sRb| n?sRsKInja0b|*sR>ijlza0`©k6y>y`| k6n?sRzi¥
xkRay``nj^zb0b m`b| lzn?sR©iPy>b7ru£¤sKrja0b7{©nj^>r?sKl`R^Ikijnjk6n?|0{>lzy`|kn?sRIk6z{ >i?n~rjlza0b7Rn~knjsK©s£nj^`bijsRlzr~|*b0|*s`{`bR¥-w
«Mr~ijnO|*sKyKps£°n~^`b<| s{zb<i,`b7k6rjp-{`b7Kn?| kAn?snj^`besRrjRzk6>|*s`{`bek6z{+Ab*m`b7| l`njb<a0sRijnµs£°n~^`b<nja0b6¥%]+^`b¯i?b7|*sKz{|*s`{`b
| sRyKp©i¯£¶lzr?n~^`brPzijnjr~lza0bKn?b7{I±Kp©n~^`bnjr~k6| b0l>i?b7r²k6z{I+,±Mbyzk6r~i?a0sR`sRl>i?p·b*m`b|l`n?b7{ IsRr~{`br¯n?s·| s6b7|*nPnjr~k6| bi
+nj^`sKl`nijsW+`·{`sWoIn?ss·alz|}^Inj^`bsWRbr~k%k6yzy`| knjsK®¥w n²b*m`b|l`n?sRIn?a0b6¨2i?sKa0b·¸ ¹W¸*ºM»¶¼ak6³bn~^`bb*m`b|l`n?sR
ij+n~|}^·n?snj^`b0zi?n~rjl>a-b7Kn?b{ |*s`{`b-| sRyKp6¥²½enj^`b7r0¸ ¹W¸*ºM»¶¼ak6³6bn~^`bb mb7| l`njsK©rjb njl>rj·njsn~^`bsKr?6zk4³b| s{zb-|*sKyKp6¥
]+^`b|}^zs6|*bPs£nj^`b7i?b¸ ¹¾¸ º>»¿¼²{`b njbr~a-`b7i nj^`b²b mb7| l`njsKsWRbr~^`bkR{®¨nj^`b7r?b £¤sRrjb¯akR³R`nj^zbk6yzyzrjsRkR|}^RbrjpÀ>b*m`±`bR¥
]+^`i%yzkRy>b7r%yzr?b7i?b7Knji2-{`bnjk6i%nj^zbovOs`{`bevOsRz`²]rjkR|*`Pa-bnj^`s`{®¥ÁÂboki?sPyzrjbijbKn
6zöİŶÆ
¨6nj^zb «Mrjijn%yzrjs6n?sRnp`y>b
ay`b7a0bKn?b7{ njsWk{zknjbnj^zb0kRyzyzrjsRk6|}^°¥eÇ%mzyMbrja0b7Rn~iPij^`sWn~^zknvOs`{`bvOsK`z]rjkR|*`| sRl`{ ±Mb0kRyzy`b7{©sK©k
kRyzy`|kn?sR>irjl>z``·sR´{`b7ij³KnjsRy|*sKa0y>l`n?b7r²+n~^`sRlzn-ijK`¬«A| k6Knjp kÈAb7|*nj`Ilzi?b7rrjbi~y>sKzi?bnja0bo^zbnjr~k6| bi²kRr?b
`sRne| s6b7|*n?b7{®¥o]+^`i<sKy>b7zion~^`b k¾pn?syzl>z|*n~lzkɶb n¯lziei~k¾psK`bijb| sRz{s6£vOqµÊPËo|*s6b|*njsKs£µn~^`bo^`sRb-k6|*njnp
s6£2k{`b7ij³Kn?sKy| sRayzl`njbr¥
ÌÍKÎBÏjÐ-Ñ WÒ6 i?s6£¤nkRr?b¯njr~k6| z>¨zijnjknj|²| s`{`bk6zzs6njk6n?sRa0b nj^zs{°¨Ma0|r?s64kRrj|}^znjb|*n~lzrjb¯ija-l`kn?sR°¨`njr~k6|*b 4| s6b7|*njsK
y`kn?£¤sRr~a¥
ÓÕÔ°Ö?×4Ø7ÙÖ+ÚÛ×4ÜZÝ Þ
Unit´e de recherche INRIA Rennes
IRISA, Campus universitaire de Beaulieu, 35042 RENNES Cedex (France) T´el´ephone : 02 99 84 71 00 - International : +33 2 99 84 71 00
T´el´ecopie : 02 99 84 71 71 - International : +33 2 99 84 71 71
&# !##(
kÂa-hnj^`s`{`b6¸WºÕº "!$#%Õº& b*mzyMsRijh b{zk6>i0| b nk6rjn?|*by>b7rja0b nkI| s6b7|*njb{`bn~rjkR|*bii~lzr{`b
Kr?sKijijbiPk6y>y`| k6n?sRziÉZ|*s&'`n?b7lzi?b7i²bÂnjbayzi}Ë ¥ÊeÂh|}^zkRKn?sRz>k6bb7i?nrjhk6i?hyzkRrP)(b*m`h7| l`njsKÂk6njbr~zknjRb{`b{`bl`m
| sRy`bie{zl·|*s`{`bR¥+Êe`b0{`bie|*sRyzb7i+bijn<yzrjbi~l`b{`bKn?l`bkRl·|*s`{`bsKr?6zk\b n<i*(b m`h| lzn?bky`lzyzkRr?n<{>ln?bayzi-É)+lz`b
n?bi~ijb-yzrjs`|}^`b{`b0|*b b-{`b-)(k6yzyz| k6n?sRsRrj6zkb¾Ë}¥ kijb| sRz{zb|*sKy`b0{zl©| s{zbbijn<zijnjr~lza0bKn?hb-y`lziesKlzr~{`ba0bKn
yMsRlzr<y>b7rja0b njnjrjbk|*s6b|*njb²b*ÈBb| n?6b{`bknjr~k6| b6¥+vOb b 4| °bijn+b*m`h|l`n?hbk¾6b7|²yzk6r~|*a0sR`b²y>sKlzro`by>k6i+n~r?sKyr~kbKn?r
,(kRyzy`|knjsKnjbijn?h bR¥- )(b*m`h7| l`njsK®¨z|*b7r?n~kzi h Rh`b7a-b7Knji+yMbr~a-bn?njbKn+bi~k6lzn {.(lzzb|*sRyzb/+0)(k6lznjrjb6¥
(kRr?nj| byzrjhijbKn?bk6lzi~ij2l>Iyzrjba0brPyzrjs6njs6np`y>bR¨®k6yzyMb h 6zÃ¶Ä°Å¶Æ ¨\y>sKlzr¯ay`ha0b7RnjbrPka0hnj^`s`{`b0*R¸123ºÕº
"!$#%Õº&6¥q2sKlzr²ba-sKa0bKn ¨ 6zÃ¶Ä°Å¶Æ b7i?nlzn?i?hk¾Rb|0{`bik6yzy`| knjsKzi²a0sR`s6Zn546|}^`b7i²ijl>r²k6r~|}^`njb| njlzrjbxKq®wof<ve¥ bi
rjhi~l`njkn~isK±`n?b7Kl>ik¾6b7|{`bi-k6yzy`| knjsKzizijnjr~lza0bKn?hbiy>k6r RzÃ¤Ä°Å¿Æ ¨%i*(b m`h| lznjk6Kni~k6>i²6h7`hrjbr{zbnjr~k6| b6¨sRKn²£¶kn
kRyzyzk6r~k76Õnjrjb{`b0£¶k±`b7i²rjk6b7Kn?ijijba0bKn~i¯{zb)(b*m`h|l`n?sRªÉ,8$9:+;9=<Ë ¥vOb| %sRl``rjb-k6s6b{`bk| s6b7|*n?b{`bn~rjkR|*b{`b
,(kR|*njn?hP|*sRay`_ njb¯{.(lzzbPijnjk6n?sR{`ben~rjk¾Wk6Z¥#q2sKlzr |*b kz¨ 6>Ã¤Ä°Å¶Æ ijbr~k±zb7Rn">6nh njbz{zlyMsRlzry>b7rja0bn?njrjbP{`bPnjr~k6|*b7r,{`b7i
kRyzy`|kn?sR>i+al`n?Zn546|}^`b7i+kzij°Klzb¯bijpijn?_7a0bP{.(b m`yzsRn~kn?sRIÉ lmMË}¥
?Ñ Ï RÃ |*s6b|*njb{`bnjr~k6| biP{`byzrjs6KrjkRa0a0bR¨Ba0hnj^`s`{`b{@(k6>`s6n~kn?sRÂijnjknjl`b{`b| s{zb6¨#ijal`knjsKI{`ba0| rjs
kRrj|}^`n?b7|*n~lzr?bR¨zy`kn?b ¿£¤sKrja0bP{`b|*sRb| n?b²{`b²n~rjkR|*bi¥
&#
,&#* P&
P&*:
]rjkR|*b 4{zrj6bi?alzk6n?sRuK6s66b7i {zr?zkija-l`kn?sRa0s`{`b \s£%k0ijp`i?njba +n~^k0n~rjkR|*bPs£2b*m`n?b7rj>k°ijn?al`c84¥
n0^zk6i±Mb b7¢lzijb{´±Kpr?b7i?b7k6r~|}^`br~ie£¤sRr{`b7| kR{`bin?s©b¾k6l>kn?ba0| rjsRyzrjs`|*b7ijijsRrPk6r~|}^`n?b7|*njl>r?b7ik6z{A ¾sRr²a0b7a-sKr?pÂi?p`ijn?b7a
yMbr?£¤sRr~ak6z| bi¥%xl>|}^i?al`knjsKziµa0R^Knµ±>b¯k6iµkR| |lzrjk6n?bokRiµy>sKijij±`bek6z{rjbl`r?bo| s6b7|*n?`rjbk6i?nj|+y>r?sRRr~k6an~rjkR|*bi¥
]+^`b7i?bn~rjkR|*bi²ak¾p | sRziji?n¯s£ nj^`bkR{z{zrjbi~i?b7i¯s£Ozijnjr~lz|*njsKziPb*m`b7| l`njb{Âk6z{M WsRrP{zk6njkr?b £¤brjbz| b{±Kp kyzr?sRRr~k6a ɤ£¤sKr
|k6|}^`b+ija-l`k6n?sRzi}Ë ¨K±zl`n,ak¾pk6ijs²±>borjb Rijn?b7rji2sKr%a0ba0sRrjpWkl`bioɶn?sijal`knjb+¾k6lzboyzr?b7{`|*n?sR£¤sRrµzijnjkRz|*bWË ¥µxlz|}^
n~rjkR|*bi#k6rjb,`bb{`b7{²£¤sRr#k6r~|}^`n?b| njlzrjb,ija-l`kn?sR>i\k6>{²Wk{zk6n?sRzi#k<yzrjs`|*b7ijijsRr°{zbijK®¨¾sRr®£¤sKr#zb ¢a0|r?s64kRrj|}^znjb|*n~lzrjb
{`bkRi Wk{zk6n?sRzi¥
u{`b7kpR¨¾sR`bµsRlz{²`bb{kR| | bi~i®n?senjr~k6|*b7i°rjbyzrjbijbKn?`+n~^`b,o^`sRbOyzlzz| njlzk6KkR|*n?np¯s£>koOsKrj³ijnjknjsK¯sRr°ke{`bi~³Kn?sRy
| sRayzl`njbrO£¤sRr k0i?R`«M|k6Kn,nja0bPKnjbrj¾k62É¿ak¾p`±>bPk£¤b§ijb|*sKz{zi}Ë ¥%]+^`iz| l>{`bi k6| n?nps6£#k®kRb¯yzrjs`|*b7ijijbiOk6z{
n~^`b-³6br~`b Z¥+©sRrjb sWRbr¨zsRzbOsKl`{³bn~^`bijbn~rjkR|*b7i+n?s±>b0r?b7yzr?b7i?b7KnjknjRbPs£µnj^zb-rjbk#OsKrj³KsRkR{sKnj^`b0i?n~kn?sR°¨MZ¥bR¥
`sRneaa0b{`knjb p kW£¤njbrP±>ssRn?`n~^`bsRyMbr~kn?`i?p`ijn?ba¨°±zlzne£¤sKr<zijnjkRz|*bk6I^`sRlzresRrPkObb³kn?b7r ¥esWkR{zk¾p`i ¨A`s
y`kn?£¤sRr~a ksWoi+ijlz|}^k6{`bk6®njr~k6|*b²| s6b7|*n?sR°¥
©sKi?n| lzr~rjbKnµnjr~k6| b*|*sRb| n?sRy`knu£¤sKrjaik6rjboa0n?b{n?s0|*s6b|*nOnjr~k6| bi%£¶rjsRa k-i?`6bekRyzy`|knjsK®¨RRb`b7rjk6p0sR`p
lzijbrOzi?n~rjl>|*n?sR>iOn~^`i kRyzy`|kn?sR¬cZ¨`o^zbenkRi,i~^`sWonj^>knnj^`bPlzi~k6bes£\i~lz|}^l>z|*sKa0yzbn?b{njr~k6| biµbkR{ziOn?s
ijK`«M| kRRn+a0i?bkR{`z| sRz| l>i?sRzic6¨°c `¨®c¾Z¥
we`s6n~^`br |*sKz|*b7rj£¤sRra-| rjsk6r~|}^`n?b7|*njl>r?b<ijnjl>{`b7iinj^zb¯yMbr?£¤sRr~ak6z| b<s£#njr~k6|*b¯|*sRb| n?sR®¥%w<a0sK`-n~^`bPKl>a-b7r?sKlzi
n~rjkR|*b|*sRb| n?sRy`kn?£¤sRr~a0ik¾¾k6k6±zb!c4¨zsR`bs6£n~^`ba ksWoik·i?sWo{`sWo©sWbrPnj^>k6c*9£¤sKri?ay`pÂ| s6b7|*n?`
kR{z{zrjbi~i?b7i¯£¤sRra0ba0sKr?pÂ^`b7rjkRrj|}^Kp ijal`knjsKzi ¥#">sKri?n~lz{`bi²³bWkl`byzrjb{z| n?sR$Z¨2a0sRrjb`£¤sRr~a0k6n?sRal>i?n±Mb
| s6b7|*n?b7{®¨zn~^Kl>i b7k6{``n?sRbrjp^`K^ijsWo{`sWozi¯É¶sWRbr¯c*9;9KË ¥
Á ^`b-n~rjkR|*b| s6b7|*n?sRi¯Klznjb-nja0b|*sR>ijlza0`>¨Ba0|r?s64kRrj|}^znjb|*n~lzrjb0É¿sRr¯a0ba0sRrjpijp`i?njbaË+ijal`knjsK·ies£¤njb
sKrj{`b7rji¯s6£ akK`njlz{`ba0sRrjb|*sKa0yzb mIk6z{Âak¾p©z{zlz| bi?sWo{`sWozieÂn~^`b·c6¨9$9;9%Ac9z¨9$9;9rjkR`6bR¥xl>|}^Âkija-l`kn?sR
r~knjbe{`sbi`sRnOksW¡njs-| sRzij{zbr,rjbk6ijn?|<ija-l`k6n?sRs6£\nj^`bebKn?rjb<sRr~³RsRkR{0s£\k{zbi~³RnjsRy| sRayzl`njbrOsRr,b 6b7kk6rj6b
kRyzy`|kn?sRÂb mb7| l`njzn~r?sRzis£ zijnjr~lz| n?sRzi¥xKal`knjz©ijlz|}^Âk6y>y`| k6n?sRzi²rjbl`rjbi²i~k6ay``& '4¥]+^`b7r?b £¤sRrjb6¨
kRyzk6rjnP6brjp©i~y>b7|*«M|i?n~lz{`bi²³6b0|k6|}^`b±Mb^zk¾sRrPk6>kpijies6£On~^`bo^`s6bxKqµÇv&8±>b7z|}^zak6r~³·ijlznjb()µo^`|}^Âlzijb{
a0sRKn~^zi+s£,vOqµÊnja0bR¨Ma0sRijnoi?n~lz{`bi+sK| k6|}^zb¯sKroa0|r?s64kRrj|}^znjb|*n~lzrjbek6rjb²y>b7ru£¤sKrja0b7{l>i?`nj^zbP«Mrjijn²c*9;9z¨9$9;9z¨9$9$9sRr
±`sR·zijnjr~lz|*njsKzios6£µk6·k6y>y`| k6n?sRÂÉ¿ak¾p`±Mbnj^zb²«Mr~i?n*$9z¨9$9;9z¨9$9$90k6rjbi~³RyzyMb{·njsk¾6sR{n~^`b`n?k,+7kn?sRyz^>k6ijb¾Ë
sKr+k6rjbPyMbr?£¤sRr~a0b{lzij`ki~a0k6®sKr+r?b7i?n~r?|*njb{{zkn~ki?bn ¥
]+^`byzlzr~y>sKi?bs£<n~^`i0y>k6yMbr-i-n?sÂKn~r?s`{zlz| bvOs`{`b·vOsK`zI]rjkR|*`>¨µkI`b ijs£¤n k6rjbk6>`s6n~kn?sR a-bnj^`s`{¢£¤sRr
| s6b7|*n?`njr~k6| bi¥%x`k6ay``n~^`b²b*m`b|l`n?sRi<y>b7ru£¤sKrja0b{nj^zrjsRlzR^kijnjk6n?|¯{>lzy`|kn?sRk6>{zijnjr~lza0bKnjk6n?sRs£#n~^`b
| s{zb6¥w«MrjijnP|*sRyKps£Onj^`b|*s`{`b-iP`b7k6rjp{`bKn?| k62n?sn~^`bsRrjR>k#| s`{`b0kRz{·+2b mb7| l`njb0a0sKi?n¯s£,n~^`b0n?a-bR¥]+^`b
ijb| sRz{|*s`{`b²|*sKyKpi£¶lzrjnj^zbr zi?n~rjl>a-b7Kn?b{±Kpnj^zb¯n~rjkR|*bPlzijbr.-ekRz{y>k6r~i?a0sR`sRlzijp0b m`b| lzn?b{sKrj{`b7rn?s6bnn~rjkR|*b
+nj^`sKl`n+i?sW+`{`sWonjss0a-lz|}^n~^`besWRbr~k>k6y>y`| k6n?sR®¥%w nb*m`b|l`n?sRn?a0b6¨`i?sKa0b¸ ¹¾¸ º>»¿¼eak6³6b<n~^`beb m`b| lzn?sR±Mb
ij+n~|}^`b{0njs²nj^`bozijnjr~lza0bKn?b7{|*sRyKp-s£Bnj^`b<| s`{`b6¥µ½enj^`b7ro¸*¹W¸ º>»¿¼+akR³b+nj^zb+b*m`b|l`n?sRrjb njl>rj0n?s²n~^`bosKr?6zk4³b|*s`{`b
| sRyKp6¥%]+^`b|}^`sR| bes6£n~^`b¸ ¹¾¸ º>»¿¼P{zb n?b7rja0`bi n~^`b²b*m`b7| l`njsKsWRbr~^`bkR{nj^`b7r?b £¤sRrjb²a0kR³K`0nj^zbk6yzyzrjsRkR|}^RbrjpÀ>b*m`±`bR¥
]+^`b«Mr~ijnµk6{`Wk6Kn~k6bOs£\vOs`{`b<vOsK`zP]r~k6|*`¯iµn?s²ksW njr~k6|*b+| s6b7|*n?sR--rjbk6i?nj|nja0b+sR-k6rj6b k6yzy`| knjsKzi
kRi²yzr?b7i?b7Kn?b{IIn~^`iyzk6yMbr¥w<yzyzp`IvOs`{`bvOsK`z]r~k6|*`n?s·kRIkRyzy`|kn?sRÂksWoienjs©|*sRb| n¯n~rjkR|*bi~k6ay`bi
+nj^`sKl`n,ayzkrj`-i?R`«M|k6Kn?p-n~^`b<sWRbr~k`b*m`b|l`n?sRn?a-bR¥,½¯lzr,l`n?aknjb<6sKkziOn?s±zlz{k*j|*sRijb*4n?s6Z{`b7k/Onjr~k6| b*
| s6b7|*n?sRIy`knu£¤sKrja¥-ÁIby`k6In?s·k6y>y`pIvOs`{`bvOsR``]#r~k6| zn?s·k|*sKa0yzbn?bsRyMbr~knj`i?p`ijn?b7a É lmMËek6z{Ik
kRyzy`|kn?sR>i+rjlz>`z0sKk0{zbi~³RnjsRy|*sKa0y>l`n?b7r ¥%]+^`b7®¨zbij^`sKl`{±Mbk6±`bPn?s| s6b7|*n njr~k6| bPi~k6ay`bi s6£#n~^`b|*sKa0yzbn?b
sRr~³KsKk6{10®£¤sKr,zijnjkRz|*bR¨Rb6brjp-^zsRlzrOkP£¤b ijb| sRz{ziOk6| n?Knp| k6±Mb<n~rjkR|*b7{®¥2¦<sWb 6b7r ¨6nj^`i,n~rjkR|*b 4| s6b7|*n?sRy`kn?£¤sRr~a
io±Mb p6sKz{nj^`bi~|*sKy>bPs£2nj^zi+yzkRy>b7r ¥
]+^`b¯r?b7akz{`brµs£°nj^ziyzk6yMbr,i,sRrjRkR`,+b{k6iµ£¤s6sWoi20n~^`be`b m`nOijb|*njsK®¨KOb+«ArjijnOyzrjbijbKn,ijsRa0b<rjb knjb{sRr~³i ¨
n~^`bOb<{zb njk6Anj^zbeyzrj>|*y`b7i,s6£®nj^`bPijkRay``a0bnj^`s`{®¥,xKb7|*n?sRyzrjbijbKnji,nOsay`ba0bKnjk6n?sRziOs£°n~^`b<njss6>o^z|}^
| s6b7|*nn~rjkR|*b7i²£¤sRr0ij`Rblzi?b7r-kRyzy`|knjsKzi ¥Ifobi~l`nji-sR´n~^`bxqµÇv3©Knjb 6b7r-±Mb>|}^zak6r~³Ii~l`n?bkRr?byzr?b7i?b7Kn?b{¢
xKb7|*njsK#4M¥,xKb| n?sR!0ijlzaak6rj5+ bin~^`i<i?n~lz{`pkRz{yzr?b7i?b7Knji sRl>r£¶l`njlzrjb{`b6b sRy>a-b7Kn {zrjb| n?sRzi¥
6 7
(!* &#g *+µ&"#
u nj^`ii?b7|*n?sR°¨µOb«Mr~i?n0sW6b7r?b i?sKa-brjb kn?b7{´sRr~³Ki-k6±MsRl`n-njr~k6| b|*sRb| n?sR´njss6i-z| lz{z`±Ms6nj^ªi?n~knj||*s`{`b
kRz`s6n~knjsRr~ikRz{zijnjr~lz| n?sRi?bn balzk6n?sRr~i¥2]+^zb®¨`byzrjbijbKn nj^`b-vOs`{`bvOsR``]#r~k6| z0kRyzyzrjsRk6|}^°¥
8:9;=<?>@;=ACBCDEAFGDEA>ED=HJILK<L;=MN=K;=MIOILKFGP?Q'RQ)DE<TSUMAVGDEPWP?DEX2QVGFG>EFILVY[Z\<LFI]ILD@A'^_HJR
ÛU`]abWc Ø7×_c@`
Z\FGVGVed)DfPL;=ghDE;=ADTZ\K;h>E;=VGVGDE>_IWPOQ<L;=N=<LRgiIW<LR>ED@P@j
k
D:lmPWKDnZoFGVGVMPLD?IWKDnp5<LRghD_Z1;=<LqZrDnQ<];:B2FGsD=H'dMItZ\FGVGVJRVGPL; ADEDEs*IL; FGAPLIL<LMghDEACItIWKDoIWDEPLILDEsRQQVGFG>@RmILFG;=APtIW;fN=DEItILKDnIL<WR>EDEP?KD:lmPLKDnZtRACIWP@j
uou Awv=vCx=x
"!#$%!'&)(+*-,/.10
qµm`b c'Z¨Kw%]<½e c4'4¨6kRz{Ç,Ç Mk6rjb k6a0sR`¯nj^zboa-sKi?n%yMsRyzlzkRrijnjk6n?| |*s`{`b+k6zzs6njk6n?sR-a-bnj^`s`{zi¥2qµmb sRyMbr~knjbi
sKIqx b*m`b|l`njkR±`b7i²k6z{Âk6{>{zi²|*s`{`bnjs| sRlzKnPnj^zbb*m`b|l`n?sRIs£ bkR|}^I±zkRi?|±`s|}³A¥w%]<½e i²a0sKr?b0À>b m±`bk6z{
b7zk6±`bikl>i?b7rµn?s0ijyMb| ¬£¤p^`sW:njs-kRz`s6n~knjbobkR|}^>{`{zlzk6Mzijnjr~lz|*njsK®¨K±>k6ij|e±`s`|}³-sRryzrjs| b{zl>r?bos6£\k6b m`b| lznjk6±zb
«>b£¤sKr32¯Çv w<y>^zk kRrj|}^`n?b7|*n~lzr?bR¥©]+^`brjbkRr?bkRz`sRnjknjsK´y>sRKn~io^`b7r?bnj^`blzijbr|k6¢i~yMb|*£¤pnj^`bak6|}^``bijnjk6n?b
njsb mn~rjkR|*n¥¯Ç,Ç É¶Ç%m`b|l`njkR±`b0ÇO{`njz ±zr~k6rjp>Ë iPk±>rjkRr?pR¨>À>b m`±`bk6ieObZ¨®nj^zk6n¯k6sWoienj^`blzijbr¯n?ssRyMbr~kn?b-sR
b mb7| l`n~k6±`b+«>bi¥%]+^`b<kR±zi?n~rjkR|*njsK0y>r?sW{`b{±Kp0ÇµÇ k¾Rs6{zi%njs{`bk6>+nj^akR|}^`zb*{`byMbz{zbKn%£¤bk6njlzrjbiOk6z{i~lzyzyMsRrjn
xKq®w<fov kRrj|}^`n?b7|*n~lzr?bPkn n~^`ba0sRa0bKn ¥
w<2nj^zbijb0ijnjk6n?||*s`{`bk6>`s6n~kn?sR a-bnj^`s`{ziPkRr?b-n?s±Mblzi?b7{© klz`Klzb- k¾pr0+nj^`brjbi~l`njzb*m`b7| l`n~k6±`bi¯sR`p
ak6{zb+s£Bzijnjr~lza0bKnjb{|*s`{`bokRz{0+>±Mbob*m`b|l`n?b7{0bKn?r?bpR¥]+^lzi¨njs{>k¾p (i%ijnjknj|+| s`{`bok6zzs6njk6n?b7{0y>r?sRRr~k6ai\b m`b| lzn?b
ijsW+po^`b7nj^`bpk6rjb²lzi?b7{njs£¤b b7{| sRay`b*m|k6|}^`b¯sRr+a0| rjsk6r~|}^`n?b| njlzrjbeijal`knjsRr~i ¥,xlz|}^ijsWo`b7ijiio{zl`bPnjs 0
c6¥ nj^`b²sWRbr~^`bkR{z{zlz| b{±Kpnj^`b²b m`b| lzn?sRs£2Kl>a-b7r?sKlzi+k6{>{`b{>i?n~rjlza0b7Rn~knjsKzijnjr~lz|*njsKzi54
8`¥ nj^`b0k6rj6bij,+bs£µn~^`b0zijnjr~lza0bKnjb{©| s{zbo^`|}^©kWÈBb| nji¯i?Rz¬«M|k6Kn?pnj^`b0±>b7^zk¾sKros6£µnj^`ba0ba0sRrjp^zb7rjkRrj|}^Kp
É¿yzkRr?nj|l`k6rjpzijnjr~lz|*njsK|k6|}^`bPk6>{] '6 Ë ¥
wekn?b7rj>kn?6ben?si?n~knj|¯|*s`{`bPk6zzs6njk6n?sRi>i?n~rjlz| n?sRbalzk6n?sR®¥,xKsKa-ben?ss6i {`r?b7|*n?pba-l`kn?bebkR|}^zi?n~rjl>|}
njsKs6£kRRbsRr~³KsKk6{sRr~{`b7rOnjsi?al`knjb²k6r~|}^`njb| njlzr~k®|*sKay>sK`bKnji¨zk6>{ak¾p±Mb²ijl>rjyzrji?`6pb7| b7Rn¥
x^>k6{`b8 i-k6zijnjr~lz|*njsK4ijb nijal`knjsRr±zkRi?b7{ÂsR´{`p`zkRa-|n~rjkRzi?knjsKÂs£oi?alzk6n?b{zijnjr~lz|*njsKzi¥©½¯n~^`b
«Mr~ijn²s|| lzr~rjbz| b-s6£ k±zkRi?|±`s`|}³·k6k6y>y`| k6n?sR®¨2x^zk6{zbnjr~k6zijk6n?b7ien²Âk·ijbl`b7z|*bs6£ zk6n?6bzi?n~rjl>|*n?sR>iP
o^`|}^·zijnjr~lza0bKnjk6n?sR©| s{zb£¤sRr<njr~k6| br?b7|*sKrj{``i<b7a±Mb{z{zb{®¥½¯£¶lzrjnj^`b7r<s`| |lzr~r?b7z|*b7ios£µn~^`b-i~k6a0b±>k6ij|-±`s`|}³A¨
n~^`b<b7al`knjsK0ijbl`b7z|*b+i,{zrjb| n?p-K6sR³6b{0±Kp-n~^`b<ija-l`k6n?sKr ¥%xKsWo{zsWozi2£¶rjsRan?sc24²Ob7r?borjbyMsRrjn?b7{0l>i?`-x^zkR{`b
£¤sKr<k6{>{zr?b7ijionjr~k6|*b7iozijnjr~lza0bKnjk6n?sR®¥hes6n?bnj^zk6n<nj^zi¯k6yzy>r?sKk6|}^ksWoi+njsn~rjkR|*b²nj^zb-k6| n?np {`p`zk6a0| kpz³6b{
| s{zbi¥
xKa½²xi+k-| sRay`b njb¯ija-l`kn?sRbKrjsR>a-b7Kn|k6yzkR±`bes£2a-s`{`b`k6bKn?r?bP|*sKayzl`n?b7r i?p`ijn?ba¨`z|*lz{``-£¶l`
sKy>b7rjk6n?`-ijp`i?njba k6>{k®k6yzyz| k6n?sRyzrjs6KrjkRaiµnj^>kn rjlzsRn?sRys£\n¬cRcC4¥µxa½²xrjb bisRn~^`b²ijkRa0beyzrj>|*y`b¯s£
{`p`zkRa0|0njr~k6>i?knjsK©k6ix^zkR{`b6¥¦<sWb 6b7r ¨\xKa½²x·k6sWoiPkbi~iP{`b n~kb7{Zb m`b| lzn?sR©a0s`{`b| k6b{I{`rjb| nu4b*m`b|l`n?sR
a0s`{`b0o^`|}^ | k6IyzrjsWK{`ba0sKr?b-b*ÈBb|*njRb-yMbr?£¤sRr~ak6z| b6¥P]+^`i¯a0s`{`b-i¯lzi?b7{©sK©i?b7|*njsKzi<n~^`blzi?b7r<i¯`s6n¯Knjbrjbijn?b{
¡njr~k6|*`¡É¶bR¥M¥ªn~^`bsRyMbr~kn?`i?p`ijn?b7a±>ssRn0sKrnj^`b·±Mb Rzz`s6£¯klzijbrk6yzyz| k6n?sRMË}¥:xK+nj|}^z`£¶rjsRa{zrjb| nu
b mb7| l`njsKa0s`{`benjssRnj^`b7r<É¿n?a-bP|*sKzi~lza0``Ë2b7al`knjsKa-s`{`b7i¯É¶n?s0|*sRb| n,njr~k6| bi}Ë2sKb RbKn,s`| |lzr~r?`²ik6sWb{±Kp
n~^`bi?alzk6n?sRrc*9'Z¥
8 9:,<;=?>@;AB#!0:*-CEDF*G&!HDF#*I=?;=JHK,/$L>@;=J
"MsRrPk6rj6bk6yzyz| k6n?sRziP|*sKzi~lza0`·ijb Rbr~k,vOqµÊ ^`sKlzrji¨°n~^`bnjr~k6| b|k6zzs6n²±>brjbk6ijn?| kp i?njsRrjb{ sRr²|*sKzi~lza0b{Âkn
b mb7| l`njsKnja0bÉ¿njrjsR>i s£2njr~k6|*b¯b ba0b7Rn~i5MË ¥µ]#b|}^>`l`b7i n?srjb{zl>|*bPnj^`i k6rj6bP{zkn~k0ijb n+z| lz{zb0»,"!;#~¸¼%!ON
Õºk6i
i~l`6Rbijn?b7{±Kp4>¨w >¨>4¥%¦<sWb 6b7r ¨`i~lz|}^n?b|}^>`l`b7i+ki?sijsW§nj^`b²sWRbr~kAn~rjkR|*bP|*sRb| n?sRyzr?s`| bi~i ¥
uzijn?b7k6{s£i~k6ay``-n~^`b²r?b7ijlznj`0njr~k6| b¯k£¤n?b7reÉ¿sRr {zlzrj`Ë,b*m`b7| l`njsKn?srjb{zl>|*b¯nj^`bPnjr~k6| beRs6lza0bPW¨`b¯y>r?sKy>sKi?b
njsijkRa0yzb nj^zb+b*m`b|l`n?sR-s£Anj^`boyzrjs6KrjkRa±Kpay`ba0b7Rnjz²nOs¯b*m`b|l`n?sR0a0s`{`bi20khj`s4njr~k6| bO| s6b7|*n?sRe a0s`{`b+k6z{
k ?njr~k6| b|*s6b|*njsKJPa0s`{`bR¥O]+^`i<a0R^KnoksW ksW b*m`b7| l`njsKijsWo{`sWosKnj^`bkRyzy`|knjsKyzkRr?n+o^zbrjb²nj^`bn~rjkR|*b
+`s6no±Mb|*sRb| n?b7{Iɶ£¤sRr+zijnjkRz|*bR¨zsRkk6rj6b²k6yzyz| k6n?sR®¨za0sRrjb²nj^>k66=< s£2nj^`bsKr?6zk6®b*m`b|l`n?b7{zijnjr~lz|*njsKzi
ak¾p`sRno±>b²n~rjkR|*b7{MË ¥
]+^`byzrj>|*y`bs6£ vOs`{`bvOsK`z]rjkR|*`iPr?b7y>sKr?njb{ "2Klzr?bc6¥-]+^`b-sKr?6zk6| s{zb0iP{zlzy`| knjb{®¥0]+^`b-«Mrjijn
| s{zbo|*sRyKpR¨R| k6b{RQ-S¸UT¸5#6¨iµzijnjr~lza0bKn?b7{-k ?R^Kn_ k¾pR¨sRr~{`brn?s6b nµkR0b*m`b|l`n?sR0n?a0bo|*sRijb+n?s²n~^`bosRrj6zk
sK`b6¥%]+^`b²ijb|*sKz{| s`{`b¯| sRyKp6¨`|kb7{VQ-SÕºz¼}»*¨i k6z`sRnjk6n?b{±Kpnj^`bPnjr~k6| belzijbrnjs-Kknj^zbr`£¤sRr~a0k6n?sR£¤sKr i?al`knjsKzi
sKroi?n~knjijn?| i+sKnj^`b²b mb7| l`njsK®¥Ow n+b m`b| lzn?sRn?a0b6¨WQIS0¸UT¸#Piob*m`b|l`n?b7{·a-sKi?n+s6£n~^`bnja0b6¨A±zl`noijsRa0b¸ ¹¾¸ º>»¿¼a0kR³b
n~^`bob*m`b7| l`njsK0±Mb<ij+n~|}^`b{njs²nj^`b<njr~k6|*bo| s6b7|*njsK-a0s`{`b0LQ-SÕºz¼}»2iµb*m`b7| l`njb{k6z{kPn~rjkR|*b+i~k6ay`bÉ¿| sRl`{±>b<ijb Rbr~k
n~^`sRlzi~k6>{zisRr2a0sR>i#s6£Arjb*£¤b7r?b7z|*b7i Ë®i2|*sRb| n?b7{®¥%½en~^`br+¸ ¹¾¸ º>»¿¼rjb knjb{n?sXQ-SÕºz¼}»#k6sW¢nj^zbb m`b| lzn?sRnjs¯rjbi~lza0b
j`s4njr~k6| b<|*sRb| n?sRJ<a0s`{`b0LQ-S¸UTK¸ #<iOb*m`b7| l`njb{®¥%]+^`b¯|}^`s6|*bes£°nj^zbijb<b RbKnji,i,£¶lzrjnj^`b7rO{zi~| lzi~ijb{xKb7|*n?sRz¥8`¥c6¥
]Op`y`|kpR¨Q-S¸UT¸5#b*m`b|l`n?b7ia0sRijn²s£+nj^zbn?a0b6¥·]+^`i|*s`{`b| sRyKp iR^Kn?p zijnjr~lza0bKn?b7{´k6z{z{zlz| bi²sK`pÂk
i~akAb m`b| lzn?sRsWRbr~^`bkR{·É¿| sRayzkRr?b7{n?s0nj^`bPb mb7| l`njsKs6£#nj^zbesKr?6zkByzrjs6KrjkRaË}¥]+^zb¯ij,+bes6£YQ-S¸UT¸5#¯| s{zbei ki?s
ZU[ <LR>ED BC;=VGMghDTFGP?MPLDEs KD@<]D p,;=<?>E;=ACBCD@AFGD@A>@D\wdCY[IL<WR>ED BC;=VGMghDCH)Z1DfghD@RA[IWKD BC;=VGMghD ;prFGAp,;=<]g RmIWFG;=AILK'RmIOFGPnQRPWPWDEsIL;[RA;=A^]UVGFGAD
PWFGgfMVRmIW;=<1;=<\PLIL;=<]D@s[FGA[RfIL<LR>@DL_'VGD=j
`baou`dc
P_exec Event
Event
Event
P_inst
Event_bis
Event_bis
Event_bis original code
collect trace instrumentation code to instrumentation code to jump between P_exec and P_inst
execution
jumps between both versions of the program
"2Klzr?bc30ǵmb7| l`njsKs£| sK`b{| s{zb¯njs|*s6b|*n+n~rjkR|*bR¥
| sKi?bPn?sn~^`bi?5+ bPs6£#nj^zb²sRrjRzk6A| s`{`b6¥µwei+k0rjbi~l`n ¨zn~^`b²±>b7^zk¾sKrs£#n~^`ba0ba0sRrjp^`br~k6r~|}^Kpɶz|*lz{``] 6 i}Ë,sR`p
i~lÈBbr~i£¶r?sKa k0n?Kp|}^zk6z6b²yzrjsWK{`b7{nj^>knQ-S¸UTK¸#PkRz{EQ-SÕºz¼}»kRr?bPks|knjb{{`ÈAb7r?b7Kn a0b7a-sKr?pyzkRbi¥
wei%xa½²xA¨6vOs`{`b vOsRz`P]rjkR|*`o+`yzrjsW{`bk+£¶kRi?nb*m`b|l`n?sRa-s`{`bO£¤sRr2ijb| n?sRzi#nj^zk6nkRr?b`s6n#n?sP±>b ija-l`k6n?b7{®¨
kRz{k-n?a0b²|*sR>ijlza0`0njr~k6|*bP|*sRb| n?sRa-s`{`bR¥
# Wº>»,"! £¶rjsRa xKa½²xA¨>vOs`{`bvOsR``]#r~k6| `0r?bbisKk0i?n~kn?|
| s{zbk6z`sRnjk6n?sR®¥%brjp^`R^yMbr?£¤sRr~a0kRz|*bPi sR±`n~k`b{sR j`s4njr~k6| be| s6b7|*n?sRePa0s`{`b²k6i+rjbyMsRrjn?b{·xb|*njsK 4M¥
; = !# K=; = JH% ! ,/$ ! *-,/.
]+^`b¯±zk6ij|+n?b7|}^z`Klzb<yzrjbijbKn?b7{0kR±>sWRb+il`n?boRb`b7rjk6¿¥2w nµa0yzb7a-b7KnjknjsKb 6b¿¨Ki?sKa0bonjr~k6{`bsÈ®iµk6±MsRlzn,nj^zbosW6b7rjk6
n~rjkR|*b²|*sRb| n?sRyzr?s`| bi~ia-lzijno±>b| sRzij{zbrjb{®¥
"2rjijn ¨`k-njr~k6{`bsÈ·±>bnObbn~^`b¯njr~k6|*be6sRlza0b¯k6z{nj^`b¯b*m`b|l`n?sRn?a0b02nj^`b¯k6rj6br,nj^`bPn~rjkR|*be| s6b7|*njb{®¨nj^zb¯^`R^zbr
n~^`b·b*m`b|l`n?sR¡ijsWo{`sWo°¥]+^zbn~rjkR|*b·|*sRb| n?sRª+<±Mb·njlzzb{{`byMb>{`z´sRªnj^`b©akWm`alza ksWb{ªb*m`b|l`n?sR
ijsWo{zsWok6>{sKn~^`b²njr~k6| b²lzijk66bR¥
xKb7|*sKz{®¨¾nj^`bb RbKnji#{`b njbr~a0``¯i?+nj|}^``¯±>bnObb±Ms6n~^|*sKy`b7i\s6£>|*s`{`balzijn#±Mb{zb n?b7rja0`b{kn\ay`ba0bKnjk6n?sR
b Rb k6z{t?l>{`| sKlzijp¢|}^`sKi?b7ªk6´b7ay`rj| k k¾p6¥ Ç,6bKn~i-ak¾p´±>bRnjbr~zkpIRb`b7rjk6n?b{´±Kp´n~^`bkRyzy`|kn?sR¢sRr
b mnjbr~zkZ¥Á ^`bn~^`b<b6b7Rn~iµk6rjboKn?br~zk6¿¨Rnj^`bp^>k¾6b+n?s-±>b¯{`ijnjrj±zl`n?b7{k6iµb 6b7`p0kRi,yMsRi~i?±`b<kMk6sK`²nj^`beb*m`b|l`n?sR
| s{zb6¥ unj^`i<|k6ijb6¨>sK`b| kR|*sRl>Rn<nj^`b7a k6n<rjl>nja0bR¥ ]+^zba0s{zbi?+nj|}^z`ak¾p±>byMbr?£¤sRr~a0b{o^`b7nj^`b| sRlzKnjbr
rjbkR|}^`bi k0nj^zrjbi~^`sR{Wkl`b6¥µ]+^`i+Wkl`b²| kRb7k6ijp±MbP£¶lzrjnj^`b7r njlz`b7{k6i+kyzkRrjkRa-bn?b7rOs6£#n~^`b²b*m`b|l`n?sRijb njl>y®¥
]+^`r~{®¨znj^zbnjr~k6| blzi?b7ro| kR|}^`ssRijb¯n~^`bnp`yMb²s£%`£¤sRr~a0k6n?sRn?s| s6b7|*n¥O]+^`b RzÃ¤Ä°Å¿Æ yzrjs6njs6np`y>b²yzrjbijbKnjb{n~^`b
`b m`n-ijb|*njsKisR`pk£¶rjkRa0b sRr~³ ksW+`·kR´bkRi?pÂk6z{ÂÀ>b m`±`b£¶l>r?n~^`br-|*s`{`bzijnjr~lza0bKnjk6n?sR®¥!es6n?|*bnj^zk6n ¨ !
# WºM»)5! ²s6£®s6nj^zbr,ijnjk6n?|o|*s`{`bokRz`sRnjknjsKa0b nj^zs{>i ¨Knj^`b7r?b+i,zsijyMb| k6Mrjbl`r?b7a0bKn%n?ssKy`n?a0,+bonj^zbo>i?n~rjlza0b7Rnjb{
| s{zb6¥ 4£BQ-S¸ T¸ #i-b*m`b|l`n?b7{¢sK¢6>¥=< s£on~^`bzijnjr~lz| n?sRziɶ+nj^ªk ijsWo{`sWos6£c6¥8£¤sKrzi?n~k6z| b¾Ë}¨,k6z{¢¬£<n~^`b
Q-SÕº>¼ »Oi?sWo{`sWoi<cR¨9;9$9ÉZi?sKa-b¯l`njb¯| sRay`b*msR4`b¯i?alzk6n?sR£¤sKr,zijnjk6>|*b¾Ë}¨nj^`b¯sW6b7rjk6zb m`b| lzn?sRijsWo{zsWo
+#±>b30 !"#%$&z¥
uou Awv=vCx=x
! (o&#P&# W ->!# "!!* OP&*:
vOs`{`b·vOsK`z ]#r~k6| z·i-k·6b7`br~kOn?b|}^>`l`bR¥I½¯lzry>r?sRn?s6np`yMb6¨2| k6b{ RzÃ¤Ä°Å¿Æ OsKrj³iPsRzpÂsR¢ijnjkRz{ksR`bkRy
y`| knjsKzi¥+¦<sWb 6b7r ¨Aa0sRijnos£%nj^zbn?b7|}^z`| k6\iji~l`biek6i~i?s`| k6n?b{+nj^©ij+nj|}^``£¶rjsRa j`s4njr~k6| bP| s6b7|*njsKJa-s`{`bn?s
?njr~k6| b|*sRb| n?sRJ-a0s`{`b-kRz{·|*b*46b7rji~k+%±Mbnj^zb0i~k6a0b£¤sKr<zijnjr~lza0bKn?`al`n?4y>r?s`|*b7iji<OsKrj³KsRkR{ziok6>{·b Rb©k
| sRay`b n?bsKy>b7rjk6n?`ijp`i?njba¥ 6zÃ¶Ä°Å¶Æ kijsk6sWoi<njs¾k6{zk6n?bnj^`bkRyzyzrjsRk6|}^·£¶r?sKa"nj^`byMbr?£¤sRr~ak6z| b-yMs6RnPs6£Ob0
sK?`s6Zn~rjkR|*b²|*sRb| n?sRJa0s`{`b6¨Mnj^`b0i?sWo{`sWoz{>lz|*b7{·±RpsRl>rok6yzy>r?sKk6|}^iek6rjsRlzz{ 8$9%;9=< k6>{nj^`b7r?b £¤sRrjb| k6·±Mb
i~lzyzyMsRrjn?b7{±Kpa0sKi?n j¸ ! 2lzijbr~i ¥
usRr~{`brOn?s-£¶k¾6sKrµÀMb*m`±znpR¨zy>sKr?n~k6±`npR¨Kb7k6ijbes6£#lzijb6¨zkRz{b7k6ijbes6£\ay`ba0b7Rn~knjsK®¨ 6zÃ¶Ä°Å¶Æ k6iak6{`b¯sRn?sKys£
n~^`b Âijp`i?njba '4¥
RzÃ¤Ä°Å¿Æ k6sWoi#n?se±>l`{-nOsenpyMbi#s£Ak6yzy`| knjsK|*sRzbik6| | sRr~{``on?s¯njib*m`b|l`n?sR-a0s{zb0°n~^`b,«Arjijn#np`yMbOs6£M|*sRzbi
yMbr?£¤sRr~ai,ij+n~|}^`biOlzy>sKRnjbr~zkMb RbKnji+É"Õº>ºB¸ ²a0s`{`b¾Ë}¨Ko^zbonj^zbeijb|*sKz{np`y>b¯{`bk6i,+n~^k6kR{z{`b7{b*m`n?b7rjzk6>b6bKn
aknjbrjk65+ b7{±Kpki~^zk6rjb{Wk6rjkR±`b-É?¼@ N a0s`{`bWË ¥
ÁÂb«Mrjijn±zrjb À>p´sW6b7r?b nj^zb ijp`i?njba '+o^`|}^ªkRi0l>i?b7{ª±Kp
RzäİſÆ
n?s´k6| njlzk6p¢|*sR`bn~^`b·|*s`{`bkn
kRijijba-±`pkR`Rlzk66b¯b6b¿¥%]+^`b7b²yzrjbijbKn
6zöİŶÆ
njijb £u¥
G DF*I=> ! A% $L=& !$'%,/!0 *IC
¢i²kr?bnjkRr?Rb njkR±`b£¶r~k6a0b sRr~³£¤sRrP{`b Rb sRy``nj^`bo^`sRbi~y>b7|*n~rjlza s£Onjss6ien~^zkn²ak6zyzlzk6n?byzrjs6Rr~k6aieb*m
yzrjbi~ijb{kRijijba-±`pk6`KlzkRb6¥2]+^`iOa0b n~kW4n?ss6Ai| sRayMsRijb{s6£\nj^zrjb bPyzkRr?n~i02k³6br~`b Z¨`knjkRr?Rb n{`bi~| rjyzn?sR«>bPk6z{
n~^`b²n?ss6#yzr?sW{`b{±Kpnj^`bl>i?b7r ¥n"2Klzrjb/8i~^`sWoi ^`sW nj^`b7i?bPnj^>r?bb|*sRayMsR`b7Knji Rnjbr~k6| n ¥
SALTO
ex.s
ex.salto.s
tool.so
tool.cc
C++
User tool Salto system test program
machine description
"Rl>r?b 8 0 Ii?p`ijn?ba sW6brjb²¥
]+^`b MÍ WÆ Í Ã yMbr?£¤sRr~ai,| sRaa0sR^`sRl>i?b 4³6b byz`²n~k6i~³iµnj^zb<{`b Rb sRyMbrO{`sbi,zs6nµ k6KnµnjsOsKrjrjp-kR±>sKl`n ¨K³6b<yzk6r~ij`
n~^`bk6i~ijba±zp | s`{`bk6>{In~^`bn~k6rj6b n²{`b7ij|r?y`njsK «MbR¥]+^`b³6br~`b Oyzr?sW{`bi²k6ijs·k6ÂRnjbr~zkOr?b7yzr?b7i?b7KnjknjsK©s6£ n~^`b
njbijn?b{yzrjs6KrjkRa o^`|}^iok¾WkkR±`bek-n~^`blzijbr Kn?br?£¶k6| b6¥
]+^`b `"! Í Ò Í 6WÅ$#Å Ñ Æ&%Ã Í|*sRKn~kzin~^`bÂ^>k6r~{`kRr?b©| sR«MRlzr~knjsK:k6z{:n~^`b|*sRay`b njbÂ{zbi~| rjy`njsKs£n~^`b
zijnjr~lz|*njsK4ijb nek6r~|}^`njb| njlzrjb6¨Mz| l>{`zyMbr?Zzijnjr~lz|*njsKrjbijsRl>rj| br?b7i?b7r?WknjsKnjk6±zbR¥ev^zk6`RznjkRr?Rb nok6r~|}^`n?b7|*njl>r?b
i2t?lzijnoyzrjsWK{``k0zb {`bi~| rjyzn?sR«>bR¥
]+^`b Ñ°Ñ Ã%Å'#2ÃÍ Í ÆB Í Ò· Î )( Í # Í lzi?b7i,n~^`b¯Kn?b7rj>kMrjby>r?b7i?b7Rn~knjsKa0kR{`be±Kpnj^zbe³b7rjzb AkÀ>b*m`±`b< k¾p6¨
n~^zk6z³i+njsnj^`b²sK±tub| nu4sRrjb7Rnjb{lzi?b7r Knjbr?£¶k6|*bÉv+*,*|*k6i~ijbi k6z{a0b n~^`s`{zi Ë}¥
^z{`b7ioa0sRijn s£2nj^`b±MsRrjz0ay`ba0bKnjk6n?sR{`b n~ki¨zk6>{n~^lzi+ksWb{lzi njs-£¤s`|lzi+sR 6>Ã¤Ä°Å¶Æ ¥
G8 > $L#.-1; =
2Plzy`|knj`nj^zb-|*s`{`b0k6z{ a0kR³K`ijlzrjbn<b m`b| lzn?bi¯k6>{©i?+nj|}^zbi<| sRr~r?b7|*njp±>bnObb©±Ms6n~^©|*sKy`bieb7k6{zi<n?sijb Rbr~k
{`7| l`n?bi¥ "2r~i?n¨+nj^`b b 6b7Knjio^`|}^+¯{`b njbr~a-`b·n~^`b ij+n~|}^`bi±>bnObb±>sRnj^:b m`b| lzn?sRa0s{zbi^>k¾6bn?s ±Mb
t?lz{z| sKlzi?p|}^zsRijb®¥,w noijb| sRz{°¨zk|*sRr~rjbi~y>sKz{`b>|*bP±>bnObb±>sRnj^·| s{zbP| sRy`bi<alzijno±>bak6Knjk6zb{®¨>kRz{lzKkRKn?b{
a0s`{`bIij+nj|}^``ªi~^`sKl`{§±>bÂk¾6s6{`b7{:±Rp{`b7k`ª+n~^ |*sKKnjrjs6Zn~rjkRziu£¤b7rzi?n~rjl>|*n?sR>i©É4v]ui}Ë ¥ "2>kpR¨<k£¶lzrjnj^`b7r
zijnjr~lza0bKnjk6n?sRs£2nj^`b3Q-SÕº>¼» |*sKyKpalzijn+±>byMsRi~ij±`b6¥%ÇOk6|}^s£2nj^`b7i?b²yMs6Rn~i+i+k6{z{zrjbi~ijb{±Mb sW²¥
/10
VG;=AFGAN+2 PWPWDEgfdVGDE<tRAs,3;2;=qFGANhFGACIW;54 DE<LFIWRdVGD76APLIL<LMghD@ACIWRmIWFG;=A98 DEDEsP:j
`baou`dc
(
Ñ°Ñ
Å¿Æ!I (
Í Ä Í
ÆB
ÁÂbO|}^`sKi?b%njs<ij+n~|}^Pnj^`bµb m`b| lzn?sR²a0s`{`boɶkoijp`aa-bnjrj|k k¾p>ËAlzyMsRyzrjs`|*b7{zlzrjbµ| ki ¥\]+^zbµqvªÉ¶qOr?sRRr~k6a vOsKlzKn?b7r Ë
ij+n~|}^`bi%£¶r?sKasRzbo|*sRyKpnjsnj^zb+s6nj^zbr%o^`b7k²|*brjnjk6lza-±>b7r%s£Bnj^`b7i?b+b6b7Rn~iµk6rjb b*m`b|l`n?b7{®¥n">sKr2zijnjkRz|*bR¨6njsi?+nj|}^
b mb7| l`njsK©£¶rjsRa Q-S¸ T¸ #0n?s Q-SÕºz¼}»-c*9z¨9$9;9yzrjs`|*b7{zlzrjb0|ki²a-lzi?n²^zk¾Rb0±Mb b7 b m`b| lzn?b{ 4#njsij+nj|}^Ib*m`b|l`n?sR £¶r?sKa
Q-SÕº>¼ »<n?sVQ-S¸UT¸5#c*9yzr?s`| b{zlzrjb|kiealzijne^zk¾Rb±>bb b*m`b|l`n?b7{®¥¯xKsM¨A£,yzrjs`|*b{>lzr?b-| ki<k6rjb R¸5! ɶZ¥bR¥eb6b7`p>Ë
{`ijnjrj±zlzn?b{0k6a0sK`<n~^`b zijnjr~lz| n?sRzi¨ s£Mnj^`b `njk6`>i?n~rjlz| n?sRzi#+z±Mb b*m`b|l`n?b7{n~^`b njr~k6|*b 4| s6b7|*njsK²a-s`{`bR¥
ÁÂb|}^`sRijbPijlz|}^b6bKn~iOnjs£¶k6| n~knjb¯n~^`b{`b7i?Rs£%k-«Mrjijn ay`ba0b7Rn~knjsK®¨`£¤sRr n~^zrjb b²akrjbkRi?sKzi20
c6¥esK±zkp6¨yzr?s`| b{zlzrjb<|kiOk6rjb<r?bk6n?6bprjkRr?b+v,yzrjs6Rr~k6ai¨6±zl`n k6rjb<`sRnOijslzz| sRaa0sR·É¶£¤sRr,zijnjkRz|*bR¨n~^`b
yzrjs6Rr~k6ai<£¶r?sKa"nj^`bxKq,Çv3Kn?b RbrP±Mbz|}^zakRrj³·i~l`n?b6¨\nj^`br¯£¶rjbl`b7z|*p·Wk6rjbiP±>bnObb 9z¥96=< kRz{ªc6¥ =<Ë ¥
]+^lzi ¨n~^`be| s{zb¯kR{z{`b{£¤sRra-s`{`b¯i?+nj|}^z`-i `sRn,b mb7| l`njb{£¶rjbl`b7Kn?pkRz{n~^`b¯z{>lz|*b7{sW6b7rj^`b7k6{iOzs6n,Rbrjp
^`R^®¥·½¯In~^`bs6n~^`br^zk6z{°¨kRi²yzr?s`| b{zlzrjb| k6i²k6rjb`sRni?s·lzz| sRaa0sR®¨nj^zb pIk6sW k·rjbkRi?sKzk6±zb|*sKKnjrjs62sR
i?+nj|}^zbi+±Mb nb bnj^zb²nOsb*m`b7| l`njsKa0s`{`bi¥
8`¥u-k¯yzrjs6KrjkRa¨WkPyzrjs`|*b{>lzr?b | k6`rjbyzrjbijbKn~ikRay>sKr?n~k6Kn%|}^zk6`Rb,n~^`b+b*m`b7| l`njsK|*sKKnjrjs6KÀ>sW²¨Ws£¤njb£¤s6sWb{
±Kp|}^zk6`Rbi\-nj^`bbKr?sKza0bKn ¥]+^`bOq v6bnjikezb ¢Wkl`b k6z{n~i2s6{²Wkl`bi%i~k¾6b7{®¨Wk6z{ijsRa0bs£>n~^`b 6b7`br~k
r?b6i?njbr~iOkRr?b¯ki?s-s£¤njbijk¾Rb{®¨KsRr~{`b7r,njs-Rb n `b sR`b7i,£¤sKr,n~^`b²| k6b bPyzrjs| b{zl>r?bR¥]+^lzi¨zy>b7ru£¤sKrja0`-k<t?lzay
n?snj^zb²s6nj^zbr+|*sKyKps£nj^`byzrjs6KrjkRa `bkRr+kyzr?s`| b{zlzrjbP| k®+\±Mb²bkRi?br¯É¿nj^`bzijbrjn?b7{| s{zbP|k6±>bi~^`sKr?njbr}Ë ¥
z¥">sKrijnjkRz{ksR`bPk6y>y`| k6n?sRnjr~k6|*`M¨Kn+ksWoi rjbyzrjs`{zlz| ±`b¯njr~k6|*`` ¾sR`Zzbeija-l`k6n?sR|}^zkzis£¤njb`b b7{`b{
n?s|*sKayzk6rjb²i?b6br~kBa0|r?s64kRrj|}^znjb|*n~lzrjb<{`bkRi ¥
Ñ ¾ Í # Ñ Æ#Ò Í Æ# Í Í ÐÍÍ Æ·zÆÒ "!
k6Kn~k`zÂkijnjrj| n0| sRr~r?b7ijyMsRz{zbz| b±Mb nb bªb Rbrjp´>i?n~rjlz| n?sR "Q-S¸ T¸ #k6>{ Q-SÕºz¼}»0OsKl`{ rjbl`r?bk Rbrjp
k6rj6bnjkR±`b6¥©xlz|}^´k£¶l`O| sRr~r?b7ijyMsRz{zbz| b0i`sRn`bb{`b7{I´yzr~k6| n?|*b6¥·½¯Ânj^`bkRyzyMbk6r~k6>|*bs£ok·ij+n~|}^Ib6b7Rn¨#n~^`b
ij+n~|}^alzijnµs`| |lzrµnjsnj^zb<r?R^Kn,yzkR|*b6¥¦<sWb Rbr¨bo+Mijb b<n~^`b<`b mni?b7|*njsK-n~^zknOzsRyzyMsRrjnjlzzb<|*sKa-b 4±>k6|}³i ɶZ¥bR¥
lzK k6Kn?b7{ij+nj|}^`b7i£¶r?sKa Q-SÕºz¼}»n?s Q-S¸UTK¸ #¯sKr K|*b ZRbr~ijkË%^zk¾Rbenjs±>bk¾Rs6{`b{°¥
uªnj^`b Q-S¸UT¸5#| sRyKp6¨Ob Rbrjpij+nj|}^¡y>sRKnalzijn^zk¾6bnjik6i~ijs| k6n?b7{¢bKn~r?p¢yMs6Kn0 Q-SÕºz¼}»*¥ 6zÃ¶Ä°Å¶Æ zijbrjnji
kRijijba-±`pK4kR`Rl>k6b¯k6±Mb iokn+b7Rn~r?py>sRKn~i ¥ ]+^`bij+n~|}^n~i?b¬£µ|*sKzijijnji+s6£µk¯t?lzayn?sn~^`i<kR±>b¿¥ w<Kpzijbrjn?b7{|*s`{`b
a-lzi?nozs6n+kn?b7r nj^`b²`sKrjakBb mb7| l`njsKs6£n~^`b²yzrjs6Rr~k6a kRz{®¨`y>k6rjn?| l`k6r¨`alzijn+bzi~lzrjben~^zkn+n~^`brjb 6ijn?br~i³b b7yn~^`b
i~k6a0boWkl`b7i ¨R£¶r?sKa nj^`besRrjRzk6>|*s`{`bey>sRKn,s6£°b²¥µxsnj^`b¯r?b6i?njbr~iµlzijb{±Kp0nj^`be>i?b7r?njb{| s{zb<alzijnµ«ArjijnO±Mbei~k¾6b7{
kRz{´nj^zb rjbijn?sKr?b7{®¥!u´sKrj{`b7rnjsIrjb{zlz| bnj^zbkR{z{`b{¢sW6br~^`b7k6{®¨#nj^`b>i?b7r?njb{´|*s`{`blzijbi 6¸!$ j¸$¼ »¸% ¼#o^`b7`b Rbr
yMsRi~i?±`b6¥
$ % Í
zÃ¿Å¶Æ ! Ð
Ŷ ( Ñ ÆB
Ñ ÃÏ
WzÆ'&
Í
)(*Æ #6Å
Ñ
Æ
w i?+nj|}^£¶rjsRa sRrµn?sn~rjkR|*b 4| s6b7|*n?sR0a0s`{`b<sKnj^`ben?bijn?b7{yzrjs6KrjkRaik| sRKnjrjs6`ÀMsW|}^>k6`Rb6¥2]+^`bosRrj6zk>y>r?sRRr~k6a
njijb £¯k6ijsIyMbr?£¤sRr~ai-| sRKnjrjs6,À>sW |}^zkR`6b7i+nj^ | sRKnjrjs64njr~k6zi?£¤brzijnjr~lz| n?sRziÉ4v]ui}Ëi~lz|}^ªk6i<t?lzay®¨O| sRz{`n?sR>k
±zr~k6>|}^®¨`yzr?s`| b{zlzrjbe|k¿¨B¥¥ ¥w nOn~^`i b Rb Z¨ObPalzijnbzi~lzrjb<nj^>kn+{zlzrjznj^zb¯b m`b| lzn?sR®¨nj^zbeqv:+®`s6nt?lzay£¶r?sKa
Q-S¸UT¸5#¯njs Q-SÕºz¼}»¯É¶sRr |*b ZRbr~ijkË2b*mz| by`n+o^`b7nj^`b| sRr~r?b7|*nb 6b7Kni b>|*sRl>Rnjbrjb{®¥
Á ^`bsRr~³R`©k6nk6i~i?b7a±`pÂkR`Rlzk66bb Rb Z¨n~^`iirjb knjRb pÂijnjr~kR^Knu£¤sKr? k6r~{©o^zb´n~^`bv]±zr~k6>|}^`bi²njsIk
zkRa0b{¢k6±Mb Z¥¢¦esWOb6br¨2>{`rjb| n¯t?lzayzik6rjbk6ijsIk6sWOb7{10nj^zbn~k6rj6bn-k6{>{zr?b7iji-i0ijn?sKr?b7{´ªkÂr?b6i?njbr¨µk6z{ ik
| sRayzl`njb{·Wkl`bR¥Á:nj^·i~lz|}^z{`r?b7|*n%t?l>a0y>i ¨Anj^`bnjk6rj6bn<k6{>{zr?b7iji iosK`p³`sWokn<b*m`b|l`n?sRnja0bkRz{·lzKkRKn?b{
a0s`{`bi?+nj|}^`b7ieak¾p©kRr?i?bR¥e sRrjb sW6b7r ¨Mo^`bIkij+n~|}^·£¶rjsRa Q-SÕºz¼}»en?sQIS0¸UT¸ #É¿sRre| b*46br~i~kKËs`| |lzr~i<{zlzrj`n~^`b
| sRayzl`n~kn?sRÂs6£k6Âz{`r?b7|*n t?lzayÂnjkRr?Rb n²k6{>{zr?b7iji¨°n~^`br?b7ijlzn²ak¾p ±Mblzz{`bn?br~a0zb{®¥"MsRrPzijnjk6>|*b6¨k6i²i~^`sWoI
"2Rlzrjb²z¨`nj^zb²njk6rj6bn+k6{z{zrjbi~i ak¾p{`byMb>{sKk QIS0¸UT¸ #¯sRr Q-SÕºz¼}» ±zk6ij|¯±zs`|}³kR{z{zrjbi~i ¥
vOsKa0a0sKlzijbPs£2>{`rjb| nt?lzayzioz|*lz{`b7i0
*
v,4ij+nj|}^i?n~kn?b7a0bKnjiPÉ¿nj^`b±zr~k6>|}^njs0n~^`brjK^Rn j| kRi?bCei<i?sKa-bn?a0bi+yMbr?£¤sRr~a-b7{l>i?`k6>{`rjb| n2t?lzayMË4
*
r?bnjlzr~zi£¶rjsRa y>r?s`|*b7{zlzrjb 4
*
i?sKa0bPy>r?s`|*b7{zlzrjb¯|ki ³b¯£¶lzz| n?sRy>sRKnjbro|ki¥
+ c
IoR N=FBCDEA[QVR>@D FGA IWKDT>E;sD=H'sD@Rs<]DEN=FGPLILD@<]PnR<]D ;=ADEP\Z\KFG>WK*Z\FGVGV3d)DOZ\<LFI]ILD@A[dD_p,;=<LDnILKD_Y[R<LD <]D:Rs3j,2;HRmIoILKFGPtQVR>ED=HIWKDEY*>@RAd)D
MPWDEs*dY ILKD FGAPWDE<IWDEs>E;sD=j
uou Awv=vCx=x
compute_bis R1
Added code.
foo:
set foo, R1 switch_to_P_inst jump R1
compute R1
foo_bis:
set foo_bis, R1
jump R1 label_added:
P_exec P_inst
to ?? because the computed value depends on "foo"
depend on P_inst’s labels ("compute_bis" may be dif- -ferent from "compute").
(in P_exec) and might
"Rl>r?b²w02q,rjsR±zb7a +n~^>{`rjb| nt?lzayzi ¥
©sKr?bRb`b7rjk6p6¨°£¶r?sKa sKlzr²b*mzyMbrja0b7Rn~i²sR| sRay`b7ru46b7`br~knjb{Â|*s`{`bi¨z{zrjb| n t?lzayzi-kRyzyMbk6rPbn~^`br>i?{`bk
yzrjs`|*b7{zlzrjb³6bv,i?+nj|}^·ijnjk6n?ba0b7Rn~iÉ¿nj^`bn~k6rj6b nek6{z{zrjbi~i<yMs6KnjiesRl`n¯n?sk6·zijnjr~lz|*njsK Õº>»nj^`byzrjs| b{zl>r?bkRz{·i
s`| kpyzrjs| bi~i?b7{MË ¨`sKr+k6i kyzrjs`|*b{>lzr?bP| k6®sKr+r?bnjlzr~®¥
we`s6n~^`brPnp`yMbs£Oz{`rjb|*n t?l>a0yÂb mijnji20 v,4ijnjk6n?b7a-b7Knji¥0ÁÂbR`sKr?b7{®¨\^`b7r?bR¨°nj^`b7i?b£¶l>z|*njsKzi
±Mb|k6lzijbn~^`b p·np`y`| k6pb*m`b|l`n?b-o^`bIk6±z`sKrjak6\b*m`b7| l`njsK©^zk6y>y>b7zi ¥ 6 l`n¨BkRiei~^`sWo·("2Rlzrjb 4M¨BijsRa0b0|*s`{`b| k6
±Mb²k6{z{`b7{²t?lzijn+kW£¤njbrO J+ijnjk6n?ba0b7Rn¯É5 J kRijijba-±`br}Ë2n?sak6³6b¯k0i?+nj|}^n?s0nj^`b¯s6n~^`br | s{zb¯| sRyKp
£2rjbl`rjb{®¥
vOsKzi?b7l`bKn?p6¨ 6>Ã¤Ä°Å¶Æ a0yzb7a-b7Knjienj^`ba0s{zb-ij+n~|}^©r?sKlzz{·kyzr?s`| b{zlzrjb|kOɬt?lzi?nP±Mb*£¤sRrjbsKr%t?lzijn¯k£¤n?b7r Ë}¥e]+^`i
Klzk6r~k6Kn?bbinj^>kn%z{`r?b7|*nAt?lzayzi%zij{`bokPyzrjs`|*b7{zlzrjbeÉZk6i~i?b7a±`p|*s`{`b s6£°v,i?+nj|}^0ijnjknjba0bKn~iË\+zb m`b| lzn?bo|*sKrjrjb| n?p6¥
fobnjlzr~ziO£¶rjsRa yzrjs`|*b{>lzr?b7i k6rjbeak6zk66b7{±Kp>i?b7r?nj`|*s`{`bPkn n~^`b²r?bnjlzr~yMs6Knnjs-b7zi~lzr?b¯nj^zb¯q virjR^Kn ¥%]+^`i
| s{zbak6³b7i²ijl>r?bn~^`bb*m`b7| l`njsKÂrjbi~lza0bikn²nj^zbr?R^Kny`k6| b6¨s6n~^`brj+ijbak6³b7ik0t?lzay´njs·nj^`b^zsRa0s6s6RsRlziP|*s`{`bR¥
"2Rlzrjb40lzijnjr~knjbi+^`sW 6>Ã¤Ä°Å¶Æ ^zk6z{zb7i nj^`io{`7| l`npR¥
program rest of the P_exec ?
Should we be in
program rest of the
"foo" here return from
no no
yes yes
label label_bis
P_inst P_exec
call foo call foo_bis
Inserted code
Should we be in P_inst ?
return from
"foo_bis" here
"Rl>r?b4 0µ]+^zbPakRzkRba0bKn s£nj^`brjb n~lzrj>i£¶r?sKa yzrjs| b{zl>r?bR¥
6zÃ¶Ä°Å¶Æ Ñ Ò Í
]+^`b7r?b²kRr?b²lza0brjsRlzi ijs6l`n?sR>i n?sb*m`b|l`n?bPn~^`bi?+nj|}^±Mb nb b±Ms6nj^| sRy`bi s6£|*s`{`bR¨>lzyMsRk?|kPb 6b7Kn ¥n"2Klzr?b
{`b7ij|r?±MbiOnj^`bP|*s`{`bPi?b7|*njsKOb¯zi?b7r?njb{njs0yMbr?£¤sRr~a nj^`bPij+n~|}^`bilzyMsRy>r?s`|*b7{zlzrjbe|kiOsRkRKn?br~zk6Mb6bKneÉ Õº>ºB¸
a0s`{`bos6£ 6zÃ¶Ä°Å¶Æ Ë ¥%]+^`i,|*s`{`boijb| n?sR0+Ay>b7ru£¤sKrjanj^`b<ij+nj|}^-£¶r?sKa j`s6Zn~rjkR|*b |*s6b|*njsKJoa-s`{`b+njs*?njr~k6|*b+| s6b7|*n?sRe
a0s`{`b©kW£¤njbrRQ-S¸UTK¸#US-» j¸}¼: 3¡yzrjs`|*b{>lzr?b| k6iÉ¿kRz{ªK|*b ZRbr~ijkË ¥ "2rjijn ¨ knn~^`b·±>b6z``s£en~^`b©yzrjs`|*b{>lzr?bR¨Ok
[
KD RAPLZ1DE<1IW;! ,2K;=MVGs Z1Dnd)DOKDE<]D#"%$FGP1P]IW;=<]DEsFGA[Rfd;;=VGD@RA*BR<LFRdVGDOMQsRmIWDEsD@R>K[ILFGghDoILKDOD_X2D@>EMILFG;=APLZ\FIL>KDEPtIW;hRA;IWKDE<\>E;=QY
;pwIWKDO>E;sD=j
`baou`dc
a0s`{`b|}^`b|}³Ii{`sK`b±Mb|k6lzijbn~^`byzr?s`| b{zlzrjba0R^Kn0^>k¾6b±Mb b7 | k6b{¢+n~^ k6¢z{zrjb| n0|k¿¥]+^`bªk | sRlzKn?b7ri
z| rjba0b7Rnjb{k6>{ njbijn?b{°¥ 4£+rjbl`rjb{®¨®n~^`bij+n~|}^ iyMbr?£¤sRr~a-b7{®¥]+^`ia0s{zbk6sWoi²rjbyzrjs`{zlz|*±`b-n~rjkR|*` WsR4`b
ija-l`kn?sR|}^zk6zi¥
foo code foo_bis code
foo:
yes
no
yes
no P_inst?
++p_inst_counter p_inst_threshold ?
==
no no
Inserted code
P_exec P_inst
++p_exec_counter p_exec_threshold ?
==
yes yes
foo_bis:
Should we be in P_exec?
Should we be in
p_exec_counter := 0 p_inst_counter := 0
"2Klzrjbw0,xK+n~|}^``£¶r?sKa sRzbP| sRyKps6£|*s`{`b²njsnj^`b²sRnj^`b7r ¥
"MsRr0|*s6b|*njz £¤sRr~akn?sR°¨%Obak¾pk6ijs rjb psR¢b m`n?br~zk6Ob6bKn~i ¥¢xlz|}^ªkIa0s`{`bij+nj|}^¢i0ay`ba0b7Rnjb{ªk6i
£¤sRsWoiÉ?¼@ N a0s{zbs£ 6zÃ¶Ä°Å¶Æ Ë0oki~^zkRr?b7{¾kRr?k6±zbR¨A|kb7{¼S¸ T¸ #¨AieyMbrjs`{`| k6pr?b7k6{·±Kpnj^`b-nOs|*sR`b7ios£µn~^`b
njbijn?b{kRyzy`|kn?sR°¥2we| | sRr~{`z-njsn~i ¾k6lzb6¨zk066b7| sRyKps£2nj^`b²| s{zb¯i+b mb7| l`njb{IɶZ¥bR¥%nj^`bij+nj|}^i+yMbr?£¤sRr~a0b{sRr
`sRn Ë}¥Ow<b mnjbr~zk°y>r?s`|*b7iji+| sRKnjrjs6inj^`b²b m`b| lzn?sRa0s{zb±Rpor?n?` ¼S¸UTK¸ #6¥Ounj^`io| kRi?bR¨¼S¸UTK¸ #¯iorjbk6{n~^`b
n~rjkR|*b{·y>r?s`|*b7ijioo^`bb7k6|}^Knjbr~zk#b 6b7Knok6yzyMbkRrji²ÉZyzrjs| b{zl>r?b|kÕË}¥o]+^`bzi?b7r?njb{|*s`{`b·n~^`b| sK`b{·kRyzy`|kn?sR
ioijR^Kn?pi~^`sRrjn?b7rnj^zkR£¤sKr nj^`b ÕºMºA¸%a0s`{`b²s£ 6>Ã¤Ä°Å¶Æ ¨>±Mb|k6lzijbPnj^`b7r?bPio`s`b b7{£¤sRr Rnjbr~zk°| sRlzKnjbr~i ¥
SALTO
Link Assemble calvin.so
SALTO
Instrumentation_tool.so
Application.cloned.intrumented
*.inst.s *.exec.s
*.inst.i.s
*.cloned-instr.s
instrumentation-code.o setup_code_cloning.o
*.s
Concat
"2Klzr?b 0 eb7`br~knjzk| sK`b{4zi?n~rjl>a-b7Kn?b{k6y>y`| k6n?sR®¥
uou Awv=vCx=x