call-generic-cross-realm.js (764B)
1 // Test that the generic call tramponline handles cross-realm calls. 2 3 function foo(f) { 4 return f(1); 5 } 6 function foo_call(f) { 7 return f.call({}, 1); 8 } 9 10 with ({}) {} 11 12 var g = newGlobal({sameCompartmentAs: this}); 13 g.eval(` 14 function f1(x) { return x; } 15 var f2 = f1.bind({}); 16 var f3 = Math.log; 17 `); 18 19 var f1 = g.f1; 20 var f2 = g.f2; 21 var f3 = g.f3; 22 23 var f4 = f1.bind({}); 24 var f5 = f2.bind({}); 25 var f6 = f3.bind({}); 26 27 for (var i = 0; i < 500; i++) { 28 assertEq(foo(f1), 1); 29 assertEq(foo(f2), 1); 30 assertEq(foo(f3), 0); 31 assertEq(foo(f4), 1); 32 assertEq(foo(f5), 1); 33 assertEq(foo(f6), 0); 34 assertEq(foo_call(f1), 1); 35 assertEq(foo_call(f2), 1); 36 assertEq(foo_call(f3), 0); 37 assertEq(foo_call(f4), 1); 38 assertEq(foo_call(f5), 1); 39 assertEq(foo_call(f6), 0); 40 }