1fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown// Copyright 2014 The Chromium Authors. All rights reserved.
2fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown// Use of this source code is governed by a BSD-style license that can be
3fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown// found in the LICENSE file.
4fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown(function(){
5fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown'use strict';
6fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
7fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownif (window.PerfTestHelper) {
8fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown  return;
9fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown}
10fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownwindow.PerfTestHelper = {};
11fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
12fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownvar randomSeed = 3384413;
13fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownwindow.PerfTestHelper.random = function() {
14fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    var temp = randomSeed;
15fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    // Robert Jenkins' 32 bit integer hash function.
16fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    temp = ((temp + 0x7ed55d16) + (temp << 12))  & 0xffffffff;
17fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    temp = ((temp ^ 0xc761c23c) ^ (temp >>> 19)) & 0xffffffff;
18fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    temp = ((temp + 0x165667b1) + (temp << 5))   & 0xffffffff;
194ccb823a9f62e57f9d221f83a97e82967e79a9e5Jeff Brown    temp = ((temp + 0xd3a2646c) ^ (temp << 9))   & 0xffffffff;
20cbad976b2a36a0895ca94510d5208a86f66cf596Jeff Brown    temp = ((temp + 0xfd7046c5) + (temp << 3))   & 0xffffffff;
2192130f6407dc51c58b3b941d28a6daf4e04b8d62Jeff Brown    temp = ((temp ^ 0xb55a4f09) ^ (temp >>> 16)) & 0xffffffff;
2227f1d674bf9fb53af7facdcb746912e036d5bf75Jeff Brown    randomSeed = temp;
23cbad976b2a36a0895ca94510d5208a86f66cf596Jeff Brown    return (randomSeed & 0xfffffff) / 0x10000000;
243f145a2f958320766ae9240c7a57debc20d578aaMichael Wright};
253f145a2f958320766ae9240c7a57debc20d578aaMichael Wright
263f145a2f958320766ae9240c7a57debc20d578aaMichael Wright})();
274ed8fe75e1dde1a2b9576f3862aecc5a572c56b5Jeff Brown