function assert(b) { if (!b) throw new Error("Bad assertion"); } noInline(assert); let tests = [ ["foo", "foo"], ["foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo", "foooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"], ]; function foo(a) { return a.toLowerCase(); } noInline(foo); function bar(a) { a.toLowerCase(); assert(true); // side effects a.toLowerCase(); } noInline(bar); let start = Date.now(); for (let i = 0; i < 500000; i++) { for (let i = 0; i < tests.length; i++) { let test = tests[i][0]; let result = tests[i][1]; assert(foo(test) === result); bar(test); } } const verbose = false; if (verbose) print(Date.now() - start);