Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / jit-test / tests / basic / testBitOrAnyInconvertibleObject.js
1 function testBitOrAnyInconvertibleObject()
2 {
3   var count = 0;
4   function toString() { ++count; if (count == 95) return {}; return count; }
5   var o = {valueOf: undefined, toString: toString};
6
7   var threw = false;
8   try
9   {
10     for (var i = 0; i < 100; i++)
11         var q = 1 | o;
12   }
13   catch (e)
14   {
15     threw = true;
16     if (i !== 94)
17       return "expected i === 94, got " + i;
18     if (q !== 95)
19       return "expected q === 95, got " + q;
20     if (count !== 95)
21       return "expected count === 95, got " + count;
22   }
23   if (!threw)
24     return "expected throw with 2 | o"; // hey, a rhyme!
25
26   return "pass";
27 }
28 assertEq(testBitOrAnyInconvertibleObject(), "pass");
29 checkStats({
30   recorderStarted: 1,
31   recorderAborted: 0,
32   sideExitIntoInterpreter: 3
33 });