commit 085dd98a3681e748fdcd48ce66aea9b01b75ae2a
parent 1644385a012ee8c97881dc2a0d503b4eaeea9875
Author: Iain Ireland <iireland@mozilla.com>
Date: Thu, 13 Nov 2025 23:37:50 +0000
Bug 1998297: Use a macro for new_Record r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D271331
Diffstat:
13 files changed, 18 insertions(+), 22 deletions(-)
diff --git a/js/src/builtin/SelfHostingDefines.h b/js/src/builtin/SelfHostingDefines.h
@@ -20,6 +20,11 @@
#define FUN_APPLY(FUN, RECEIVER, ARGS) \
callFunction(std_Function_apply, FUN, RECEIVER, ARGS)
+// A "Record" is an internal type used in the ECMAScript spec to define a struct
+// made up of key / values. It is never exposed to user script, but we use a
+// simple Object (with null prototype) as a convenient implementation.
+#define NEW_RECORD() std_Object_create(null)
+
// NB: keep this in sync with the copy in vm/ArgumentsObject.h.
#define MAX_ARGS_LENGTH (500 * 1000)
diff --git a/js/src/builtin/Utilities.js b/js/src/builtin/Utilities.js
@@ -28,15 +28,6 @@
// code are installed via the std_functions JSFunctionSpec[] in
// SelfHosting.cpp.
-/********** Specification types **********/
-
-// A "Record" is an internal type used in the ECMAScript spec to define a struct
-// made up of key / values. It is never exposed to user script, but we use a
-// simple Object (with null prototype) as a convenient implementation.
-function new_Record() {
- return std_Object_create(null);
-}
-
/********** Abstract operations defined in ECMAScript Language Specification **********/
/* Spec: ECMAScript Language Specification, 5.1 edition, 9.2 and 11.4.9 */
diff --git a/js/src/builtin/intl/Collator.js b/js/src/builtin/intl/Collator.js
@@ -171,7 +171,7 @@ function InitializeCollator(collator, locales, options) {
lazyCollatorData.usage = u;
// Step 8.
- var opt = new_Record();
+ var opt = NEW_RECORD();
lazyCollatorData.opt = opt;
// Steps 9-10.
diff --git a/js/src/builtin/intl/CommonFunctions.js b/js/src/builtin/intl/CommonFunctions.js
@@ -242,7 +242,7 @@ function BestAvailableLocaleIgnoringDefault(availableLocales, locale) {
*/
function LookupMatcher(availableLocales, requestedLocales) {
// Step 1.
- var result = new_Record();
+ var result = NEW_RECORD();
// Step 2.
for (var i = 0; i < requestedLocales.length; i++) {
@@ -397,7 +397,7 @@ function ResolveLocale(
var extension = r.extension;
// Step 5.
- var result = new_Record();
+ var result = NEW_RECORD();
// Step 6.
result.dataLocale = foundLocale;
diff --git a/js/src/builtin/intl/DateTimeFormat.js b/js/src/builtin/intl/DateTimeFormat.js
@@ -268,7 +268,7 @@ function InitializeDateTimeFormat(
// Compute options that impact interpretation of locale.
// Step 4.
- var localeOpt = new_Record();
+ var localeOpt = NEW_RECORD();
lazyDateTimeFormatData.localeOpt = localeOpt;
// Steps 5-6.
@@ -372,7 +372,7 @@ function InitializeDateTimeFormat(
lazyDateTimeFormatData.timeZone = timeZone;
// Step 34.
- var formatOptions = new_Record();
+ var formatOptions = NEW_RECORD();
lazyDateTimeFormatData.formatOptions = formatOptions;
if (mozExtensions) {
diff --git a/js/src/builtin/intl/DisplayNames.js b/js/src/builtin/intl/DisplayNames.js
@@ -178,7 +178,7 @@ function InitializeDisplayNames(displayNames, locales, options, mozExtensions) {
}
// Step 5.
- var opt = new_Record();
+ var opt = NEW_RECORD();
lazyDisplayNamesData.opt = opt;
lazyDisplayNamesData.mozExtensions = mozExtensions;
diff --git a/js/src/builtin/intl/DurationFormat.js b/js/src/builtin/intl/DurationFormat.js
@@ -235,7 +235,7 @@ function InitializeDurationFormat(durationFormat, locales, options) {
}
// Step 8.
- var opt = new_Record();
+ var opt = NEW_RECORD();
opt.localeMatcher = matcher;
opt.nu = numberingSystem;
diff --git a/js/src/builtin/intl/IntlObject.js b/js/src/builtin/intl/IntlObject.js
@@ -55,7 +55,7 @@ function Intl_getCalendarInfo(locales) {
var localeData = DateTimeFormat.localeData;
// 3. Let localeOpt be a new Record.
- var localeOpt = new_Record();
+ var localeOpt = NEW_RECORD();
// 4. Set localeOpt.[[localeMatcher]] to "best fit".
localeOpt.localeMatcher = "best fit";
diff --git a/js/src/builtin/intl/ListFormat.js b/js/src/builtin/intl/ListFormat.js
@@ -135,7 +135,7 @@ function InitializeListFormat(listFormat, locales, options) {
}
// Step 6.
- var opt = new_Record();
+ var opt = NEW_RECORD();
lazyListFormatData.opt = opt;
// Steps 7-8.
diff --git a/js/src/builtin/intl/NumberFormat.js b/js/src/builtin/intl/NumberFormat.js
@@ -675,7 +675,7 @@ function InitializeNumberFormat(numberFormat, thisValue, locales, options) {
// Compute options that impact interpretation of locale.
// Step 5.
- var opt = new_Record();
+ var opt = NEW_RECORD();
lazyNumberFormatData.opt = opt;
// Steps 6-7.
diff --git a/js/src/builtin/intl/PluralRules.js b/js/src/builtin/intl/PluralRules.js
@@ -196,7 +196,7 @@ function InitializePluralRules(pluralRules, locales, options) {
}
// Step 3.
- var opt = new_Record();
+ var opt = NEW_RECORD();
lazyPluralRulesData.opt = opt;
// Steps 4-5.
diff --git a/js/src/builtin/intl/RelativeTimeFormat.js b/js/src/builtin/intl/RelativeTimeFormat.js
@@ -139,7 +139,7 @@ function InitializeRelativeTimeFormat(relativeTimeFormat, locales, options) {
}
// Step 4.
- var opt = new_Record();
+ var opt = NEW_RECORD();
// Steps 5-6.
var matcher = GetOption(
diff --git a/js/src/builtin/intl/Segmenter.js b/js/src/builtin/intl/Segmenter.js
@@ -130,7 +130,7 @@ function InitializeSegmenter(segmenter, locales, options) {
}
// Step 6.
- var opt = new_Record();
+ var opt = NEW_RECORD();
lazySegmenterData.opt = opt;
// Steps 7-8.