@@ -4,17 +4,16 @@ const {
44 ArrayFrom,
55 Boolean,
66 Error,
7- Map,
87 NumberIsInteger,
98 ObjectAssign,
109 ObjectDefineProperties,
1110 ObjectDefineProperty,
1211 ObjectGetOwnPropertyDescriptor,
12+ SafeMap,
1313 String,
1414 Symbol,
1515 SymbolFor,
1616 SymbolToStringTag,
17- SafeWeakMap,
1817 SafeWeakSet,
1918} = primordials ;
2019
@@ -36,6 +35,7 @@ const kIsEventTarget = SymbolFor('nodejs.event_target');
3635const kEvents = Symbol ( 'kEvents' ) ;
3736const kStop = Symbol ( 'kStop' ) ;
3837const kTarget = Symbol ( 'kTarget' ) ;
38+ const kHandlers = Symbol ( 'khandlers' ) ;
3939
4040const kHybridDispatch = SymbolFor ( 'nodejs.internal.kHybridDispatch' ) ;
4141const kCreateEvent = Symbol ( 'kCreateEvent' ) ;
@@ -219,7 +219,7 @@ class Listener {
219219}
220220
221221function initEventTarget ( self ) {
222- self [ kEvents ] = new Map ( ) ;
222+ self [ kEvents ] = new SafeMap ( ) ;
223223}
224224
225225class EventTarget {
@@ -578,27 +578,24 @@ function emitUnhandledRejectionOrErr(that, err, event) {
578578 process . emit ( 'error' , err , event ) ;
579579}
580580
581- // A map of emitter -> map of name -> handler
582- const eventHandlerValueMap = new SafeWeakMap ( ) ;
583-
584581function defineEventHandler ( emitter , name ) {
585582 // 8.1.5.1 Event handlers - basically `on[eventName]` attributes
586583 ObjectDefineProperty ( emitter , `on${ name } ` , {
587584 get ( ) {
588- return eventHandlerValueMap . get ( this ) ?. get ( name ) ;
585+ return this [ kHandlers ] ?. get ( name ) ;
589586 } ,
590587 set ( value ) {
591- const oldValue = eventHandlerValueMap . get ( this ) ?. get ( name ) ;
588+ const oldValue = this [ kHandlers ] ?. get ( name ) ;
592589 if ( oldValue ) {
593590 this . removeEventListener ( name , oldValue ) ;
594591 }
595592 if ( typeof value === 'function' ) {
596593 this . addEventListener ( name , value ) ;
597594 }
598- if ( ! eventHandlerValueMap . has ( this ) ) {
599- eventHandlerValueMap . set ( this , new Map ( ) ) ;
595+ if ( ! this [ kHandlers ] ) {
596+ this [ kHandlers ] = new SafeMap ( ) ;
600597 }
601- eventHandlerValueMap . get ( this ) . set ( name , value ) ;
598+ this [ kHandlers ] . set ( name , value ) ;
602599 } ,
603600 configurable : true ,
604601 enumerable : true
0 commit comments