capture-stack-jit.js (1002B)
1 // |jit-test| --setpref=experimental.error_capture_stack_trace; --no-threads; --fast-warmup; 2 load(libdir + "asserts.js"); 3 4 if ('captureStackTrace' in Error) { 5 function caller(f) { 6 return f(); 7 } 8 9 10 function fill() { 11 let x = {} 12 Error.captureStackTrace(x, caller); 13 return x; 14 } 15 16 let iter = 1500 17 for (let i = 0; i < iter; i++) { 18 // Make sure caller is an IonFrame. 19 caller(fill); 20 } 21 22 23 function test_jit_elision() { 24 let x = caller(fill); 25 let { stack } = x; 26 print(stack); 27 assertEq(stack.includes("caller"), false); 28 assertEq(stack.includes("fill"), false); 29 } 30 31 function test_jit_elision2() { 32 ({ stack } = caller(() => { 33 let x = caller(fill); 34 return x; 35 })); 36 assertEq(stack.includes("caller"), true); // Only elide the first caller! 37 assertEq(stack.includes("fill"), false); 38 } 39 40 test_jit_elision(); 41 test_jit_elision2(); 42 }