1870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// Copyright 2008 the V8 project authors. All rights reserved.
2870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// Redistribution and use in source and binary forms, with or without
3870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// modification, are permitted provided that the following conditions are
4870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// met:
5870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//
6870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//     * Redistributions of source code must retain the above copyright
7870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//       notice, this list of conditions and the following disclaimer.
8870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//     * Redistributions in binary form must reproduce the above
9870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//       copyright notice, this list of conditions and the following
10870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//       disclaimer in the documentation and/or other materials provided
11870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//       with the distribution.
12870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//     * Neither the name of Google Inc. nor the names of its
13870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//       contributors may be used to endorse or promote products derived
14870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//       from this software without specific prior written permission.
15870a0b67c822d289024711912e2512af01b66c3bager@chromium.org//
16870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27870a0b67c822d289024711912e2512af01b66c3bager@chromium.org
28870a0b67c822d289024711912e2512af01b66c3bager@chromium.org// See <URL:http://code.google.com/p/v8/issues/detail?id=137>
29870a0b67c822d289024711912e2512af01b66c3bager@chromium.org
30870a0b67c822d289024711912e2512af01b66c3bager@chromium.org(function () {
31870a0b67c822d289024711912e2512af01b66c3bager@chromium.org  var strNum = 170;
32870a0b67c822d289024711912e2512af01b66c3bager@chromium.org  var base = strNum / 16;
33870a0b67c822d289024711912e2512af01b66c3bager@chromium.org  var rem = strNum % 16;
34870a0b67c822d289024711912e2512af01b66c3bager@chromium.org  var base = base - (rem / 16);  // base is now HeapNumber with valid Smi value.
35870a0b67c822d289024711912e2512af01b66c3bager@chromium.org
36870a0b67c822d289024711912e2512af01b66c3bager@chromium.org  switch(base) {
37870a0b67c822d289024711912e2512af01b66c3bager@chromium.org    case 10: return "A";  // Expected result.
38870a0b67c822d289024711912e2512af01b66c3bager@chromium.org    case 11: return "B";
39870a0b67c822d289024711912e2512af01b66c3bager@chromium.org    case 12: return "C";
40870a0b67c822d289024711912e2512af01b66c3bager@chromium.org    case 13: return "D";
41870a0b67c822d289024711912e2512af01b66c3bager@chromium.org    case 14: return "E";
42870a0b67c822d289024711912e2512af01b66c3bager@chromium.org    case 15: return "F";  // Enough cases to trigger fast-case Smi switch.
43870a0b67c822d289024711912e2512af01b66c3bager@chromium.org  };
44870a0b67c822d289024711912e2512af01b66c3bager@chromium.org  fail("case 10", "Default case", "Heap number not recognized as Smi value");
45870a0b67c822d289024711912e2512af01b66c3bager@chromium.org})();
46