tor-browser

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

bug1661728.js (824B)


      1 with ({}) {} // Don't inline anything into the top-level script.
      2 
      3 function foo() {}
      4 
      5 function inline_foo_into_bar() {
      6    with ({}) {} // Don't inline anything into this function.
      7    for (var i = 0; i < 10; i++) {
      8        bar(2);
      9    }
     10 
     11 }
     12 
     13 function bar(x) {
     14    switch (x) {
     15    case 1:
     16        inline_foo_into_bar();
     17 
     18        // Trigger a compacting gc to discard foo's jitscript.
     19        // Do it while bar is on the stack to keep bar's jitscript alive.
     20        gc(foo, 'shrinking');
     21        break;
     22    case 2:
     23        foo();
     24        break;
     25    case 3:
     26        break;
     27    }
     28 }
     29 
     30 // Warm up foo and bar.
     31 for (var i = 0; i < 10; i++) {
     32    foo();
     33    bar(3);
     34 }
     35 
     36 // Inline and discard foo's jitscript.
     37 bar(1);
     38 
     39 // Warp-compile bar
     40 for (var i = 0; i < 50; i++) {
     41    foo(); // ensure that foo has a new jitscript
     42    bar(3);
     43 }