// Basic overflow in hoisted condition. function foo(x, n) { var v = 0; for (var i = 0; i < n; i++)
v += x[i]; return v;
} for (var i = 0; i < 15; i++)
assertEq(foo(a, 5), 15);
assertEq(foo(a, 6), NaN);
// Basic underflow in hoisted condition. function foo2(x, m, n) { var v = 0; for (var i = m; i < n; i++)
v += x[i]; return v;
} for (var i = 0; i < 15; i++)
assertEq(foo2(a, 0, 5), 15);
assertEq(foo2(a, -1, 5), NaN);
// Overflow when hoisting consolidated condition. function foo3(x, m, n) { var v = 0; for (var i = m; i < n; i++)
v += x[i] + x[i + 1] + x[i + 2]; return v;
} for (var i = 0; i < 15; i++)
assertEq(foo3(a, 0, 3), 27);
assertEq(foo3(a, 0, 4), NaN);
// Underflow when hoisting consolidated condition. function foo4(x, m, n) { var v = 0; for (var i = m; i < n; i++)
v += x[i] + x[i - 1] + x[i - 2]; return v;
} for (var i = 0; i < 15; i++)
assertEq(foo4(a, 2, 5), 27);
assertEq(foo4(a, 0, 5), NaN);
// Underflow due to decreasing index. function foo5(x, n) { var v = 0; for (var i = 0; i < n; i++) {
v += x[i]; if (n == 4)
i -= 2; if (i == -5) break;
} return v;
} for (var i = 0; i < 15; i++)
assertEq(foo5(a, 5), 15);
assertEq(foo5(a, 4), NaN);
// Overflow after access at constant offset. function foo6(x, m, n) { var v = 0; for (var i = m; i < n; i++)
v += x[i + 10]; return v;
} for (var i = 0; i < 15; i++)
assertEq(foo6(a, -10, -5), 15);
assertEq(foo6(a, -10, -4), NaN);
// Underflow after access at constant offset. function foo7(x, m, n) { var v = 0; for (var i = m; i < n; i++)
v += x[i + 10]; return v;
} for (var i = 0; i < 15; i++)
assertEq(foo7(a, -10, -5), 15);
assertEq(foo7(a, -11, -5), NaN);
Messung V0.5
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.