| 
22 | 22 | 'use strict';  | 
23 | 23 | 
 
  | 
24 | 24 | const {  | 
25 |  | -  ArrayPrototypePush,  | 
26 | 25 |   MathTrunc,  | 
27 | 26 |   ObjectDefineProperties,  | 
28 | 27 |   ObjectDefineProperty,  | 
@@ -131,38 +130,13 @@ function enroll(item, msecs) {  | 
131 | 130 |  * after `after` milliseconds.  | 
132 | 131 |  * @param {Function} callback  | 
133 | 132 |  * @param {number} [after]  | 
134 |  | - * @param {any} [arg1]  | 
135 |  | - * @param {any} [arg2]  | 
136 |  | - * @param {any} [arg3]  | 
 | 133 | + * @param {...any} [args]  | 
137 | 134 |  * @returns {Timeout}  | 
138 | 135 |  */  | 
139 |  | -function setTimeout(callback, after, arg1, arg2, arg3) {  | 
 | 136 | +function setTimeout(callback, after, ...args) {  | 
140 | 137 |   validateFunction(callback, 'callback');  | 
141 |  | - | 
142 |  | -  let i, args;  | 
143 |  | -  switch (arguments.length) {  | 
144 |  | -    // fast cases  | 
145 |  | -    case 1:  | 
146 |  | -    case 2:  | 
147 |  | -      break;  | 
148 |  | -    case 3:  | 
149 |  | -      args = [arg1];  | 
150 |  | -      break;  | 
151 |  | -    case 4:  | 
152 |  | -      args = [arg1, arg2];  | 
153 |  | -      break;  | 
154 |  | -    default:  | 
155 |  | -      args = [arg1, arg2, arg3];  | 
156 |  | -      for (i = 5; i < arguments.length; i++) {  | 
157 |  | -        // Extend array dynamically, makes .apply run much faster in v6.0.0  | 
158 |  | -        ArrayPrototypePush(args, arguments[i]);  | 
159 |  | -      }  | 
160 |  | -      break;  | 
161 |  | -  }  | 
162 |  | - | 
163 |  | -  const timeout = new Timeout(callback, after, args, false, true);  | 
 | 138 | +  const timeout = new Timeout(callback, after, args.length ? args : undefined, false, true);  | 
164 | 139 |   insert(timeout, timeout._idleTimeout);  | 
165 |  | - | 
166 | 140 |   return timeout;  | 
167 | 141 | }  | 
168 | 142 | 
 
  | 
@@ -200,38 +174,13 @@ function clearTimeout(timer) {  | 
200 | 174 |  * every `repeat` milliseconds.  | 
201 | 175 |  * @param {Function} callback  | 
202 | 176 |  * @param {number} [repeat]  | 
203 |  | - * @param {any} [arg1]  | 
204 |  | - * @param {any} [arg2]  | 
205 |  | - * @param {any} [arg3]  | 
 | 177 | + * @param {...any} [args]  | 
206 | 178 |  * @returns {Timeout}  | 
207 | 179 |  */  | 
208 |  | -function setInterval(callback, repeat, arg1, arg2, arg3) {  | 
 | 180 | +function setInterval(callback, repeat, ...args) {  | 
209 | 181 |   validateFunction(callback, 'callback');  | 
210 |  | - | 
211 |  | -  let i, args;  | 
212 |  | -  switch (arguments.length) {  | 
213 |  | -    // fast cases  | 
214 |  | -    case 1:  | 
215 |  | -    case 2:  | 
216 |  | -      break;  | 
217 |  | -    case 3:  | 
218 |  | -      args = [arg1];  | 
219 |  | -      break;  | 
220 |  | -    case 4:  | 
221 |  | -      args = [arg1, arg2];  | 
222 |  | -      break;  | 
223 |  | -    default:  | 
224 |  | -      args = [arg1, arg2, arg3];  | 
225 |  | -      for (i = 5; i < arguments.length; i++) {  | 
226 |  | -        // Extend array dynamically, makes .apply run much faster in v6.0.0  | 
227 |  | -        ArrayPrototypePush(args, arguments[i]);  | 
228 |  | -      }  | 
229 |  | -      break;  | 
230 |  | -  }  | 
231 |  | - | 
232 |  | -  const timeout = new Timeout(callback, repeat, args, true, true);  | 
 | 182 | +  const timeout = new Timeout(callback, repeat, args.length ? args : undefined, true, true);  | 
233 | 183 |   insert(timeout, timeout._idleTimeout);  | 
234 |  | - | 
235 | 184 |   return timeout;  | 
236 | 185 | }  | 
237 | 186 | 
 
  | 
@@ -273,35 +222,12 @@ Timeout.prototype[SymbolToPrimitive] = function() {  | 
273 | 222 |  * Schedules the immediate execution of `callback`  | 
274 | 223 |  * after I/O events' callbacks.  | 
275 | 224 |  * @param {Function} callback  | 
276 |  | - * @param {any} [arg1]  | 
277 |  | - * @param {any} [arg2]  | 
278 |  | - * @param {any} [arg3]  | 
 | 225 | + * @param {...any} [args]  | 
279 | 226 |  * @returns {Immediate}  | 
280 | 227 |  */  | 
281 |  | -function setImmediate(callback, arg1, arg2, arg3) {  | 
 | 228 | +function setImmediate(callback, ...args) {  | 
282 | 229 |   validateFunction(callback, 'callback');  | 
283 |  | - | 
284 |  | -  let i, args;  | 
285 |  | -  switch (arguments.length) {  | 
286 |  | -    // fast cases  | 
287 |  | -    case 1:  | 
288 |  | -      break;  | 
289 |  | -    case 2:  | 
290 |  | -      args = [arg1];  | 
291 |  | -      break;  | 
292 |  | -    case 3:  | 
293 |  | -      args = [arg1, arg2];  | 
294 |  | -      break;  | 
295 |  | -    default:  | 
296 |  | -      args = [arg1, arg2, arg3];  | 
297 |  | -      for (i = 4; i < arguments.length; i++) {  | 
298 |  | -        // Extend array dynamically, makes .apply run much faster in v6.0.0  | 
299 |  | -        ArrayPrototypePush(args, arguments[i]);  | 
300 |  | -      }  | 
301 |  | -      break;  | 
302 |  | -  }  | 
303 |  | - | 
304 |  | -  return new Immediate(callback, args);  | 
 | 230 | +  return new Immediate(callback, args.length ? args : undefined);  | 
305 | 231 | }  | 
306 | 232 | 
 
  | 
307 | 233 | ObjectDefineProperty(setImmediate, customPromisify, {  | 
 | 
0 commit comments