Skip to content

Commit c94ca85

Browse files
committed
url: improve performance by removing host
PR-URL: nodejs#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 cb14fc6 commit c94ca85

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
@@ -144,7 +144,6 @@ class URLContext {
144144
href = '';
145145
origin = '';
146146
protocol = '';
147-
host = '';
148147
hostname = '';
149148
pathname = '';
150149
search = '';
@@ -627,14 +626,13 @@ class URL {
627626
return constructHref(this[context], options);
628627
}
629628

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

723723
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)