var count = 0; | |
// OSR into a finally block should not throw away the frame's | |
// return value. | |
function test1() { | |
try { | |
return [1, 2, 3]; | |
} finally { | |
for (var i=0; i<20; i++) { count++; } | |
} | |
} | |
assertEq(test1().toString(), "1,2,3"); | |
assertEq(count, 20); | |
// OSR into the finally block, with exception pending. | |
function test2() { | |
try { | |
throw 3; | |
} finally { | |
for (var i=0; i<20; i++) { count++; } | |
} | |
} | |
try { | |
test2(); | |
assertEq(0, 1); | |
} catch(e) { | |
assertEq(e, 3); | |
} | |
assertEq(count, 40); |