2222'use strict' ;
2323
2424const {
25+ Array,
2526 ArrayPrototypePush,
2627 MathTrunc,
2728 ObjectDefineProperties,
@@ -121,7 +122,7 @@ function unenroll(item) {
121122function setTimeout ( callback , after , arg1 , arg2 , arg3 ) {
122123 validateFunction ( callback , 'callback' ) ;
123124
124- let i , args ;
125+ let args ;
125126 switch ( arguments . length ) {
126127 // fast cases
127128 case 1 :
@@ -134,10 +135,9 @@ function setTimeout(callback, after, arg1, arg2, arg3) {
134135 args = [ arg1 , arg2 ] ;
135136 break ;
136137 default :
137- args = [ arg1 , arg2 , arg3 ] ;
138- for ( i = 5 ; i < arguments . length ; i ++ ) {
139- // Extend array dynamically, makes .apply run much faster in v6.0.0
140- ArrayPrototypePush ( args , arguments [ i ] ) ;
138+ args = new Array ( arguments . length - 2 ) ;
139+ for ( let i = 2 ; i < arguments . length ; i ++ ) {
140+ args [ i - 2 ] = arguments [ i ] ;
141141 }
142142 break ;
143143 }
@@ -190,7 +190,7 @@ function clearTimeout(timer) {
190190function setInterval ( callback , repeat , arg1 , arg2 , arg3 ) {
191191 validateFunction ( callback , 'callback' ) ;
192192
193- let i , args ;
193+ let args ;
194194 switch ( arguments . length ) {
195195 // fast cases
196196 case 1 :
@@ -203,10 +203,9 @@ function setInterval(callback, repeat, arg1, arg2, arg3) {
203203 args = [ arg1 , arg2 ] ;
204204 break ;
205205 default :
206- args = [ arg1 , arg2 , arg3 ] ;
207- for ( i = 5 ; i < arguments . length ; i ++ ) {
208- // Extend array dynamically, makes .apply run much faster in v6.0.0
209- ArrayPrototypePush ( args , arguments [ i ] ) ;
206+ args = new Array ( arguments . length - 2 ) ;
207+ for ( let i = 2 ; i < arguments . length ; i ++ ) {
208+ args [ i - 2 ] = arguments [ i ] ;
210209 }
211210 break ;
212211 }
@@ -263,7 +262,7 @@ Timeout.prototype[SymbolToPrimitive] = function() {
263262function setImmediate ( callback , arg1 , arg2 , arg3 ) {
264263 validateFunction ( callback , 'callback' ) ;
265264
266- let i , args ;
265+ let args ;
267266 switch ( arguments . length ) {
268267 // fast cases
269268 case 1 :
@@ -275,10 +274,9 @@ function setImmediate(callback, arg1, arg2, arg3) {
275274 args = [ arg1 , arg2 ] ;
276275 break ;
277276 default :
278- args = [ arg1 , arg2 , arg3 ] ;
279- for ( i = 4 ; i < arguments . length ; i ++ ) {
280- // Extend array dynamically, makes .apply run much faster in v6.0.0
281- ArrayPrototypePush ( args , arguments [ i ] ) ;
277+ args = new Array ( arguments . length - 1 ) ;
278+ for ( let i = 1 ; i < arguments . length ; i ++ ) {
279+ args [ i - 1 ] = arguments [ i ] ;
282280 }
283281 break ;
284282 }
0 commit comments