Revert "url: make the context non-enumerable"

This reverts commit 5e1bf058f4906c0a49c34c6a1353d0b34784c80a, as it
causes major performance regressions during object construction.

Refs: https://github.com/nodejs/node/pull/24218

PR-URL: https://github.com/nodejs/node/pull/24495
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Timothy Gu 2018-11-13 14:34:07 -08:00 committed by Rich Trott
parent e9de435498
commit e1438025ed
2 changed files with 2 additions and 27 deletions

View File

@ -246,14 +246,7 @@ function onParseError(flags, input) {
// Reused by URL constructor and URL#href setter.
function parse(url, input, base) {
const base_context = base ? base[context] : undefined;
// In the URL#href setter
if (!url[context]) {
Object.defineProperty(url, context, {
enumerable: false,
configurable: false,
value: new URLContext()
});
}
url[context] = new URLContext();
_parse(input.trim(), -1, base_context, undefined,
onParseComplete.bind(url), onParseError);
}
@ -1381,11 +1374,7 @@ function toPathIfFileURL(fileURLOrPath) {
}
function NativeURL(ctx) {
Object.defineProperty(this, context, {
enumerable: false,
configurable: false,
value: ctx
});
this[context] = ctx;
}
NativeURL.prototype = URL.prototype;

View File

@ -1,14 +0,0 @@
'use strict';
// This tests that the context of URL objects are not
// enumerable and thus considered by assert libraries.
// See https://github.com/nodejs/node/issues/24211
// Tests below are not from WPT.
require('../common');
const assert = require('assert');
assert.deepStrictEqual(
new URL('./foo', 'https://example.com/'),
new URL('https://example.com/foo')
);