@@ -105,63 +105,6 @@ EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
105105 return $getMaxListeners ( this ) ;
106106} ;
107107
108- // These standalone emit* functions are used to optimize calling of event
109- // handlers for fast cases because emit() itself often has a variable number of
110- // arguments and can be deoptimized because of that. These functions always have
111- // the same number of arguments and thus do not get deoptimized, so the code
112- // inside them can execute faster.
113- function emitNone ( handler , isFn , self ) {
114- if ( isFn )
115- handler . call ( self ) ;
116- else {
117- var len = handler . length ;
118- var listeners = arrayClone ( handler , len ) ;
119- for ( var i = 0 ; i < len ; ++ i )
120- listeners [ i ] . call ( self ) ;
121- }
122- }
123- function emitOne ( handler , isFn , self , arg1 ) {
124- if ( isFn )
125- handler . call ( self , arg1 ) ;
126- else {
127- var len = handler . length ;
128- var listeners = arrayClone ( handler , len ) ;
129- for ( var i = 0 ; i < len ; ++ i )
130- listeners [ i ] . call ( self , arg1 ) ;
131- }
132- }
133- function emitTwo ( handler , isFn , self , arg1 , arg2 ) {
134- if ( isFn )
135- handler . call ( self , arg1 , arg2 ) ;
136- else {
137- var len = handler . length ;
138- var listeners = arrayClone ( handler , len ) ;
139- for ( var i = 0 ; i < len ; ++ i )
140- listeners [ i ] . call ( self , arg1 , arg2 ) ;
141- }
142- }
143- function emitThree ( handler , isFn , self , arg1 , arg2 , arg3 ) {
144- if ( isFn )
145- handler . call ( self , arg1 , arg2 , arg3 ) ;
146- else {
147- var len = handler . length ;
148- var listeners = arrayClone ( handler , len ) ;
149- for ( var i = 0 ; i < len ; ++ i )
150- listeners [ i ] . call ( self , arg1 , arg2 , arg3 ) ;
151- }
152- }
153-
154- function emitMany ( handler , isFn , self , args ) {
155- if ( isFn )
156- handler . apply ( self , args ) ;
157- else {
158- var len = handler . length ;
159- var listeners = arrayClone ( handler , len ) ;
160- for ( var i = 0 ; i < len ; ++ i )
161- listeners [ i ] . apply ( self , args ) ;
162- }
163- }
164-
165108EventEmitter . prototype . emit = function emit ( type , ...args ) {
166109 let doError = ( type === 'error' ) ;
167110
@@ -212,22 +155,13 @@ EventEmitter.prototype.emit = function emit(type, ...args) {
212155 needDomainExit = true ;
213156 }
214157
215- const isFn = typeof handler === 'function' ;
216- switch ( args . length ) {
217- case 0 :
218- emitNone ( handler , isFn , this ) ;
219- break ;
220- case 1 :
221- emitOne ( handler , isFn , this , args [ 0 ] ) ;
222- break ;
223- case 2 :
224- emitTwo ( handler , isFn , this , args [ 0 ] , args [ 1 ] ) ;
225- break ;
226- case 3 :
227- emitThree ( handler , isFn , this , args [ 0 ] , args [ 1 ] , args [ 2 ] ) ;
228- break ;
229- default :
230- emitMany ( handler , isFn , this , args ) ;
158+ if ( typeof handler === 'function' ) {
159+ handler . apply ( this , args ) ;
160+ } else {
161+ const len = handler . length ;
162+ const listeners = arrayClone ( handler , len ) ;
163+ for ( var i = 0 ; i < len ; ++ i )
164+ listeners [ i ] . apply ( this , args ) ;
231165 }
232166
233167 if ( needDomainExit )
@@ -313,23 +247,11 @@ EventEmitter.prototype.prependListener =
313247 return _addListener ( this , type , listener , true ) ;
314248 } ;
315249
316- function onceWrapper ( ) {
250+ function onceWrapper ( ... args ) {
317251 if ( ! this . fired ) {
318252 this . target . removeListener ( this . type , this . wrapFn ) ;
319253 this . fired = true ;
320- switch ( arguments . length ) {
321- case 0 :
322- return this . listener . call ( this . target ) ;
323- case 1 :
324- return this . listener . call ( this . target , arguments [ 0 ] ) ;
325- case 2 :
326- return this . listener . call ( this . target , arguments [ 0 ] , arguments [ 1 ] ) ;
327- case 3 :
328- return this . listener . call ( this . target , arguments [ 0 ] , arguments [ 1 ] ,
329- arguments [ 2 ] ) ;
330- default :
331- this . listener . apply ( this . target , arguments ) ;
332- }
254+ this . listener . apply ( this . target , args ) ;
333255 }
334256}
335257
0 commit comments