Commit c76ea0e
Samuel Groß
Redesign For-Loops in FuzzIL
Similar to while- and do-while loops, for-loops now consists of multiple blocks:
BeginForLoopInitializer
// ...
// v0 = initial value of the (single) loop variable
BeginForLoopCondition v0 -> v1
// v1 = current value of the (single) loop variable
// ...
BeginForLoopAfterthought -> v2
// v2 = current value of the (single) loop variable
// ...
BeginForLoopBody -> v3
// v3 = current value of the (single) loop variable
// ...
EndForLoop
A simple for-loop will be lifted to:
for (let i = init; cond; afterthought) {
body(i);
}
However, more (and less) complex for loops are also possible. Some
examples include:
for (;;) {
body();
}
for (let i4 = f1(), i5 = f2(); f3(i4), f4(i5); f5(i5), f6(i4)) {
body(i4, i5);
}
for (let [i6, i7] = (() => {
const v1 = f();
const v3 = g();
h();
return [v1, v3];
})();
i6 < i7;
i6 += 2) {
body(i6, i7);
}
See the added tests for yet more examples.1 parent e25fa16 commit c76ea0e
33 files changed
Lines changed: 1792 additions & 599 deletions
File tree
- Sources
- FuzzilliCli
- Profiles
- Fuzzilli
- Base
- CodeGen
- Compiler
- Parser
- FuzzIL
- Lifting
- Minimization
- Mutators
- Protobuf
- Tests/FuzzilliTests
- CompilerTests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2190 | 2190 | | |
2191 | 2191 | | |
2192 | 2192 | | |
2193 | | - | |
2194 | | - | |
2195 | | - | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
| 2219 | + | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
| 2226 | + | |
| 2227 | + | |
| 2228 | + | |
2196 | 2229 | | |
2197 | 2230 | | |
2198 | 2231 | | |
| |||
2209 | 2242 | | |
2210 | 2243 | | |
2211 | 2244 | | |
2212 | | - | |
| 2245 | + | |
2213 | 2246 | | |
2214 | 2247 | | |
2215 | 2248 | | |
2216 | 2249 | | |
2217 | | - | |
| 2250 | + | |
2218 | 2251 | | |
2219 | 2252 | | |
2220 | 2253 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1176 | 1176 | | |
1177 | 1177 | | |
1178 | 1178 | | |
1179 | | - | |
1180 | | - | |
1181 | | - | |
1182 | | - | |
1183 | | - | |
| 1179 | + | |
| 1180 | + | |
1184 | 1181 | | |
1185 | 1182 | | |
1186 | 1183 | | |
1187 | 1184 | | |
| 1185 | + | |
| 1186 | + | |
| 1187 | + | |
| 1188 | + | |
| 1189 | + | |
| 1190 | + | |
| 1191 | + | |
| 1192 | + | |
| 1193 | + | |
| 1194 | + | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
| 1199 | + | |
| 1200 | + | |
1188 | 1201 | | |
1189 | 1202 | | |
1190 | 1203 | | |
| |||
1218 | 1231 | | |
1219 | 1232 | | |
1220 | 1233 | | |
1221 | | - | |
| 1234 | + | |
1222 | 1235 | | |
1223 | 1236 | | |
1224 | 1237 | | |
| |||
1463 | 1476 | | |
1464 | 1477 | | |
1465 | 1478 | | |
1466 | | - | |
| 1479 | + | |
1467 | 1480 | | |
1468 | 1481 | | |
1469 | 1482 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
102 | | - | |
| 102 | + | |
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
| 107 | + | |
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | | - | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
123 | | - | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
| |||
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
159 | | - | |
| 159 | + | |
160 | 160 | | |
161 | 161 | | |
162 | 162 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
203 | | - | |
204 | | - | |
205 | | - | |
206 | | - | |
207 | | - | |
208 | | - | |
209 | | - | |
210 | | - | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
211 | 220 | | |
212 | | - | |
213 | | - | |
214 | | - | |
215 | | - | |
216 | | - | |
217 | | - | |
218 | | - | |
219 | | - | |
220 | | - | |
221 | | - | |
222 | | - | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
223 | 230 | | |
224 | | - | |
225 | | - | |
226 | | - | |
227 | | - | |
228 | | - | |
229 | | - | |
230 | | - | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
238 | | - | |
239 | | - | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
244 | 237 | | |
245 | | - | |
246 | | - | |
247 | | - | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
248 | 241 | | |
249 | | - | |
250 | 242 | | |
251 | | - | |
| 243 | + | |
| 244 | + | |
252 | 245 | | |
253 | 246 | | |
254 | 247 | | |
| |||
282 | 275 | | |
283 | 276 | | |
284 | 277 | | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
285 | 285 | | |
286 | 286 | | |
287 | 287 | | |
| |||
791 | 791 | | |
792 | 792 | | |
793 | 793 | | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
794 | 799 | | |
795 | 800 | | |
796 | 801 | | |
| |||
0 commit comments