1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
// Test that the generic call trampoline calls methods correctly.
function foo(o) {
return o.f(1);
}
function id(x) { return x; }
var o1 = { f: id }
var o2 = { f: id.bind({}) }
var o3 = { f: id.bind({}, 2) }
var o4 = [0,0,0,1,0,0,0,0,1,0,0,0];
o4.f = [].indexOf;
var o5 = [0,0,0,1,0,0,0,1,0,0];
o5.f = [].lastIndexOf;
with ({}) {}
for (var i = 0; i < 500; i++) {
assertEq(foo(o1), 1);
assertEq(foo(o2), 1);
assertEq(foo(o3), 2);
assertEq(foo(o4), 3);
assertEq(foo(o5), 7);
}
|