1014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Copyright 2014 the V8 project authors. All rights reserved.
2014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// found in the LICENSE file.
4014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
5014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochnew BenchmarkSuite('Assign', [1000], [
6014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  new Benchmark('BasicAssign1', false, false, 0,
7014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                BasicAssign1, BasicAssign1Setup, BasicAssign1TearDown),
8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  new Benchmark('BasicAssign3', false, false, 0,
9014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                BasicAssign3, BasicAssign3Setup, BasicAssign3TearDown),
10014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  new Benchmark('BasicAssignNull3', false, false, 0,
11014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                BasicAssignNull3, BasicAssignNull3Setup,
12014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch                BasicAssignNull3TearDown),
13014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch]);
14014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
15014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar object;
16014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar src1;
17014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar src2;
18014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar src3;
19014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar obj1;
20014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar obj2;
21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
22014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// ----------------------------------------------------------------------------
23014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
24014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssign1Setup() {
25014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  object = {};
26014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  obj1 = {};
27014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  obj2 = {};
28014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  src1 = { id: "6930530530", obj1: obj1, obj2: obj2 };
29014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
30014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
31014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssign1() {
32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Object.assign(object, src1);
33014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
34014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
35014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssign1TearDown() {
36014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  return object.id === src1.id &&
37014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch         object.obj1 === obj1 &&
38014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch         object.obj2 === obj2;
39014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
40014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
41014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// ----------------------------------------------------------------------------
42014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
43014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssign3Setup() {
44014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  object = {};
45014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  obj1 = {};
46014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  obj2 = {};
47014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  src1 = { id: "6930530530" };
48014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  src2 = { obj1: obj1 };
49014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  src3 = { obj2: obj2 };
50014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
51014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
52014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssign3() {
53014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Object.assign(object, src1, src2, src3);
54014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
55014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
56014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssign3TearDown() {
57014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  return object.id === src1.id &&
58014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch         object.obj1 === src2 &&
59014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch         object.obj2 === src3;
60014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
61014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
62014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// ----------------------------------------------------------------------------
63014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
64014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssignNull3Setup() {
65014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  object = {};
66014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  obj1 = {};
67014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  obj2 = {};
68014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  src1 = { id: "6930530530" };
69014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  src2 = null;
70014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  src3 = { obj1: obj1, obj2: obj2 };
71014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
72014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
73014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssignNull3() {
74014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  Object.assign(object, src1, src2, src3);
75014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
76014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
77014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction BasicAssignNull3TearDown() {
78014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  return object.id === src1.id &&
79014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch         object.obj1 === src2 &&
80014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch         object.obj2 === src3;
81014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch}
82