| Index: test/js-perf-test/Object/values.js
 | 
| diff --git a/test/js-perf-test/Object/values.js b/test/js-perf-test/Object/values.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..acdec49bbdeaf858a1640af0821598b5421670a2
 | 
| --- /dev/null
 | 
| +++ b/test/js-perf-test/Object/values.js
 | 
| @@ -0,0 +1,75 @@
 | 
| +// Copyright 2016 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.
 | 
| +
 | 
| +new BenchmarkSuite('Values', [1000], [
 | 
| +  new Benchmark('Basic', false, false, 0, Basic, BasicSetup, BasicTearDown),
 | 
| +]);
 | 
| +
 | 
| +var object;
 | 
| +var expected;
 | 
| +var result;
 | 
| +var symbol1;
 | 
| +
 | 
| +function Basic() {
 | 
| +  result = Object.values(object);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +function BasicSetup() {
 | 
| +  result = undefined;
 | 
| +  symbol1 = Symbol('test');
 | 
| +  object = { a: 10 };
 | 
| +  object[26.0] = 'third';
 | 
| +  object.b = 72;
 | 
| +  object[symbol1] = 'TEST';
 | 
| +  Object.defineProperty(object, 'not-enumerable', {
 | 
| +      enumerable: false, value: 'nope', writable: true, configurable: true });
 | 
| +}
 | 
| +
 | 
| +
 | 
| +function BasicTearDown() {
 | 
| +  return result.length === 3 && result[0] === 10 && result[1] === 'third' &&
 | 
| +         result[2] === 72;
 | 
| +}
 | 
| +
 | 
| +// ----------------------------------------------------------------------------
 | 
| +
 | 
| +new BenchmarkSuite('ValuesMegamorphic', [1000], [
 | 
| +  new Benchmark('BasicMegamorphic', false, false, 0, BasicMegamorphic,
 | 
| +                BasicMegamorphicSetup, BasicMegamorphicTearDown)
 | 
| +]);
 | 
| +
 | 
| +
 | 
| +function BasicMegamorphic() {
 | 
| +  for (var i = 0; i < object.length; ++i) {
 | 
| +    result[i] = Object.values(object[i]);
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +
 | 
| +function BasicMegamorphicSetup() {
 | 
| +  // Create 1k objects with different maps.
 | 
| +  object = [];
 | 
| +  expected = [];
 | 
| +  result = [];
 | 
| +  for (var i=0; i<1000; i++) {
 | 
| +    var obj = {};
 | 
| +    var exp = [];
 | 
| +    for (var j=0; j<10; j++) {
 | 
| +      obj['key-'+i+'-'+j] = 'property-'+i+'-'+j;
 | 
| +      exp[j] = 'property-'+i+'-'+j;
 | 
| +    }
 | 
| +    object[i] = obj;
 | 
| +    expected[i] = exp;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +
 | 
| +function BasicMegamorphicTearDown() {
 | 
| +  if (JSON.stringify(expected) !== JSON.stringify(result)) {
 | 
| +    throw new Error("FAILURE");
 | 
| +  }
 | 
| +  object = result = expected = undefined;
 | 
| +  return true;
 | 
| +}
 | 
| 
 |