summaryrefslogtreecommitdiffstats
path: root/third_party/webkit/PerformanceTests/six-speed
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/webkit/PerformanceTests/six-speed')
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/VERSION1
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/test.js85
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es516
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es614
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es514
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es613
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/arrow.es515
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/arrow.es614
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es511
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es614
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/bindings.es58
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/bindings.es610
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/classes.es511
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/classes.es613
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/defaults.es514
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/defaults.es613
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es514
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es614
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es515
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es613
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es513
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es613
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es513
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es624
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/generator.es526
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/generator.es614
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es521
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es618
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es521
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es618
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-set.es516
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-set.es617
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-string.es512
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/map-string.es612
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es528
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es622
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es515
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es614
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es56
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es66
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/rest.es513
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/rest.es613
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es527
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es611
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es58
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es65
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/spread.es56
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/spread.es66
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/super.es523
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/super.es625
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/template_string.es57
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/template_string.es67
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es511
-rw-r--r--third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es611
54 files changed, 824 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/six-speed/VERSION b/third_party/webkit/PerformanceTests/six-speed/VERSION
new file mode 100644
index 0000000000..49d59571fb
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/VERSION
@@ -0,0 +1 @@
+0.1
diff --git a/third_party/webkit/PerformanceTests/six-speed/test.js b/third_party/webkit/PerformanceTests/six-speed/test.js
new file mode 100644
index 0000000000..e50af51252
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/test.js
@@ -0,0 +1,85 @@
+
+function assertEqual() {}
+function test(fn) {
+ var its = iterations;
+ var start = Date.now();
+ for (var i = 0; i < its; i++) {
+ fn();
+ }
+ timing = Date.now() - start;
+}
+
+var tests = [
+ "template_string",
+ "defaults",
+ "map-set-lookup",
+ "spread",
+ "object-assign",
+ "spread-literal",
+ "map-set",
+ "destructuring-simple",
+ "super",
+ "for-of-object",
+ "rest",
+ "regex-u",
+ "arrow",
+ "bindings-compound",
+ "classes",
+ "template_string_tag",
+ "map-string",
+ "arrow-declare",
+ "spread-generator",
+ "object-literal-ext",
+ "generator",
+ "arrow-args",
+ "for-of-array",
+ "bindings",
+ "destructuring",
+ "map-set-object"
+]
+var iteration_for_test = [
+ 200000000,
+ 100000000,
+ 200000,
+ 1000000,
+ 600000,
+ 1000000,
+ 10000,
+ 20000000,
+ 3000000,
+ 1000000,
+ 500000,
+ 1000000,
+ 20000000,
+ 20000000,
+ 10000000,
+ 2000000,
+ 30000000,
+ 30000000,
+ 1000000,
+ 1000000,
+ 3000000,
+ 20000000,
+ 5000000,
+ 20000000,
+ 20000000,
+ 5000
+]
+
+for (var z = 0; z < tests.length; z++) {
+ var timing = 0;
+ var testname = tests[z];
+ var iterations = iteration_for_test[z];
+
+ // ES5
+ var content = read("tests/"+testname+".es5")
+ var func = new Function(content);
+ func();
+ print(testname+"-es5:", timing);
+
+ // ES6
+ var content = read("tests/"+testname+".es6")
+ var func = new Function(content);
+ func();
+ print(testname+"-es6:", timing);
+}
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es5
new file mode 100644
index 0000000000..252c02a7c8
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es5
@@ -0,0 +1,16 @@
+var obj = {
+ value: 42,
+ fn: function() {
+ var args = arguments;
+ return function() {
+ return args[0];
+ };
+ }
+};
+
+var fn = obj.fn(1);
+assertEqual(fn(), 1);
+
+test(function() {
+ fn();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es6
new file mode 100644
index 0000000000..1a82d36853
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-args.es6
@@ -0,0 +1,14 @@
+
+var obj = {
+ value: 42,
+ fn: function() {
+ return () => arguments[0];
+ }
+};
+
+var fn = obj.fn(1);
+assertEqual(fn(), 1);
+
+test(function() {
+ fn();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es5
new file mode 100644
index 0000000000..735654624e
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es5
@@ -0,0 +1,14 @@
+var obj = {
+ value: 42,
+ fn: function() {
+ return function() {
+ return obj.value;
+ };
+ }
+};
+
+assertEqual(obj.fn()(), 42);
+
+test(function() {
+ obj.fn();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es6
new file mode 100644
index 0000000000..9e37365b28
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/arrow-declare.es6
@@ -0,0 +1,13 @@
+
+var obj = {
+ value: 42,
+ fn: function() {
+ return () => this.value;
+ }
+};
+
+assertEqual(obj.fn()(), 42);
+
+test(function() {
+ obj.fn();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/arrow.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/arrow.es5
new file mode 100644
index 0000000000..f1f7ff9c1d
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/arrow.es5
@@ -0,0 +1,15 @@
+var obj = {
+ value: 42,
+ fn: function() {
+ return function() {
+ return obj.value;
+ };
+ }
+};
+
+var fn = obj.fn();
+assertEqual(fn(), 42);
+
+test(function() {
+ fn();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/arrow.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/arrow.es6
new file mode 100644
index 0000000000..f2c01493db
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/arrow.es6
@@ -0,0 +1,14 @@
+
+var obj = {
+ value: 42,
+ fn: function() {
+ return () => this.value;
+ }
+};
+
+var fn = obj.fn();
+assertEqual(fn(), 42);
+
+test(function() {
+ fn();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es5
new file mode 100644
index 0000000000..789d586cac
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es5
@@ -0,0 +1,11 @@
+var b = 2;
+
+assertEqual(fn(), 3);
+
+function fn() {
+ var a = 1;
+ a += b;
+
+ return a;
+}
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es6
new file mode 100644
index 0000000000..cea478f070
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/bindings-compound.es6
@@ -0,0 +1,14 @@
+"use strict";
+
+const b = 2;
+
+function fn() {
+
+ let a = 1;
+ a += b;
+
+ return a;
+}
+
+assertEqual(fn(), 3);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/bindings.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/bindings.es5
new file mode 100644
index 0000000000..4d4df8362d
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/bindings.es5
@@ -0,0 +1,8 @@
+var a = 1,
+ b = 2;
+
+assertEqual(a+b, 3);
+
+test(function() {
+ return a + b;
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/bindings.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/bindings.es6
new file mode 100644
index 0000000000..44e34bc8d5
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/bindings.es6
@@ -0,0 +1,10 @@
+"use strict";
+
+const a = 1;
+let b = 2;
+
+assertEqual(a+b, 3);
+
+test(function() {
+ return a + b;
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/classes.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/classes.es5
new file mode 100644
index 0000000000..ae5c7c11fb
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/classes.es5
@@ -0,0 +1,11 @@
+function C() {
+ this.foo = 'bar';
+}
+C.prototype.bar = function() {
+};
+
+assertEqual(new C().foo, 'bar');
+
+test(function() {
+ return new C();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/classes.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/classes.es6
new file mode 100644
index 0000000000..9007b992f7
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/classes.es6
@@ -0,0 +1,13 @@
+class C {
+ constructor() {
+ this.foo = 'bar';
+ }
+ bar() {
+ }
+}
+
+assertEqual(new C().foo, 'bar');
+
+test(function() {
+ return new C();
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/defaults.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/defaults.es5
new file mode 100644
index 0000000000..eec3f0d2e7
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/defaults.es5
@@ -0,0 +1,14 @@
+function fn(arg, other) {
+ arg = arg === undefined ? 1 : arg;
+ other = other === undefined ? 3 : other;
+ return other;
+}
+
+assertEqual(fn(), 3);
+assertEqual(fn(1, 2), 2);
+
+test(function() {
+ fn();
+ fn(2);
+ fn(2, 4);
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/defaults.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/defaults.es6
new file mode 100644
index 0000000000..1df8fdeb01
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/defaults.es6
@@ -0,0 +1,13 @@
+function fn(arg = 1, other = 3) {
+ return other;
+}
+
+
+assertEqual(fn(), 3);
+assertEqual(fn(1, 2), 2);
+
+test(function() {
+ fn();
+ fn(2);
+ fn(2, 4);
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es5
new file mode 100644
index 0000000000..1bd89387cf
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es5
@@ -0,0 +1,14 @@
+var data = {
+ a: 'foo',
+ b: {c: 'd'},
+ arr: [1, 2, 3]
+};
+
+function fn() {
+ var a = data.a,
+ b = data.b;
+ return a;
+}
+
+assertEqual(fn(), 'foo');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es6
new file mode 100644
index 0000000000..60fd3c010e
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring-simple.es6
@@ -0,0 +1,14 @@
+var data = {
+ a: 'foo',
+ b: {c: 'd'},
+ arr: [1, 2, 3]
+};
+
+function fn() {
+ var {a, b} = data;
+ return a;
+}
+
+assertEqual(fn(), 'foo');
+
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es5
new file mode 100644
index 0000000000..7be5e3cfc8
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es5
@@ -0,0 +1,15 @@
+var data = {
+ a: 'foo',
+ b: {c: 'd'},
+ arr: [1, 2, 3]
+};
+
+function fn() {
+ var a = data.a,
+ b = data.b.c,
+ c = data.arr[1];
+ return c;
+}
+
+assertEqual(fn(), 2);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es6
new file mode 100644
index 0000000000..50e9b75bb3
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/destructuring.es6
@@ -0,0 +1,13 @@
+var data = {
+ a: 'foo',
+ b: {c: 'd'},
+ arr: [1, 2, 3]
+};
+
+function fn() {
+ var {a, b:{c:b}, arr:[, c]} = data;
+ return c;
+}
+
+assertEqual(fn(), 2);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es5
new file mode 100644
index 0000000000..d27543f84a
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es5
@@ -0,0 +1,13 @@
+var data = [1,2,3];
+
+function fn() {
+ var ret = '';
+ for (var i = 0; i < data.length; i++) {
+ ret += data[i];
+ }
+ return ret;
+}
+
+assertEqual(fn(), '123');
+
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es6
new file mode 100644
index 0000000000..b64378948b
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-array.es6
@@ -0,0 +1,13 @@
+var data = [1,2,3];
+
+function fn() {
+ var ret = '';
+ for (var value of data) {
+ ret += value;
+ }
+ return ret;
+}
+
+assertEqual(fn(), '123');
+
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es5
new file mode 100644
index 0000000000..3dc1da1929
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es5
@@ -0,0 +1,13 @@
+var data = {'a': 'b', 'c': 'd'};
+function fn() {
+ var ret = '';
+ for (var name in data) {
+ if (data.hasOwnProperty(name)) {
+ ret += data[name];
+ }
+ }
+ return ret;
+}
+
+assertEqual(fn(), 'bd');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es6
new file mode 100644
index 0000000000..55b5fb6dd0
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/for-of-object.es6
@@ -0,0 +1,24 @@
+var data = {'a': 'b', 'c': 'd'};
+data[Symbol.iterator] = function() {
+ var array = Object.keys(data),
+ nextIndex = 0;
+
+ return {
+ next: function() {
+ return nextIndex < array.length ?
+ {value: data[array[nextIndex++]], done: false} :
+ {done: true};
+ }
+ };
+};
+
+function fn() {
+ var ret = '';
+ for (var value of data) {
+ ret += value;
+ }
+ return ret;
+}
+
+assertEqual(fn(), 'bd');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/generator.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/generator.es5
new file mode 100644
index 0000000000..d1b441c1da
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/generator.es5
@@ -0,0 +1,26 @@
+function generator() {
+ var i = 0;
+ return {
+ next: function() {
+ i++;
+ if (i >= 3) {
+ return {done: true};
+ } else {
+ return {
+ value: i,
+ done: false
+ };
+ }
+ }
+ };
+}
+
+function fn() {
+ var iterator = generator();
+ iterator.next();
+ iterator.next();
+ return iterator.next().done;
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/generator.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/generator.es6
new file mode 100644
index 0000000000..431fd76f22
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/generator.es6
@@ -0,0 +1,14 @@
+function * generator() {
+ yield 1;
+ yield 2;
+}
+
+function fn() {
+ var iterator = generator();
+ iterator.next();
+ iterator.next();
+ return iterator.next().done;
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es5
new file mode 100644
index 0000000000..e0fa70d97a
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es5
@@ -0,0 +1,21 @@
+var keys = [],
+ values = [],
+ set = [],
+ key = {};
+
+for (var i = 0; i < 500; i++) {
+ keys.push(i);
+ values.push(i);
+ set.push(i);
+}
+
+keys.push(key);
+values.push('bar');
+set.push(key);
+
+function fn() {
+ return set.indexOf(key) >= 0 && keys.indexOf(key) >= 0;
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es6
new file mode 100644
index 0000000000..2fc9c503e2
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-lookup.es6
@@ -0,0 +1,18 @@
+var map = new Map(),
+ set = new Set(),
+ key = {};
+
+for (var i = 0; i < 500; i++) {
+ map.set(i, i);
+ set.add(i);
+}
+
+map.set(key, 'bar');
+set.add(key);
+
+function fn() {
+ return map.has(key) && set.has(key);
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es5
new file mode 100644
index 0000000000..61dfcc5b21
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es5
@@ -0,0 +1,21 @@
+function fn() {
+ var keys = [],
+ values = [],
+ set = [],
+ key = {};
+
+ for (var i = 0; i < 500; i++) {
+ keys.push(i);
+ values.push(i);
+ set.push(i);
+ }
+
+ keys.push(key);
+ values.push('bar');
+ set.push(key);
+
+ return set.indexOf(key) >= 0 && keys.indexOf(key) >= 0;
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es6
new file mode 100644
index 0000000000..8624a0bb27
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-set-object.es6
@@ -0,0 +1,18 @@
+function fn() {
+ var map = new Map(),
+ set = new Set(),
+ key = {};
+
+ for (var i = 0; i < 500; i++) {
+ map.set(i, i);
+ set.add(i);
+ }
+
+ map.set(key, 'bar');
+ set.add(key);
+
+ return map.has(key) && set.has(key);
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-set.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/map-set.es5
new file mode 100644
index 0000000000..b99ec7ad04
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-set.es5
@@ -0,0 +1,16 @@
+function fn() {
+ var map = {},
+ set = [];
+
+ for (var i = 0; i < 250; i++) {
+ map[i] = i;
+ set.push(i);
+ }
+
+ map.foo = 'bar';
+ set.push('bar');
+ return ('foo' in map) && set.indexOf('bar') >= 0;
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-set.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/map-set.es6
new file mode 100644
index 0000000000..583450d1db
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-set.es6
@@ -0,0 +1,17 @@
+function fn() {
+ var map = new Map(),
+ set = new Set();
+
+ for (var i = 0; i < 250; i++) {
+ map.set(i, i);
+ set.add(i);
+ }
+
+ map.set('foo', 'bar');
+ set.add('bar');
+
+ return map.has('foo') && set.has('bar');
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-string.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/map-string.es5
new file mode 100644
index 0000000000..147547e6b4
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-string.es5
@@ -0,0 +1,12 @@
+var map = {};
+
+for (var i = 0; i < 500; i++) {
+ map[i] = i;
+}
+
+function fn() {
+ return map['499'] === 499;
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/map-string.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/map-string.es6
new file mode 100644
index 0000000000..43b7811025
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/map-string.es6
@@ -0,0 +1,12 @@
+var map = new Map();
+
+for (var i = 0; i < 500; i++) {
+ map.set(i + '', i);
+}
+
+function fn() {
+ return map.get('499') === 499;
+}
+
+assertEqual(fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es5
new file mode 100644
index 0000000000..33d1571d27
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es5
@@ -0,0 +1,28 @@
+var obj = {
+ a: 1,
+ b: true,
+ c: function () {},
+ d: null,
+ e: 'e'
+};
+
+var fn = function (src) {
+ var o = {};
+ var keys = Object.keys(src);
+ for (var i = 0; i < keys.length; ++i) {
+ var key = keys[i];
+ o[key] = src[key];
+ }
+ return o;
+};
+
+var r = fn(obj);
+assertEqual(r.a, obj.a);
+assertEqual(r.b, obj.b);
+assertEqual(r.c, obj.c);
+assertEqual(r.d, obj.d);
+assertEqual(r.e, obj.e);
+
+test(function () {
+ fn(obj);
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es6
new file mode 100644
index 0000000000..bdce0b20fc
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/object-assign.es6
@@ -0,0 +1,22 @@
+const obj = {
+ a: 1,
+ b: true,
+ c: function () {},
+ d: null,
+ e: 'e'
+};
+
+const fn = function (src) {
+ return Object.assign({}, src);
+};
+
+const r = fn(obj);
+assertEqual(r.a, obj.a);
+assertEqual(r.b, obj.b);
+assertEqual(r.c, obj.c);
+assertEqual(r.d, obj.d);
+assertEqual(r.e, obj.e);
+
+test(function () {
+ fn(obj);
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es5
new file mode 100644
index 0000000000..5ea31687db
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es5
@@ -0,0 +1,15 @@
+function fn() {
+ var name = 'foo';
+ var ret = {
+ 'bizz buzz': function() {
+ return 1;
+ },
+ name: name
+ };
+ ret[name] = 'bar';
+ ret[name + 'foo'] = 'foo';
+ return ret;
+}
+
+assertEqual(fn().foofoo, 'foo');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es6
new file mode 100644
index 0000000000..8b2052f990
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/object-literal-ext.es6
@@ -0,0 +1,14 @@
+function fn() {
+ var name = 'foo';
+ return {
+ 'bizz buzz'() {
+ return 1;
+ },
+ name,
+ [name]: 'bar',
+ [name + 'foo']: 'foo'
+ };
+}
+
+assertEqual(fn().foofoo, 'foo');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es5
new file mode 100644
index 0000000000..b91eadd1c5
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es5
@@ -0,0 +1,6 @@
+function fn() {
+ return '𠮷'.match(/^.$/);
+}
+
+// Not asserting as this isn't quite an accurate test under es5
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es6
new file mode 100644
index 0000000000..828cbbcac7
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/regex-u.es6
@@ -0,0 +1,6 @@
+function fn() {
+ return '𠮷'.match(/^.$/u);
+}
+
+assertEqual(!!fn(), true);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/rest.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/rest.es5
new file mode 100644
index 0000000000..6c9b56a09a
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/rest.es5
@@ -0,0 +1,13 @@
+function fn() {
+ return arguments[1];
+}
+
+assertEqual(fn(), undefined);
+assertEqual(fn(2), undefined);
+assertEqual(fn(2, 4), 4);
+
+test(function() {
+ fn();
+ fn(2);
+ fn(2, 4);
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/rest.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/rest.es6
new file mode 100644
index 0000000000..41e4d91611
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/rest.es6
@@ -0,0 +1,13 @@
+function fn(foo, ...args) {
+ return args[0];
+}
+
+assertEqual(fn(), undefined);
+assertEqual(fn(2), undefined);
+assertEqual(fn(2, 4), 4);
+
+test(function() {
+ fn();
+ fn(2);
+ fn(2, 4);
+});
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es5
new file mode 100644
index 0000000000..2a0305b349
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es5
@@ -0,0 +1,27 @@
+function generator() {
+ var i = 0;
+ return {
+ next: function() {
+ i++;
+ if (i >= 4) {
+ return {done: true};
+ } else {
+ return {
+ value: i,
+ done: false
+ };
+ }
+ }
+ };
+}
+
+function fn() {
+ var iterator = generator();
+ var args = [iterator.next().value, iterator.next().value, iterator.next().value];
+ iterator.next();
+
+ return Math.max.apply(Math, args);
+}
+
+assertEqual(fn(), 3);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es6
new file mode 100644
index 0000000000..a7831295a9
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/spread-generator.es6
@@ -0,0 +1,11 @@
+function *generate() {
+ yield 1;
+ yield 2;
+ yield 3;
+}
+
+function fn() {
+ return Math.max(... generate());
+}
+assertEqual(fn(), 3);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es5
new file mode 100644
index 0000000000..d76d88edf9
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es5
@@ -0,0 +1,8 @@
+function fn() {
+ var ret = [1];
+ ret.push(1, 2, 3);
+ return ret;
+}
+
+assertEqual(fn()[3], 3);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es6
new file mode 100644
index 0000000000..b180fb5587
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/spread-literal.es6
@@ -0,0 +1,5 @@
+function fn() {
+ return [1, ... [1, 2, 3]];
+}
+assertEqual(fn()[3], 3);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/spread.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/spread.es5
new file mode 100644
index 0000000000..bd13f44c6f
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/spread.es5
@@ -0,0 +1,6 @@
+function fn() {
+ return Math.max.apply(Math, [1,2,3]);
+}
+
+assertEqual(fn(), 3);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/spread.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/spread.es6
new file mode 100644
index 0000000000..95ee937d24
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/spread.es6
@@ -0,0 +1,6 @@
+function fn() {
+ return Math.max(...[1,2,3]);
+}
+
+assertEqual(fn(), 3);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/super.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/super.es5
new file mode 100644
index 0000000000..8edc527127
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/super.es5
@@ -0,0 +1,23 @@
+function C() {
+ this.foo = 'bar';
+}
+C.prototype.bar = function() {
+ return 41;
+};
+
+
+function D() {
+ C.call(this);
+ this.baz = 'bat';
+}
+D.prototype = Object.create(C.prototype);
+D.prototype.bar = function() {
+ return C.prototype.bar.call(this) + 1;
+};
+function fn() {
+ var d = new D();
+ return d.bar();
+}
+
+assertEqual(fn(), 42);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/super.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/super.es6
new file mode 100644
index 0000000000..29386be524
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/super.es6
@@ -0,0 +1,25 @@
+
+class C {
+ constructor() {
+ this.foo = 'bar';
+ }
+ bar() {
+ return 41;
+ }
+}
+class D extends C {
+ constructor() {
+ super();
+ this.baz = 'bat';
+ }
+ bar() {
+ return super.bar() + 1;
+ }
+}
+function fn() {
+ var d = new D();
+ return d.bar();
+}
+
+assertEqual(fn(), 42);
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/template_string.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/template_string.es5
new file mode 100644
index 0000000000..6296ad3625
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/template_string.es5
@@ -0,0 +1,7 @@
+var data = [1,2,3];
+function fn() {
+ return data[0] + ' ' + (data[1] + data[2]);
+}
+
+assertEqual(fn(), '1 5');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/template_string.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/template_string.es6
new file mode 100644
index 0000000000..3e891237b9
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/template_string.es6
@@ -0,0 +1,7 @@
+var data = [1,2,3];
+function fn() {
+ return `${data[0]} ${data[1] + data[2]}`;
+}
+
+assertEqual(fn(), '1 5');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es5 b/third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es5
new file mode 100644
index 0000000000..a0e5db0507
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es5
@@ -0,0 +1,11 @@
+var data = [1, 2, 3];
+function tag(strings, value1, value2) {
+ return strings[0] + value1 + strings[1] + value2 + strings[2];
+}
+
+function fn() {
+ return tag(['', ' ', ''], data[0], data[1] + data[2]);
+}
+
+assertEqual(fn(), '1 5');
+test(fn);
diff --git a/third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es6 b/third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es6
new file mode 100644
index 0000000000..dec6501bce
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/six-speed/tests/template_string_tag.es6
@@ -0,0 +1,11 @@
+var data = [1, 2, 3];
+function tag(strings, value1, value2) {
+ return strings[0] + value1 + strings[1] + value2 + strings[2];
+}
+
+function fn() {
+ return tag`${data[0]} ${data[1] + data[2]}`;
+}
+
+assertEqual(fn(), '1 5');
+test(fn);