// This test is made to be effective with --no-jm.

var list = [
  { entry00: 0, length: 1 },
  { entry01: 0, length: 1 },
  { entry02: 0, length: 1 },
  { entry03: 0, length: 1 },
  { entry04: 0, length: 1 },
  { entry05: 0, length: 1 },
  { entry06: 0, length: 1 },
  { entry07: 0, length: 1 },
  { entry08: 0, length: 1 },
  { entry09: 0, length: 1 },
  { entry10: 0, length: 1 },
  { entry11: 0, length: 1 },
  { entry12: 0, length: 1 },
  { entry13: 0, length: 1 },
  { entry14: 0, length: 1 },
  { entry15: 0, length: 1 },
  { entry16: 0, length: 1 }, // cause an overflow.
  { entry17: 0, length: 1 },
  [0],
  (new Uint8Array(new ArrayBuffer(1)))
];

function f(obj) {
    return obj.length;
}

// Cook the f function on the top of the list to make sure we do not register
// our test cases.
for (var i = 0; i < 100; i++)
    f(list[i % 10]);

// Register & check stubs.
for (var i = 0; i < 40; i++)
    assertEq(f(list[i % 20]), 1);
