ichiga olgan dastur funktsiyasining har bir tayinlash bayonoti uchun DScope
iter topshiriq bayonotining chap tomonidagi o'zgaruvchini kiritish-chiqarish
bilan bog'liq o'zgaruvchilar sifatida faol ravishda belgilaydi. shuningdek. Barcha
kiritish-chiqarish bilan bog'liq o'zgaruvchilarni aniqlagandan so'ng, DScope
chiqish tekshiruvi bayonotlarida kirish/chiqarish bilan bog'liq o'zgaruvchilarning
ko'rinishini aniqlash orqali tsikldan chiqish shartlari I/U ga bog'liqligini tekshiradi.
6-rasmda bilvosita I/U ga bog'liq bo'lgan tsikldan chiqish holati misoli
ko'rsatilgan. Ushbu misolda tsikldan chiqish tekshiruvi $l8 (3-qator) va b5 (8-
qator) ni o'z ichiga oladi, ularning qiymati Java I/U operatsiyasidan olingan
InputStream.skip() dan olingan l4 .
4
,
.
/ / S oot IR
<
I npu tS tre am: o'qish ( ) >( r 2 ) / /
$ i 1 - I /O
198 $ i 1 = r 0 . //
tegishli
o'zgaruvchi
[L java / lang / S tring; > ;
199
agar
$ i 1 == ÿ1
oÿtish
qatori ÿ203 / /
$ i 1 == ÿ1 / / chiqish sharti
LocalVar iableTypeT ab le : ism ind
ex signatureind ex #219 #232
// S oot IR
// chiqish sharti
// S oot IR
10
$ r 1 3 =
yangi
java. util. HashMap
3
agar
l 8 >= l 0 ÿ12 satrga o'tish / /
l 8 >= l 0 bo'lsa
S tring [ ] > blok kT oN ode s =
// J avasourcec ode
// chiqish sharti
269 HashMap< OneBloc kIn fo 270
yangi
HashMap< OneBloc kIn f o
S tring [ ] > ( );
. . .
4DScope asosan Soot IR kodida ishlaydi, I/U ga bog'liq bo'lgan loop identifikatsiya
Do'stlaringiz bilan baham: |