// Test that we can capture only the N newest frames.
// This is the maxFrameCount argument to JS::CaptureCurrentStack.
load(libdir + 'asserts.js' );
function recur(n, limit) {
if (n > 0 )
return recur(n - 1 , limit);
return saveStack(limit);
}
// Negative values are rejected.
assertThrowsInstanceOf(() => saveStack(-1 ), TypeError);
// Zero means 'no limit'.
assertEq(saveStack(0 ).parent, null );
assertEq(recur(0 , 0 ).parent !== null , true );
assertEq(recur(0 , 0 ).parent.parent, null );
assertEq(recur(1 , 0 ).parent.parent.parent, null );
assertEq(recur(2 , 0 ).parent.parent.parent.parent, null );
assertEq(recur(3 , 0 ).parent.parent.parent.parent.parent, null );
// limit of 1
assertEq(saveStack(1 ).parent, null );
assertEq(recur(0 , 1 ).parent, null );
assertEq(recur(0 , 1 ).parent, null );
assertEq(recur(1 , 1 ).parent, null );
assertEq(recur(2 , 1 ).parent, null );
// limit of 2
assertEq(saveStack(2 ).parent, null );
assertEq(recur(0 , 2 ).parent !== null , true );
assertEq(recur(0 , 2 ).parent.parent, null );
assertEq(recur(1 , 2 ).parent.parent, null );
assertEq(recur(2 , 2 ).parent.parent, null );
// limit of 3
assertEq(saveStack(3 ).parent, null );
assertEq(recur(0 , 3 ).parent !== null , true );
assertEq(recur(0 , 3 ).parent.parent, null );
assertEq(recur(1 , 3 ).parent.parent.parent, null );
assertEq(recur(2 , 3 ).parent.parent.parent, null );
Messung V0.5 in Prozent C=86 H=98 G=91
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-05)
¤
*© Formatika GbR, Deutschland