testReallyDeepNestedExit.js (985B)
1 function reallyDeepNestedExit(schedule) 2 { 3 var c = 0, j = 0; 4 for (var i = 0; i < 5; i++) { 5 for (j = 0; j < 4; j++) { 6 c += (schedule[i*4 + j] == 1) ? 1 : 2; 7 } 8 } 9 return c; 10 } 11 function testReallyDeepNestedExit() 12 { 13 var c = 0; 14 var schedule1 = new Array(5*4); 15 var schedule2 = new Array(5*4); 16 for (var i = 0; i < 5*4; i++) { 17 schedule1[i] = 0; 18 schedule2[i] = 0; 19 } 20 /** 21 * First innermost compile: true branch runs through. 22 * Second '': false branch compiles new loop edge. 23 * First outer compile: expect true branch. 24 * Second '': hit false branch. 25 */ 26 schedule1[0*4 + 3] = 1; 27 var schedules = [schedule1, 28 schedule2, 29 schedule1, 30 schedule2, 31 schedule2]; 32 33 for (var i = 0; i < 5; i++) { 34 c += reallyDeepNestedExit(schedules[i]); 35 } 36 return c; 37 } 38 assertEq(testReallyDeepNestedExit(), 198);