//@ skip if $model == "Apple Watch Series 3" # added by mark-jsc-stress-test.py // Copyright 2008 the V8 project authors. All rights reserved. // Copyright (C) 2013 Apple Inc. All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following // disclaimer in the documentation and/or other materials provided // with the distribution. // * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Test the performance of Int16Array by implementing a bubble sort. function bubbleSort(array) { for (var i = 1; i < (array.byteLength >> 1); ++i) { for (var j = 0; j < (array.byteLength >> 1) - i; ++j) { if (array[j + 1] < array[j]) { var tmp = array[j]; array[j] = array[j + 1]; array[j + 1] = tmp; } } } } // V8's random function. myRandom = (function() { var seed = 49734321; return function() { // Robert Jenkins' 32 bit integer hash function. seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff; seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff; seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff; seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff; seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff; seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff; return (seed & 0xfffffff) / 0x10000000; }; })(); function arrayToString(array) { var result = "["; for (var i = 0; i < (array.byteLength >> 1); ++i) { if (i) result += ", "; result += array[i]; } return result + "]"; } function validateSort(array) { for (var i = 0; i < (array.byteLength >> 1) - 1; ++i) { if (array[i + 1] < array[i]) return false; } return true; } var array = new Int16Array(1000); for (var count = 0; count < 10; ++count) { for (var i = 0; i < (array.byteLength >> 1); ++i) { array[i] = myRandom() * 65535; } bubbleSort(array); if (!validateSort(array)) throw "Bad result: " + arrayToString(array); }