tor-browser

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

Frame-eval-20.js (1165B)


      1 // |jit-test| --ion-osr=off
      2 
      3 // Eval-in-frame with different type on non-youngest Ion frame.
      4 
      5 load(libdir + "jitopts.js");
      6 
      7 if (!jitTogglesMatch(Opts_Ion2NoOffthreadCompilation))
      8  quit(0);
      9 
     10 withJitOptions(Opts_Ion2NoOffthreadCompilation, function () {
     11  function test(shadow) {
     12    var g = newGlobal({newCompartment: true});
     13    var dbg = new Debugger;
     14 
     15    // Note that we depend on CCW scripted functions being opaque to Ion
     16    // optimization for this test.
     17    g.h = function h(d) {
     18      if (d) {
     19        dbg.addDebuggee(g);
     20        var f = dbg.getNewestFrame().older;
     21        assertEq(f.implementation, "ion");
     22        assertEq(f.environment.getVariable("foo"), 42);
     23 
     24        // EIF of a different type too.
     25        f.eval((shadow ? "var " : "") + "foo = 'string of 42'");
     26        g.expected = shadow ? 42 : "string of 42";
     27      }
     28    }
     29 
     30    g.eval("" + function f(d) {
     31      var foo = 42;
     32      g(d);
     33      return foo;
     34    });
     35    g.eval("" + function g(d) {
     36      h(d);
     37    });
     38 
     39    g.eval("(" + function () {
     40      for (i = 0; i < 5; i++)
     41        f(false);
     42      assertEq(f(true), "string of 42");
     43    } + ")();");
     44  }
     45 
     46  test(false);
     47  test(true);
     48 });