Skip to content

Commit a524055

Browse files
anonrigtargos
authored andcommitted
url: improve performance by removing host
PR-URL: #46547 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
1 parent 9d55a5e commit a524055

File tree

3 files changed

+13
-17
lines changed

3 files changed

+13
-17
lines changed

lib/internal/url.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,6 @@ class URLContext {
143143
href = '';
144144
origin = '';
145145
protocol = '';
146-
host = '';
147146
hostname = '';
148147
pathname = '';
149148
search = '';
@@ -626,14 +625,13 @@ class URL {
626625
return constructHref(this[context], options);
627626
}
628627

629-
#onParseComplete = (href, origin, protocol, host, hostname, pathname,
628+
#onParseComplete = (href, origin, protocol, hostname, pathname,
630629
search, username, password, port, hash, hasHost,
631630
hasOpaquePath) => {
632631
const ctx = this[context];
633632
ctx.href = href;
634633
ctx.origin = origin;
635634
ctx.protocol = protocol;
636-
ctx.host = host;
637635
ctx.hostname = hostname;
638636
ctx.pathname = pathname;
639637
ctx.search = search;
@@ -716,7 +714,9 @@ class URL {
716714
get host() {
717715
if (!isURLThis(this))
718716
throw new ERR_INVALID_THIS('URL');
719-
return this[context].host;
717+
const port = this[context].port;
718+
const suffix = port.length > 0 ? `:${port}` : '';
719+
return this[context].hostname + suffix;
720720
}
721721

722722
set host(value) {

src/node_url.cc

+9-12
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,15 @@ void SetArgs(Environment* env, Local<Value> argv[12], const ada::result& url) {
5252
argv[0] = Utf8String(isolate, url->get_href());
5353
argv[1] = Utf8String(isolate, url->get_origin());
5454
argv[2] = Utf8String(isolate, url->get_protocol());
55-
argv[3] = Utf8String(isolate, url->get_host());
56-
argv[4] = Utf8String(isolate, url->get_hostname());
57-
argv[5] = Utf8String(isolate, url->get_pathname());
58-
argv[6] = Utf8String(isolate, url->get_search());
59-
argv[7] = Utf8String(isolate, url->get_username());
60-
argv[8] = Utf8String(isolate, url->get_password());
61-
argv[9] = Utf8String(isolate, url->get_port());
62-
argv[10] = Utf8String(isolate, url->get_hash());
63-
argv[11] = Boolean::New(isolate, url->host.has_value());
64-
argv[12] = Boolean::New(isolate, url->has_opaque_path);
55+
argv[3] = Utf8String(isolate, url->get_hostname());
56+
argv[4] = Utf8String(isolate, url->get_pathname());
57+
argv[5] = Utf8String(isolate, url->get_search());
58+
argv[6] = Utf8String(isolate, url->get_username());
59+
argv[7] = Utf8String(isolate, url->get_password());
60+
argv[8] = Utf8String(isolate, url->get_port());
61+
argv[9] = Utf8String(isolate, url->get_hash());
62+
argv[10] = Boolean::New(isolate, url->host.has_value());
63+
argv[11] = Boolean::New(isolate, url->has_opaque_path);
6564
}
6665

6766
void Parse(const FunctionCallbackInfo<Value>& args) {
@@ -108,7 +107,6 @@ void Parse(const FunctionCallbackInfo<Value>& args) {
108107
undef,
109108
undef,
110109
undef,
111-
undef,
112110
};
113111
SetArgs(env, argv, out);
114112
USE(success_callback_->Call(
@@ -259,7 +257,6 @@ void UpdateUrl(const FunctionCallbackInfo<Value>& args) {
259257
undef,
260258
undef,
261259
undef,
262-
undef,
263260
};
264261
SetArgs(env, argv, out);
265262
USE(success_callback_->Call(

test/parallel/test-whatwg-url-custom-inspect.js

-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ assert.strictEqual(
4949
href: 'https://username:password@host.name:8080/path/name/?que=ry#hash',
5050
origin: 'https://host.name:8080',
5151
protocol: 'https:',
52-
host: 'host.name:8080',
5352
hostname: 'host.name',
5453
pathname: '/path/name/',
5554
search: '?que=ry',

0 commit comments

Comments
 (0)