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