summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/ion/call-generic-methods.js
blob: 83c2f75487d231980833472c5f1e61b52f693adc (plain)
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);
}