Skip to content

Commit ff59fcd

Browse files
benjamingrdanielleadams
authored andcommitted
events: define abort on prototype
PR-URL: #35931 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]> Reviewed-By: Daijiro Wachi <[email protected]> Reviewed-By: Rich Trott <[email protected]>
1 parent ab0eb4f commit ff59fcd

File tree

3 files changed

+10
-14
lines changed

3 files changed

+10
-14
lines changed

lib/internal/abort_controller.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ ObjectDefineProperties(AbortSignal.prototype, {
4848
aborted: { enumerable: true }
4949
});
5050

51+
defineEventHandler(AbortSignal.prototype, 'abort');
52+
5153
function abortSignal(signal) {
5254
if (signal[kAborted]) return;
5355
signal[kAborted] = true;
@@ -65,7 +67,6 @@ class AbortController {
6567
constructor() {
6668
this[kSignal] = new AbortSignal();
6769
emitExperimentalWarning('AbortController');
68-
defineEventHandler(this[kSignal], 'abort');
6970
}
7071

7172
get signal() { return this[kSignal]; }

lib/internal/event_target.js

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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');
3635
const kEvents = Symbol('kEvents');
3736
const kStop = Symbol('kStop');
3837
const kTarget = Symbol('kTarget');
38+
const kHandlers = Symbol('khandlers');
3939

4040
const kHybridDispatch = SymbolFor('nodejs.internal.kHybridDispatch');
4141
const kCreateEvent = Symbol('kCreateEvent');
@@ -219,7 +219,7 @@ class Listener {
219219
}
220220

221221
function initEventTarget(self) {
222-
self[kEvents] = new Map();
222+
self[kEvents] = new SafeMap();
223223
}
224224

225225
class 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-
584581
function 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

lib/internal/worker/io.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,6 @@ ObjectDefineProperty(
146146
// This is called from inside the `MessagePort` constructor.
147147
function oninit() {
148148
initNodeEventTarget(this);
149-
defineEventHandler(this, 'message');
150-
defineEventHandler(this, 'messageerror');
151149
setupPortReferencing(this, this, 'message');
152150
}
153151

0 commit comments

Comments
 (0)