Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Unified Diff: src/js/i18n.js

Issue 2601833002: [intl] Remove indirection in Intl objects (Closed)
Patch Set: Fix a dcheck Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/i18n.cc ('k') | src/runtime/runtime.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/js/i18n.js
diff --git a/src/js/i18n.js b/src/js/i18n.js
index e037053f3359b6ac8fe914ffd605006c9a764cde..50ed5bcb8943cfeae6264e24ebdadf62e60a33f8 100644
--- a/src/js/i18n.js
+++ b/src/js/i18n.js
@@ -96,7 +96,7 @@ function AddBoundMethod(obj, methodName, implementation, length, typename,
%SetNativeFlag(getter);
}
-function IntlConstruct(receiver, constructor, initializer, newTarget, args,
+function IntlConstruct(receiver, constructor, create, newTarget, args,
compat) {
var locales = args[0];
var options = args[1];
@@ -114,7 +114,7 @@ function IntlConstruct(receiver, constructor, initializer, newTarget, args,
return new constructor(locales, options);
}
- return initializer(receiver, locales, options);
+ return create(locales, options);
}
@@ -950,11 +950,7 @@ InstallFunction(GlobalIntl, 'getCanonicalLocales', function(locales) {
* Initializes the given object so it's a valid Collator instance.
* Useful for subclassing.
*/
-function initializeCollator(collator, locales, options) {
- if (%IsInitializedIntlObject(collator)) {
- throw %make_type_error(kReinitializeIntl, "Collator");
- }
-
+function CreateCollator(locales, options) {
if (IS_UNDEFINED(options)) {
options = {};
}
@@ -1041,12 +1037,9 @@ function initializeCollator(collator, locales, options) {
usage: {value: internalOptions.usage, writable: true}
});
- var internalCollator = %CreateCollator(requestedLocale,
- internalOptions,
- resolved);
+ var collator = %CreateCollator(requestedLocale, internalOptions, resolved);
- // Writable, configurable and enumerable are set to false by default.
- %MarkAsInitializedIntlObjectOfType(collator, 'collator', internalCollator);
+ %MarkAsInitializedIntlObjectOfType(collator, 'collator');
collator[resolvedSymbol] = resolved;
return collator;
@@ -1060,7 +1053,7 @@ function initializeCollator(collator, locales, options) {
* @constructor
*/
function CollatorConstructor() {
- return IntlConstruct(this, GlobalIntlCollator, initializeCollator, new.target,
+ return IntlConstruct(this, GlobalIntlCollator, CreateCollator, new.target,
arguments);
}
%SetCode(GlobalIntlCollator, CollatorConstructor);
@@ -1111,8 +1104,7 @@ InstallFunction(GlobalIntlCollator, 'supportedLocalesOf', function(locales) {
* the sort order, or x comes after y in the sort order, respectively.
*/
function compare(collator, x, y) {
- return %InternalCompare(%GetImplFromInitializedIntlObject(collator),
- TO_STRING(x), TO_STRING(y));
+ return %InternalCompare(collator, TO_STRING(x), TO_STRING(y));
};
@@ -1160,11 +1152,7 @@ var patternAccessor = {
* Initializes the given object so it's a valid NumberFormat instance.
* Useful for subclassing.
*/
-function initializeNumberFormat(numberFormat, locales, options) {
- if (%IsInitializedIntlObject(numberFormat)) {
- throw %make_type_error(kReinitializeIntl, "NumberFormat");
- }
-
+function CreateNumberFormat(locales, options) {
if (IS_UNDEFINED(options)) {
options = {};
}
@@ -1260,16 +1248,15 @@ function initializeNumberFormat(numberFormat, locales, options) {
if (HAS_OWN_PROPERTY(internalOptions, 'maximumSignificantDigits')) {
defineWEProperty(resolved, 'maximumSignificantDigits', UNDEFINED);
}
- var formatter = %CreateNumberFormat(requestedLocale,
- internalOptions,
- resolved);
+ var numberFormat = %CreateNumberFormat(requestedLocale, internalOptions,
+ resolved);
if (internalOptions.style === 'currency') {
%object_define_property(resolved, 'currencyDisplay',
{value: currencyDisplay, writable: true});
}
- %MarkAsInitializedIntlObjectOfType(numberFormat, 'numberformat', formatter);
+ %MarkAsInitializedIntlObjectOfType(numberFormat, 'numberformat');
numberFormat[resolvedSymbol] = resolved;
return numberFormat;
@@ -1283,7 +1270,7 @@ function initializeNumberFormat(numberFormat, locales, options) {
* @constructor
*/
function NumberFormatConstructor() {
- return IntlConstruct(this, GlobalIntlNumberFormat, initializeNumberFormat,
+ return IntlConstruct(this, GlobalIntlNumberFormat, CreateNumberFormat,
new.target, arguments, true);
}
%SetCode(GlobalIntlNumberFormat, NumberFormatConstructor);
@@ -1352,8 +1339,7 @@ function formatNumber(formatter, value) {
// Spec treats -0 and +0 as 0.
var number = TO_NUMBER(value) + 0;
- return %InternalNumberFormat(%GetImplFromInitializedIntlObject(formatter),
- number);
+ return %InternalNumberFormat(formatter, number);
}
@@ -1564,12 +1550,7 @@ function toDateTimeOptions(options, required, defaults) {
* Initializes the given object so it's a valid DateTimeFormat instance.
* Useful for subclassing.
*/
-function initializeDateTimeFormat(dateFormat, locales, options) {
-
- if (%IsInitializedIntlObject(dateFormat)) {
- throw %make_type_error(kReinitializeIntl, "DateTimeFormat");
- }
-
+function CreateDateTimeFormat(locales, options) {
if (IS_UNDEFINED(options)) {
options = {};
}
@@ -1631,14 +1612,14 @@ function initializeDateTimeFormat(dateFormat, locales, options) {
year: {writable: true}
});
- var formatter = %CreateDateTimeFormat(
+ var dateFormat = %CreateDateTimeFormat(
requestedLocale, {skeleton: ldmlString, timeZone: tz}, resolved);
if (resolved.timeZone === "Etc/Unknown") {
throw %make_range_error(kUnsupportedTimeZone, tz);
}
- %MarkAsInitializedIntlObjectOfType(dateFormat, 'dateformat', formatter);
+ %MarkAsInitializedIntlObjectOfType(dateFormat, 'dateformat');
dateFormat[resolvedSymbol] = resolved;
return dateFormat;
@@ -1652,7 +1633,7 @@ function initializeDateTimeFormat(dateFormat, locales, options) {
* @constructor
*/
function DateTimeFormatConstructor() {
- return IntlConstruct(this, GlobalIntlDateTimeFormat, initializeDateTimeFormat,
+ return IntlConstruct(this, GlobalIntlDateTimeFormat, CreateDateTimeFormat,
new.target, arguments, true);
}
%SetCode(GlobalIntlDateTimeFormat, DateTimeFormatConstructor);
@@ -1738,8 +1719,7 @@ function formatDate(formatter, dateValue) {
if (!NUMBER_IS_FINITE(dateMs)) throw %make_range_error(kDateRange);
- return %InternalDateFormat(%GetImplFromInitializedIntlObject(formatter),
- new GlobalDate(dateMs));
+ return %InternalDateFormat(formatter, new GlobalDate(dateMs));
}
function FormatDateToParts(dateValue) {
@@ -1761,8 +1741,7 @@ function FormatDateToParts(dateValue) {
if (!NUMBER_IS_FINITE(dateMs)) throw %make_range_error(kDateRange);
- return %InternalDateFormatToParts(
- %GetImplFromInitializedIntlObject(this), new GlobalDate(dateMs));
+ return %InternalDateFormatToParts(this, new GlobalDate(dateMs));
}
%FunctionSetLength(FormatDateToParts, 0);
@@ -1818,11 +1797,7 @@ function canonicalizeTimeZoneID(tzID) {
* Initializes the given object so it's a valid BreakIterator instance.
* Useful for subclassing.
*/
-function initializeBreakIterator(iterator, locales, options) {
- if (%IsInitializedIntlObject(iterator)) {
- throw %make_type_error(kReinitializeIntl, "v8BreakIterator");
- }
-
+function CreateBreakIterator(locales, options) {
if (IS_UNDEFINED(options)) {
options = {};
}
@@ -1841,12 +1816,9 @@ function initializeBreakIterator(iterator, locales, options) {
locale: {writable: true}
});
- var internalIterator = %CreateBreakIterator(locale.locale,
- internalOptions,
- resolved);
+ var iterator = %CreateBreakIterator(locale.locale, internalOptions, resolved);
- %MarkAsInitializedIntlObjectOfType(iterator, 'breakiterator',
- internalIterator);
+ %MarkAsInitializedIntlObjectOfType(iterator, 'breakiterator');
iterator[resolvedSymbol] = resolved;
return iterator;
@@ -1860,7 +1832,7 @@ function initializeBreakIterator(iterator, locales, options) {
* @constructor
*/
function v8BreakIteratorConstructor() {
- return IntlConstruct(this, GlobalIntlv8BreakIterator, initializeBreakIterator,
+ return IntlConstruct(this, GlobalIntlv8BreakIterator, CreateBreakIterator,
new.target, arguments);
}
%SetCode(GlobalIntlv8BreakIterator, v8BreakIteratorConstructor);
@@ -1912,8 +1884,7 @@ InstallFunction(GlobalIntlv8BreakIterator, 'supportedLocalesOf',
* gets discarded.
*/
function adoptText(iterator, text) {
- %BreakIteratorAdoptText(%GetImplFromInitializedIntlObject(iterator),
- TO_STRING(text));
+ %BreakIteratorAdoptText(iterator, TO_STRING(text));
}
@@ -1921,7 +1892,7 @@ function adoptText(iterator, text) {
* Returns index of the first break in the string and moves current pointer.
*/
function first(iterator) {
- return %BreakIteratorFirst(%GetImplFromInitializedIntlObject(iterator));
+ return %BreakIteratorFirst(iterator);
}
@@ -1929,7 +1900,7 @@ function first(iterator) {
* Returns the index of the next break and moves the pointer.
*/
function next(iterator) {
- return %BreakIteratorNext(%GetImplFromInitializedIntlObject(iterator));
+ return %BreakIteratorNext(iterator);
}
@@ -1937,7 +1908,7 @@ function next(iterator) {
* Returns index of the current break.
*/
function current(iterator) {
- return %BreakIteratorCurrent(%GetImplFromInitializedIntlObject(iterator));
+ return %BreakIteratorCurrent(iterator);
}
@@ -1945,7 +1916,7 @@ function current(iterator) {
* Returns type of the current break.
*/
function breakType(iterator) {
- return %BreakIteratorBreakType(%GetImplFromInitializedIntlObject(iterator));
+ return %BreakIteratorBreakType(iterator);
}
« no previous file with comments | « src/i18n.cc ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698