tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }