summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/arguments-deopt.js
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-06-06 10:28:14 +0200
committerMichaël Zasso <targos@protonmail.com>2017-06-07 10:33:31 +0200
commit3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch)
tree9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/test/mjsunit/arguments-deopt.js
parent91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff)
downloadnode-new-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.gz
deps: update V8 to 5.9.211.32
PR-URL: https://github.com/nodejs/node/pull/13263 Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/test/mjsunit/arguments-deopt.js')
-rw-r--r--deps/v8/test/mjsunit/arguments-deopt.js153
1 files changed, 123 insertions, 30 deletions
diff --git a/deps/v8/test/mjsunit/arguments-deopt.js b/deps/v8/test/mjsunit/arguments-deopt.js
index 0cf3c0455c..edc6aa44c5 100644
--- a/deps/v8/test/mjsunit/arguments-deopt.js
+++ b/deps/v8/test/mjsunit/arguments-deopt.js
@@ -11,18 +11,18 @@
return x + y;
}
- function test() {
+ function test1() {
%DeoptimizeNow();
return f.apply(null, arguments);
}
- assertEquals(test(1, 2), 3);
- assertEquals(test(1, 2, 3), 3);
+ assertEquals(test1(1, 2), 3);
+ assertEquals(test1(1, 2, 3), 3);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2), 3);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2, 3), 3);
+ %OptimizeFunctionOnNextCall(test1);
+ assertEquals(test1(1, 2), 3);
+ %OptimizeFunctionOnNextCall(test1);
+ assertEquals(test1(1, 2, 3), 3);
})();
(function MaterializeSloppyArguments() {
@@ -30,18 +30,18 @@
return x + y;
}
- function test() {
+ function test2() {
%DeoptimizeNow();
return f.apply(null, arguments);
}
- assertEquals(test(1, 2), 3);
- assertEquals(test(1, 2, 3), 3);
+ assertEquals(test2(1, 2), 3);
+ assertEquals(test2(1, 2, 3), 3);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2), 3);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2, 3), 3);
+ %OptimizeFunctionOnNextCall(test2);
+ assertEquals(test2(1, 2), 3);
+ %OptimizeFunctionOnNextCall(test2);
+ assertEquals(test2(1, 2, 3), 3);
})();
(function MaterializeStrictOverwrittenArguments() {
@@ -51,19 +51,19 @@
return x + y;
}
- function test(a, b) {
+ function test3(a, b) {
a = 4;
%DeoptimizeNow();
return f.apply(null, arguments);
}
- assertEquals(test(1, 2), 3);
- assertEquals(test(1, 2, 3), 3);
+ assertEquals(test3(1, 2), 3);
+ assertEquals(test3(1, 2, 3), 3);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2), 3);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2, 3), 3);
+ %OptimizeFunctionOnNextCall(test3);
+ assertEquals(test3(11, 12), 23);
+ %OptimizeFunctionOnNextCall(test3);
+ assertEquals(test3(11, 12, 13), 23);
})();
(function MaterializeSloppyOverwrittenArguments() {
@@ -71,20 +71,113 @@
return x + y;
}
- function test(a, b) {
+ function test4(a, b) {
a = 4;
%DeoptimizeNow();
return f.apply(null, arguments);
}
- test(1, 2);
- test(3, 4, 5);
+ test4(1, 2);
+ test4(3, 4, 5);
- assertEquals(test(1, 2), 6);
- assertEquals(test(1, 2, 3), 6);
+ assertEquals(test4(1, 2), 6);
+ assertEquals(test4(1, 2, 3), 6);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2), 6);
- %OptimizeFunctionOnNextCall(test);
- assertEquals(test(1, 2, 3), 6);
+ %OptimizeFunctionOnNextCall(test4);
+ assertEquals(test4(1, 2), 6);
+ %OptimizeFunctionOnNextCall(test4);
+ assertEquals(test4(1, 2, 3), 6);
+})();
+
+(function ArgumentsAccessStrict () {
+ "use strict"
+ function sum1(a,b,c) {
+ var sum = 0;
+ var rest = arguments;
+ for (var i = 0; i < rest.length; ++i) {
+ var j = i;
+ if (rest.length % 15 == 0 && i == 10) j += 10000;
+ sum += rest[j] || i+1;
+ }
+ return sum;
+ };
+
+ var args = []
+ for (var i = 1; i < 30; ++i) {
+ args.push(i);
+ if (i%10 == 0) %OptimizeFunctionOnNextCall(sum1);
+ assertEquals(i*(i+1)/2, sum1(...args));
+ }
+})();
+
+(function ArgumentsAccessSloppy () {
+ function sum2(a,b,c) {
+ var sum = 0;
+ for (var i = 0; i < arguments.length; ++i) {
+ var j = i;
+ if (arguments.length % 15 == 0 && i == 10) j += 10000;
+ sum += arguments[j] || i+1;
+ }
+ return sum;
+ };
+
+ var args = []
+ for (var i = 1; i < 30; ++i) {
+ args.push(i);
+ if (i%10 == 0) %OptimizeFunctionOnNextCall(sum2);
+ assertEquals(i*(i+1)/2, sum2(...args));
+ }
+})();
+
+(function RestAccess0 () {
+ function sum3(...rest) {
+ var sum = 0;
+ for (var i = 0; i < rest.length; ++i) {
+ var j = i;
+ if (rest.length % 15 == 0 && i == 10) j += 10000;
+ sum += rest[j] || i+1;
+ }
+ return sum;
+ };
+
+ var args = []
+ for (var i = 1; i < 30; ++i) {
+ args.push(i);
+ if (i%10 == 0) %OptimizeFunctionOnNextCall(sum3);
+ assertEquals(i*(i+1)/2, sum3(...args));
+ }
+})();
+
+(function RestAccess1 () {
+ function sum4(a,...rest) {
+ var sum = 0;
+ for (var i = 0; i < rest.length; ++i) {
+ var j = i;
+ if (rest.length % 15 == 0 && i == 10) j += 10000;
+ sum += rest[j] || i+2;
+ }
+ return sum;
+ };
+
+ var args = []
+ for (var i = 1; i < 30; ++i) {
+ args.push(i);
+ if (i%10 == 0) %OptimizeFunctionOnNextCall(sum4);
+ assertEquals(i*(i+1)/2-1, sum4(...args));
+ }
+})();
+
+
+(function ReadArguments () {
+ function read() {
+ if (arguments.length % 10 == 5) %DeoptimizeNow();
+ return arguments[arguments.length-1];
+ };
+
+ var args = []
+ for (var i = 1; i < 30; ++i) {
+ args.push(i);
+ if (i%10 == 0) %OptimizeFunctionOnNextCall(read);
+ assertEquals(i, read(...args));
+ }
})();