tor-browser

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

Object-isSameNativeWithJitInfo.js (1333B)


      1 var g = newGlobal({newCompartment: true});
      2 var dbg = Debugger(g);
      3 var gdbg = dbg.addDebuggee(g);
      4 
      5 assertEq(gdbg.getProperty("print").return.isSameNativeWithJitInfo(print), true);
      6 assertEq(gdbg.getProperty("print").return.isSameNativeWithJitInfo(newGlobal), false);
      7 
      8 // FakeDOMObject's accessor shares the single native functions, with
      9 // different JSJitInfo for each.
     10 
     11 gdbg.executeInGlobal(`
     12 var fun1 = Object.getOwnPropertyDescriptor(FakeDOMObject.prototype, "x").get;
     13 var fun2 = Object.getOwnPropertyDescriptor(FakeDOMObject.prototype, "slot").get;
     14 `);
     15 
     16 var g_fun1 = gdbg.executeInGlobal("fun1").return;
     17 var g_fun2 = gdbg.executeInGlobal("fun2").return;
     18 
     19 var fun1 = Object.getOwnPropertyDescriptor(FakeDOMObject.prototype, "x").get;
     20 var fun2 = Object.getOwnPropertyDescriptor(FakeDOMObject.prototype, "slot").get;
     21 
     22 // isSameNative doesn't distinguish between fun1 and fun2.
     23 assertEq(g_fun1.isSameNative(fun1), true);
     24 assertEq(g_fun1.isSameNative(fun2), true);
     25 assertEq(g_fun2.isSameNative(fun1), true);
     26 assertEq(g_fun2.isSameNative(fun2), true);
     27 
     28 // isSameNativeWithJitInfo can distinguish between fun1 and fun2.
     29 assertEq(g_fun1.isSameNativeWithJitInfo(fun1), true);
     30 assertEq(g_fun1.isSameNativeWithJitInfo(fun2), false);
     31 assertEq(g_fun2.isSameNativeWithJitInfo(fun1), false);
     32 assertEq(g_fun2.isSameNativeWithJitInfo(fun2), true);