inline-arguments-new-spread-optimization.js (777B)
1 // |jit-test| --fast-warmup 2 3 4 function foo(...args) { 5 with ({}) {} 6 return {result: args.length}; 7 } 8 9 function inner() { 10 // Single argument spread calls with |arguments| can be optimised. 11 return new foo(...arguments); 12 } 13 14 function outer0() { 15 trialInline(); 16 return inner(); 17 } 18 19 function outer1() { 20 trialInline(); 21 return inner(1); 22 } 23 24 function outer2() { 25 trialInline(); 26 return inner(1, 2); 27 } 28 29 function outer3() { 30 trialInline(); 31 return inner(1,2,3) 32 } 33 34 function outer4() { 35 trialInline(); 36 return inner(1,2,3,4) 37 } 38 39 with ({}) {} 40 41 for (var i = 0; i < 50; i++) { 42 assertEq(outer0().result, 0); 43 assertEq(outer1().result, 1); 44 assertEq(outer2().result, 2); 45 assertEq(outer3().result, 3); 46 assertEq(outer4().result, 4); 47 }