| // Copyright 2017 the V8 project authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | function addBenchmark(name, test) { | 
 |   new BenchmarkSuite(name, [1000], | 
 |       [ | 
 |         new Benchmark(name, false, false, 0, test) | 
 |       ]); | 
 | } | 
 |  | 
 | addBenchmark('Smi-Add', addSmi); | 
 | addBenchmark('Number-Add', addNumber); | 
 | addBenchmark('Number-Oddball-Add', addOddball); | 
 | addBenchmark('String-Add', addString); | 
 | addBenchmark('Number-String-Add', addNumberString); | 
 | addBenchmark('Object-Add', addObject); | 
 | addBenchmark('Smi-Sub', subSmi); | 
 | addBenchmark('Number-Sub', subNumber); | 
 | addBenchmark('Number-Oddball-Sub', subOddball); | 
 | addBenchmark('Object-Sub', subObject); | 
 | addBenchmark('Smi-Mul', mulSmi); | 
 | addBenchmark('Number-Mul', mulNumber); | 
 | addBenchmark('Number-Oddball-Mul', mulOddball); | 
 | addBenchmark('Object-Mul', mulObject); | 
 | addBenchmark('Smi-Div', divSmi); | 
 | addBenchmark('Number-Div', divNumber); | 
 | addBenchmark('Number-Oddball-Div', divOddball); | 
 | addBenchmark('Object-Div', divObject); | 
 | addBenchmark('Smi-Mod', modSmi); | 
 | addBenchmark('Number-Mod', modNumber); | 
 | addBenchmark('Number-Oddball-Mod', modOddball); | 
 | addBenchmark('Object-Mod', modObject); | 
 | addBenchmark('Smi-Constant-Add', addSmiConstant); | 
 | addBenchmark('Smi-Constant-Sub', subSmiConstant); | 
 | addBenchmark('Smi-Constant-Mul', mulSmiConstant); | 
 | addBenchmark('Smi-Constant-Div', divSmiConstant); | 
 | addBenchmark('Smi-Constant-Mod', modSmiConstant); | 
 | addBenchmark('Smi-Increment', SmiIncrement); | 
 | addBenchmark('Number-Increment', NumberIncrement); | 
 | addBenchmark('Smi-Decrement', SmiDecrement); | 
 | addBenchmark('Number-Decrement', NumberDecrement); | 
 |  | 
 |  | 
 | function add(a, b) { | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |     a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; a + b; | 
 |   } | 
 | } | 
 |  | 
 | function sub(a, b) { | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |     a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; a - b; | 
 |   } | 
 | } | 
 |  | 
 | function mul(a, b) { | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |     a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; a * b; | 
 |   } | 
 | } | 
 |  | 
 | function div(a, b) { | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |     a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; a / b; | 
 |   } | 
 | } | 
 |  | 
 | function mod(a, b) { | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |     a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; a % b; | 
 |   } | 
 | } | 
 |  | 
 | function addSmiConstant(a) { | 
 |   var a = 20; | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |     a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; a + 10; | 
 |   } | 
 | } | 
 |  | 
 | function subSmiConstant() { | 
 |   var a = 20; | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |     a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; a - 10; | 
 |   } | 
 | } | 
 |  | 
 | function mulSmiConstant() { | 
 |   var a = 20; | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |     a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; a * 10; | 
 |   } | 
 | } | 
 |  | 
 | function divSmiConstant() { | 
 |   var a = 20; | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |     a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; a / 10; | 
 |   } | 
 | } | 
 |  | 
 | function modSmiConstant() { | 
 |   var a = 20; | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |     a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; a % 10; | 
 |   } | 
 | } | 
 |  | 
 | function inc(a) { | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; ++a; | 
 |     // To ensure it is always in SmiRange for Smi operation. | 
 |     a -= 1000; | 
 |   } | 
 | } | 
 |  | 
 | function dec(a) { | 
 |   for (var i = 0; i < 1000; ++i) { | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     --a; --a; --a; --a; --a; --a; --a; --a; --a; --a; | 
 |     // To ensure it is always in SmiRange for Smi operation. | 
 |     a += 1000; | 
 |   } | 
 | } | 
 |  | 
 | function addSmi() { | 
 |  add(10, 20); | 
 | } | 
 |  | 
 | function addNumber() { | 
 |  add(0.333, 0.5); | 
 | } | 
 |  | 
 | function addOddball() { | 
 |  add(0.333, true); | 
 | } | 
 |  | 
 | function addString() { | 
 |  add("abc", "def"); | 
 | } | 
 |  | 
 | function addNumberString() { | 
 |  add("abc", 1.23); | 
 | } | 
 |  | 
 | function addObject() { | 
 |  add({x: 1, y:2}, {x:3, y:4}); | 
 | } | 
 |  | 
 | function subSmi() { | 
 |  sub(10, 20); | 
 | } | 
 |  | 
 | function subNumber() { | 
 |  sub(0.333, 0.5); | 
 | } | 
 |  | 
 | function subOddball() { | 
 |  sub(0.333, true); | 
 | } | 
 |  | 
 | function subObject() { | 
 |  sub({x: 1, y:2}, {x:3, y:4}); | 
 | } | 
 |  | 
 | function mulSmi() { | 
 |  mul(10, 20); | 
 | } | 
 |  | 
 | function mulNumber() { | 
 |  mul(0.333, 0.5); | 
 | } | 
 |  | 
 | function mulOddball() { | 
 |  mul(0.333, true); | 
 | } | 
 |  | 
 | function mulObject() { | 
 |  mul({x: 1, y:2}, {x:3, y:4}); | 
 | } | 
 |  | 
 | function divSmi() { | 
 |  div(10, 20); | 
 | } | 
 |  | 
 | function divNumber() { | 
 |  div(0.333, 0.5); | 
 | } | 
 |  | 
 | function divOddball() { | 
 |  div(0.333, true); | 
 | } | 
 |  | 
 | function divObject() { | 
 |  div({x: 1, y:2}, {x:3, y:4}); | 
 | } | 
 |  | 
 | function modSmi() { | 
 |  mod(10, 20); | 
 | } | 
 |  | 
 | function modNumber() { | 
 |  mod(0.333, 0.5); | 
 | } | 
 |  | 
 | function modOddball() { | 
 |  mod(0.333, true); | 
 | } | 
 |  | 
 | function modObject() { | 
 |  mod({x: 1, y:2}, {x:3, y:4}); | 
 | } | 
 |  | 
 | function SmiIncrement() { | 
 |  inc(3); | 
 | } | 
 |  | 
 | function NumberIncrement() { | 
 |  inc(0.33); | 
 | } | 
 |  | 
 | function SmiDecrement() { | 
 |  dec(3); | 
 | } | 
 |  | 
 | function NumberDecrement() { | 
 |  dec(0.33); | 
 | } |