function maybeFreeze(arr, b) { with(this) {}; // Don't inline this. if (b) { Object.freeze(arr); } } function test() { var arr = []; for (var i = 0; i < 1800; i++) { maybeFreeze(arr, i > 1500); try { arr.push(2); assertEq(i <= 1500, true); } catch(e) { assertEq(e instanceof TypeError, true); } } } test();