17f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// Copyright 2010 the V8 project authors. All rights reserved.
27f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// Redistribution and use in source and binary forms, with or without
37f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// modification, are permitted provided that the following conditions are
47f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// met:
57f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//
67f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//     * Redistributions of source code must retain the above copyright
77f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//       notice, this list of conditions and the following disclaimer.
87f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//     * Redistributions in binary form must reproduce the above
97f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//       copyright notice, this list of conditions and the following
107f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//       disclaimer in the documentation and/or other materials provided
117f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//       with the distribution.
127f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//     * Neither the name of Google Inc. nor the names of its
137f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//       contributors may be used to endorse or promote products derived
147f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//       from this software without specific prior written permission.
157f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch//
167f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
177f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
187f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
197f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
207f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
217f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
227f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
237f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
247f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
257f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
267f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
277f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch
287f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochvar obj = { 0: "obj0" };
297f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch
307f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// Array index k is to big to fit into the string hash field.
317f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochvar k = 16777217;
327f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochvar h = "" + k;
337f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch
347f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochobj[k] = "obj" + k;
357f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch
367f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch// Force computation of hash for the string representation of array index.
377f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochfor (var i = 0; i < 10; i++) { ({})[h]; }
387f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch
397f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdochfunction get(idx) { return obj[idx]; }
407f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen Murdoch
417f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen MurdochassertEquals(get(0), "obj0");
427f4d5bd8c03935e2c0cd412e561b8fc5a6a880aeBen MurdochassertEquals(get(h), "obj" + h);
43