diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-06-06 10:28:14 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-06-07 10:33:31 +0200 |
commit | 3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch) | |
tree | 9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/test/mjsunit/arguments-deopt.js | |
parent | 91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff) | |
download | node-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.js | 153 |
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)); + } })(); |