Skip to content

Commit 3b169f1

Browse files
lrecknageladdaleax
authored andcommitted
http: improve performance caused by primordials
Refs: #29766 This works on destructuring primordials whithin libs/_http_agent PR-URL: #30416 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
1 parent f135c38 commit 3b169f1

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

lib/_http_agent.js

+11-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@
2121

2222
'use strict';
2323

24-
const { Object } = primordials;
24+
const {
25+
Object: {
26+
setPrototypeOf: ObjectSetPrototypeOf,
27+
keys: ObjectKeys,
28+
values: ObjectValues
29+
}
30+
} = primordials;
2531

2632
const net = require('net');
2733
const EventEmitter = require('events');
@@ -129,8 +135,8 @@ function Agent(options) {
129135
// Don't emit keylog events unless there is a listener for them.
130136
this.on('newListener', maybeEnableKeylog);
131137
}
132-
Object.setPrototypeOf(Agent.prototype, EventEmitter.prototype);
133-
Object.setPrototypeOf(Agent, EventEmitter);
138+
ObjectSetPrototypeOf(Agent.prototype, EventEmitter.prototype);
139+
ObjectSetPrototypeOf(Agent, EventEmitter);
134140

135141
function maybeEnableKeylog(eventName) {
136142
if (eventName === 'keylog') {
@@ -141,7 +147,7 @@ function maybeEnableKeylog(eventName) {
141147
agent.emit('keylog', keylog, this);
142148
};
143149
// Existing sockets will start listening on keylog now.
144-
const sockets = Object.values(this.sockets);
150+
const sockets = ObjectValues(this.sockets);
145151
for (let i = 0; i < sockets.length; i++) {
146152
sockets[i].on('keylog', this[kOnKeylog]);
147153
}
@@ -381,7 +387,7 @@ Agent.prototype.destroy = function destroy() {
381387
const sets = [this.freeSockets, this.sockets];
382388
for (let s = 0; s < sets.length; s++) {
383389
const set = sets[s];
384-
const keys = Object.keys(set);
390+
const keys = ObjectKeys(set);
385391
for (let v = 0; v < keys.length; v++) {
386392
const setName = set[keys[v]];
387393
for (let n = 0; n < setName.length; n++) {

0 commit comments

Comments
 (0)