Title: [242457] releases/WebKitGTK/webkit-2.24/Source/_javascript_Core
Revision
242457
Author
carlo...@webkit.org
Date
2019-03-05 04:41:57 -0800 (Tue, 05 Mar 2019)

Log Message

Merge r242064 - [JSC] Make Intl fields lazily-allocated
https://bugs.webkit.org/show_bug.cgi?id=195022

Reviewed by Mark Lam.

This patch makes the following memory footprint optimization in IntlObject.

1. Make IntlObject fields including Intl.Collator lazily-allocated because we already removed direct references from JS builtins to these constructors (@Collator etc.).

2. Move LazyProperty<IntlObject, Structure> structures from IntlObject to JSGlobalObject. This makes sizeof(IntlObject) the same to the other ones of usual runtime Objects,
   and drop one MarkedBlock.

* runtime/IntlCollatorConstructor.h:
* runtime/IntlDateTimeFormatConstructor.h:
* runtime/IntlNumberFormatConstructor.h:
* runtime/IntlObject.cpp:
(JSC::createCollatorConstructor):
(JSC::createNumberFormatConstructor):
(JSC::createDateTimeFormatConstructor):
(JSC::createPluralRulesConstructor):
(JSC::IntlObject::finishCreation):
(JSC::IntlObject::visitChildren): Deleted.
* runtime/IntlObject.h:
* runtime/IntlPluralRulesConstructor.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
(JSC::JSGlobalObject::defaultCollator):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::collatorStructure):
(JSC::JSGlobalObject::numberFormatStructure):
(JSC::JSGlobalObject::dateTimeFormatStructure):
(JSC::JSGlobalObject::pluralRulesStructure):
(JSC::JSGlobalObject::intlObject const): Deleted.
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::globalFuncDateTimeFormat):
* runtime/NumberPrototype.cpp:
(JSC::numberProtoFuncToLocaleString):
* runtime/StringPrototype.cpp:
(JSC::stringProtoFuncLocaleCompare):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ChangeLog (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ChangeLog	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/ChangeLog	2019-03-05 12:41:57 UTC (rev 242457)
@@ -1,5 +1,48 @@
 2019-02-25  Yusuke Suzuki  <ysuz...@apple.com>
 
+        [JSC] Make Intl fields lazily-allocated
+        https://bugs.webkit.org/show_bug.cgi?id=195022
+
+        Reviewed by Mark Lam.
+
+        This patch makes the following memory footprint optimization in IntlObject.
+
+        1. Make IntlObject fields including Intl.Collator lazily-allocated because we already removed direct references from JS builtins to these constructors (@Collator etc.).
+
+        2. Move LazyProperty<IntlObject, Structure> structures from IntlObject to JSGlobalObject. This makes sizeof(IntlObject) the same to the other ones of usual runtime Objects,
+           and drop one MarkedBlock.
+
+        * runtime/IntlCollatorConstructor.h:
+        * runtime/IntlDateTimeFormatConstructor.h:
+        * runtime/IntlNumberFormatConstructor.h:
+        * runtime/IntlObject.cpp:
+        (JSC::createCollatorConstructor):
+        (JSC::createNumberFormatConstructor):
+        (JSC::createDateTimeFormatConstructor):
+        (JSC::createPluralRulesConstructor):
+        (JSC::IntlObject::finishCreation):
+        (JSC::IntlObject::visitChildren): Deleted.
+        * runtime/IntlObject.h:
+        * runtime/IntlPluralRulesConstructor.h:
+        * runtime/JSGlobalObject.cpp:
+        (JSC::JSGlobalObject::init):
+        (JSC::JSGlobalObject::visitChildren):
+        (JSC::JSGlobalObject::defaultCollator):
+        * runtime/JSGlobalObject.h:
+        (JSC::JSGlobalObject::collatorStructure):
+        (JSC::JSGlobalObject::numberFormatStructure):
+        (JSC::JSGlobalObject::dateTimeFormatStructure):
+        (JSC::JSGlobalObject::pluralRulesStructure):
+        (JSC::JSGlobalObject::intlObject const): Deleted.
+        * runtime/JSGlobalObjectFunctions.cpp:
+        (JSC::globalFuncDateTimeFormat):
+        * runtime/NumberPrototype.cpp:
+        (JSC::numberProtoFuncToLocaleString):
+        * runtime/StringPrototype.cpp:
+        (JSC::stringProtoFuncLocaleCompare):
+
+2019-02-25  Yusuke Suzuki  <ysuz...@apple.com>
+
         [JSC] Drop direct references to Intl constructors by rewriting Intl JS builtins in C++
         https://bugs.webkit.org/show_bug.cgi?id=194976
 

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlCollatorConstructor.h (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlCollatorConstructor.h	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlCollatorConstructor.h	2019-03-05 12:41:57 UTC (rev 242457)
@@ -46,7 +46,7 @@
 
     DECLARE_INFO;
 
-    Structure* collatorStructure(VM& vm) const { return globalObject(vm)->intlObject()->collatorStructure(); }
+    Structure* collatorStructure(VM& vm) const { return globalObject(vm)->collatorStructure(); }
 
 protected:
     void finishCreation(VM&, IntlCollatorPrototype*);

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlDateTimeFormatConstructor.h (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlDateTimeFormatConstructor.h	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlDateTimeFormatConstructor.h	2019-03-05 12:41:57 UTC (rev 242457)
@@ -46,7 +46,7 @@
 
     DECLARE_INFO;
 
-    Structure* dateTimeFormatStructure(VM& vm) const { return globalObject(vm)->intlObject()->dateTimeFormatStructure(); }
+    Structure* dateTimeFormatStructure(VM& vm) const { return globalObject(vm)->dateTimeFormatStructure(); }
 
 protected:
     void finishCreation(VM&, IntlDateTimeFormatPrototype*);

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlNumberFormatConstructor.h (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlNumberFormatConstructor.h	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlNumberFormatConstructor.h	2019-03-05 12:41:57 UTC (rev 242457)
@@ -46,7 +46,7 @@
 
     DECLARE_INFO;
 
-    Structure* numberFormatStructure(VM& vm) const { return globalObject(vm)->intlObject()->numberFormatStructure(); }
+    Structure* numberFormatStructure(VM& vm) const { return globalObject(vm)->numberFormatStructure(); }
 
 protected:
     void finishCreation(VM&, IntlNumberFormatPrototype*);

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlObject.cpp (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlObject.cpp	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlObject.cpp	2019-03-05 12:41:57 UTC (rev 242457)
@@ -33,21 +33,16 @@
 #include "Error.h"
 #include "FunctionPrototype.h"
 #include "IntlCanonicalizeLanguage.h"
-#include "IntlCollator.h"
 #include "IntlCollatorConstructor.h"
 #include "IntlCollatorPrototype.h"
-#include "IntlDateTimeFormat.h"
 #include "IntlDateTimeFormatConstructor.h"
 #include "IntlDateTimeFormatPrototype.h"
-#include "IntlNumberFormat.h"
 #include "IntlNumberFormatConstructor.h"
 #include "IntlNumberFormatPrototype.h"
-#include "IntlPluralRules.h"
 #include "IntlPluralRulesConstructor.h"
 #include "IntlPluralRulesPrototype.h"
 #include "JSCInlines.h"
 #include "JSCJSValueInlines.h"
-#include "LazyPropertyInlines.h"
 #include "Lookup.h"
 #include "ObjectPrototype.h"
 #include "Options.h"
@@ -68,7 +63,7 @@
 {
     IntlObject* intlObject = jsCast<IntlObject*>(object);
     JSGlobalObject* globalObject = intlObject->globalObject(vm);
-    return IntlCollatorConstructor::create(vm, IntlCollatorConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlCollatorPrototype*>(intlObject->collatorStructure()->storedPrototypeObject()));
+    return IntlCollatorConstructor::create(vm, IntlCollatorConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlCollatorPrototype*>(globalObject->collatorStructure()->storedPrototypeObject()));
 }
 
 static JSValue createNumberFormatConstructor(VM& vm, JSObject* object)
@@ -75,7 +70,7 @@
 {
     IntlObject* intlObject = jsCast<IntlObject*>(object);
     JSGlobalObject* globalObject = intlObject->globalObject(vm);
-    return IntlNumberFormatConstructor::create(vm, IntlNumberFormatConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlNumberFormatPrototype*>(intlObject->numberFormatStructure()->storedPrototypeObject()));
+    return IntlNumberFormatConstructor::create(vm, IntlNumberFormatConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlNumberFormatPrototype*>(globalObject->numberFormatStructure()->storedPrototypeObject()));
 }
 
 static JSValue createDateTimeFormatConstructor(VM& vm, JSObject* object)
@@ -82,7 +77,7 @@
 {
     IntlObject* intlObject = jsCast<IntlObject*>(object);
     JSGlobalObject* globalObject = intlObject->globalObject(vm);
-    return IntlDateTimeFormatConstructor::create(vm, IntlDateTimeFormatConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlDateTimeFormatPrototype*>(intlObject->dateTimeFormatStructure()->storedPrototypeObject()));
+    return IntlDateTimeFormatConstructor::create(vm, IntlDateTimeFormatConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlDateTimeFormatPrototype*>(globalObject->dateTimeFormatStructure()->storedPrototypeObject()));
 }
 
 static JSValue createPluralRulesConstructor(VM& vm, JSObject* object)
@@ -89,7 +84,7 @@
 {
     IntlObject* intlObject = jsCast<IntlObject*>(object);
     JSGlobalObject* globalObject = intlObject->globalObject(vm);
-    return IntlPluralRulesConstructor::create(vm, IntlPluralRulesConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlPluralRulesPrototype*>(intlObject->pluralRulesStructure()->storedPrototypeObject()));
+    return IntlPluralRulesConstructor::create(vm, IntlPluralRulesConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<IntlPluralRulesPrototype*>(globalObject->pluralRulesStructure()->storedPrototypeObject()));
 }
 
 }
@@ -101,6 +96,9 @@
 /* Source for IntlObject.lut.h
 @begin intlObjectTable
   getCanonicalLocales   intlObjectFuncGetCanonicalLocales            DontEnum|Function 1
+  Collator              createCollatorConstructor                    DontEnum|PropertyCallback
+  DateTimeFormat        createDateTimeFormatConstructor              DontEnum|PropertyCallback
+  NumberFormat          createNumberFormatConstructor                DontEnum|PropertyCallback
 @end
 */
 
@@ -129,35 +127,6 @@
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
 
-    m_collatorStructure.initLater(
-        [] (const LazyProperty<IntlObject, Structure>::Initializer& init) {
-            JSGlobalObject* globalObject = jsCast<IntlObject*>(init.owner)->globalObject(init.vm);
-            IntlCollatorPrototype* collatorPrototype = IntlCollatorPrototype::create(init.vm, globalObject, IntlCollatorPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
-            init.set(IntlCollator::createStructure(init.vm, globalObject, collatorPrototype));
-        });
-    m_numberFormatStructure.initLater(
-        [] (const LazyProperty<IntlObject, Structure>::Initializer& init) {
-            JSGlobalObject* globalObject = jsCast<IntlObject*>(init.owner)->globalObject(init.vm);
-            IntlNumberFormatPrototype* numberFormatPrototype = IntlNumberFormatPrototype::create(init.vm, globalObject, IntlNumberFormatPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
-            init.set(IntlNumberFormat::createStructure(init.vm, globalObject, numberFormatPrototype));
-        });
-    m_dateTimeFormatStructure.initLater(
-        [] (const LazyProperty<IntlObject, Structure>::Initializer& init) {
-            JSGlobalObject* globalObject = jsCast<IntlObject*>(init.owner)->globalObject(init.vm);
-            IntlDateTimeFormatPrototype* dateTimeFormatPrototype = IntlDateTimeFormatPrototype::create(init.vm, globalObject, IntlDateTimeFormatPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
-            init.set(IntlDateTimeFormat::createStructure(init.vm, globalObject, dateTimeFormatPrototype));
-        });
-    m_pluralRulesStructure.initLater(
-        [] (const LazyProperty<IntlObject, Structure>::Initializer& init) {
-            JSGlobalObject* globalObject = jsCast<IntlObject*>(init.owner)->globalObject(init.vm);
-            IntlPluralRulesPrototype* pluralRulesPrototype = IntlPluralRulesPrototype::create(init.vm, globalObject, IntlPluralRulesPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
-            init.set(IntlPluralRules::createStructure(init.vm, globalObject, pluralRulesPrototype));
-        });
-
-    putDirectWithoutTransition(vm, vm.propertyNames->Collator, createCollatorConstructor(vm, this), static_cast<unsigned>(PropertyAttribute::DontEnum));
-    putDirectWithoutTransition(vm, vm.propertyNames->NumberFormat, createNumberFormatConstructor(vm, this), static_cast<unsigned>(PropertyAttribute::DontEnum));
-    putDirectWithoutTransition(vm, vm.propertyNames->DateTimeFormat, createDateTimeFormatConstructor(vm, this), static_cast<unsigned>(PropertyAttribute::DontEnum));
-
     // Constructor Properties of the Intl Object
     // https://tc39.github.io/ecma402/#sec-constructor-properties-of-the-intl-object
     if (Options::useIntlPluralRules())
@@ -981,19 +950,6 @@
     return JSValue::encode(localeArray);
 }
 
-void IntlObject::visitChildren(JSCell* cell, SlotVisitor& visitor)
-{
-    IntlObject* thisObject = jsCast<IntlObject*>(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-
-    Base::visitChildren(thisObject, visitor);
-
-    thisObject->m_collatorStructure.visit(visitor);
-    thisObject->m_numberFormatStructure.visit(visitor);
-    thisObject->m_dateTimeFormatStructure.visit(visitor);
-    thisObject->m_pluralRulesStructure.visit(visitor);
-}
-
 } // namespace JSC
 
 #endif // ENABLE(INTL)

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlObject.h (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlObject.h	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlObject.h	2019-03-05 12:41:57 UTC (rev 242457)
@@ -44,7 +44,7 @@
 class IntlObject final : public JSNonFinalObject {
 public:
     typedef JSNonFinalObject Base;
-    static const unsigned StructureFlags = Base::StructureFlags | HasStaticPropertyTable | OverridesGetOwnPropertySlot;
+    static const unsigned StructureFlags = Base::StructureFlags | HasStaticPropertyTable;
 
     static IntlObject* create(VM&, Structure*);
     static Structure* createStructure(VM&, JSGlobalObject*, JSValue);
@@ -51,22 +51,11 @@
 
     DECLARE_INFO;
 
-    Structure* collatorStructure() { return m_collatorStructure.get(this); }
-    Structure* numberFormatStructure() { return m_numberFormatStructure.get(this); }
-    Structure* dateTimeFormatStructure() { return m_dateTimeFormatStructure.get(this); }
-    Structure* pluralRulesStructure() { return m_pluralRulesStructure.get(this); }
-
 protected:
     void finishCreation(VM&);
 
 private:
-    static void visitChildren(JSCell*, SlotVisitor&);
-
     IntlObject(VM&, Structure*);
-    LazyProperty<IntlObject, Structure> m_collatorStructure;
-    LazyProperty<IntlObject, Structure> m_numberFormatStructure;
-    LazyProperty<IntlObject, Structure> m_dateTimeFormatStructure;
-    LazyProperty<IntlObject, Structure> m_pluralRulesStructure;
 };
 
 String defaultLocale(ExecState&);

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlPluralRulesConstructor.h (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlPluralRulesConstructor.h	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/IntlPluralRulesConstructor.h	2019-03-05 12:41:57 UTC (rev 242457)
@@ -45,7 +45,7 @@
 
     DECLARE_INFO;
 
-    Structure* pluralRulesStructure(VM& vm) const { return globalObject(vm)->intlObject()->pluralRulesStructure(); }
+    Structure* pluralRulesStructure(VM& vm) const { return globalObject(vm)->pluralRulesStructure(); }
 
 protected:
     void finishCreation(VM&, IntlPluralRulesPrototype*);

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObject.cpp (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObject.cpp	2019-03-05 12:41:57 UTC (rev 242457)
@@ -179,7 +179,14 @@
 
 #if ENABLE(INTL)
 #include "IntlCollator.h"
+#include "IntlCollatorPrototype.h"
+#include "IntlDateTimeFormat.h"
+#include "IntlDateTimeFormatPrototype.h"
+#include "IntlNumberFormat.h"
+#include "IntlNumberFormatPrototype.h"
 #include "IntlObject.h"
+#include "IntlPluralRules.h"
+#include "IntlPluralRulesPrototype.h"
 #include <unicode/ucol.h>
 #include <unicode/udat.h>
 #include <unicode/unum.h>
@@ -799,6 +806,31 @@
     putDirectWithoutTransition(vm, vm.propertyNames->eval, m_evalFunction.get(), static_cast<unsigned>(PropertyAttribute::DontEnum));
     
 #if ENABLE(INTL)
+    m_collatorStructure.initLater(
+        [] (const Initializer<Structure>& init) {
+            JSGlobalObject* globalObject = jsCast<JSGlobalObject*>(init.owner);
+            IntlCollatorPrototype* collatorPrototype = IntlCollatorPrototype::create(init.vm, globalObject, IntlCollatorPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
+            init.set(IntlCollator::createStructure(init.vm, globalObject, collatorPrototype));
+        });
+    m_numberFormatStructure.initLater(
+        [] (const Initializer<Structure>& init) {
+            JSGlobalObject* globalObject = jsCast<JSGlobalObject*>(init.owner);
+            IntlNumberFormatPrototype* numberFormatPrototype = IntlNumberFormatPrototype::create(init.vm, globalObject, IntlNumberFormatPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
+            init.set(IntlNumberFormat::createStructure(init.vm, globalObject, numberFormatPrototype));
+        });
+    m_dateTimeFormatStructure.initLater(
+        [] (const Initializer<Structure>& init) {
+            JSGlobalObject* globalObject = jsCast<JSGlobalObject*>(init.owner);
+            IntlDateTimeFormatPrototype* dateTimeFormatPrototype = IntlDateTimeFormatPrototype::create(init.vm, globalObject, IntlDateTimeFormatPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
+            init.set(IntlDateTimeFormat::createStructure(init.vm, globalObject, dateTimeFormatPrototype));
+        });
+    m_pluralRulesStructure.initLater(
+        [] (const Initializer<Structure>& init) {
+            JSGlobalObject* globalObject = jsCast<JSGlobalObject*>(init.owner);
+            IntlPluralRulesPrototype* pluralRulesPrototype = IntlPluralRulesPrototype::create(init.vm, globalObject, IntlPluralRulesPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype()));
+            init.set(IntlPluralRules::createStructure(init.vm, globalObject, pluralRulesPrototype));
+        });
+
     IntlObject* intl = IntlObject::create(vm, IntlObject::createStructure(vm, this, m_objectPrototype.get()));
     putDirectWithoutTransition(vm, vm.propertyNames->Intl, intl, static_cast<unsigned>(PropertyAttribute::DontEnum));
     m_intlObject.set(vm, this, intl);
@@ -1568,6 +1600,10 @@
 #if ENABLE(INTL)
     visitor.append(thisObject->m_intlObject);
     visitor.append(thisObject->m_defaultCollator);
+    thisObject->m_collatorStructure.visit(visitor);
+    thisObject->m_numberFormatStructure.visit(visitor);
+    thisObject->m_dateTimeFormatStructure.visit(visitor);
+    thisObject->m_pluralRulesStructure.visit(visitor);
 #endif
     visitor.append(thisObject->m_nullGetterFunction);
     visitor.append(thisObject->m_nullSetterFunction);
@@ -1874,7 +1910,7 @@
     if (m_defaultCollator)
         return m_defaultCollator.get();
 
-    IntlCollator* collator = IntlCollator::create(vm, intlObject()->collatorStructure());
+    IntlCollator* collator = IntlCollator::create(vm, collatorStructure());
     collator->initializeCollator(*exec, jsUndefined(), jsUndefined());
     RETURN_IF_EXCEPTION(scope, nullptr);
     m_defaultCollator.set(vm, this, collator);

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObject.h (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObject.h	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObject.h	2019-03-05 12:41:57 UTC (rev 242457)
@@ -278,6 +278,10 @@
 #if ENABLE(INTL)
     WriteBarrier<IntlObject> m_intlObject;
     WriteBarrier<IntlCollator> m_defaultCollator;
+    LazyProperty<JSGlobalObject, Structure> m_collatorStructure;
+    LazyProperty<JSGlobalObject, Structure> m_numberFormatStructure;
+    LazyProperty<JSGlobalObject, Structure> m_dateTimeFormatStructure;
+    LazyProperty<JSGlobalObject, Structure> m_pluralRulesStructure;
 #endif
     WriteBarrier<NullGetterFunction> m_nullGetterFunction;
     WriteBarrier<NullSetterFunction> m_nullSetterFunction;
@@ -588,7 +592,6 @@
     JSInternalPromiseConstructor* internalPromiseConstructor() const { return m_internalPromiseConstructor.get(); }
 
 #if ENABLE(INTL)
-    IntlObject* intlObject() const { return m_intlObject.get(); }
     IntlCollator* defaultCollator(ExecState*);
 #endif
 
@@ -766,6 +769,12 @@
     Structure* webAssemblyWrapperFunctionStructure() const { return m_webAssemblyWrapperFunctionStructure.get(); }
     Structure* webAssemblyToJSCalleeStructure() const { return m_webAssemblyToJSCalleeStructure.get(); }
 #endif // ENABLE(WEBASSEMBLY)
+#if ENABLE(INTL)
+    Structure* collatorStructure() { return m_collatorStructure.get(this); }
+    Structure* numberFormatStructure() { return m_numberFormatStructure.get(this); }
+    Structure* dateTimeFormatStructure() { return m_dateTimeFormatStructure.get(this); }
+    Structure* pluralRulesStructure() { return m_pluralRulesStructure.get(this); }
+#endif // ENABLE(INTL)
 
     JS_EXPORT_PRIVATE void setRemoteDebuggingEnabled(bool);
     JS_EXPORT_PRIVATE bool remoteDebuggingEnabled() const;

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSGlobalObjectFunctions.cpp	2019-03-05 12:41:57 UTC (rev 242457)
@@ -839,7 +839,7 @@
     auto scope = DECLARE_THROW_SCOPE(vm);
 
     JSGlobalObject* globalObject = exec->lexicalGlobalObject();
-    IntlDateTimeFormat* dateTimeFormat = IntlDateTimeFormat::create(vm, globalObject->intlObject()->dateTimeFormatStructure());
+    IntlDateTimeFormat* dateTimeFormat = IntlDateTimeFormat::create(vm, globalObject->dateTimeFormatStructure());
     dateTimeFormat->initializeDateTimeFormat(*exec, exec->argument(0), exec->argument(1));
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
     double value = exec->argument(2).toNumber(exec);

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberPrototype.cpp (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberPrototype.cpp	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberPrototype.cpp	2019-03-05 12:41:57 UTC (rev 242457)
@@ -602,7 +602,7 @@
 
 #if ENABLE(INTL)
     JSGlobalObject* globalObject = exec->lexicalGlobalObject();
-    IntlNumberFormat* numberFormat = IntlNumberFormat::create(vm, globalObject->intlObject()->numberFormatStructure());
+    IntlNumberFormat* numberFormat = IntlNumberFormat::create(vm, globalObject->numberFormatStructure());
     numberFormat->initializeNumberFormat(*exec, exec->argument(0), exec->argument(1));
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
     RELEASE_AND_RETURN(scope, JSValue::encode(numberFormat->formatNumber(*exec, x)));

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringPrototype.cpp (242456 => 242457)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringPrototype.cpp	2019-03-05 12:41:52 UTC (rev 242456)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringPrototype.cpp	2019-03-05 12:41:57 UTC (rev 242457)
@@ -1517,7 +1517,7 @@
         collator = globalObject->defaultCollator(exec);
         RETURN_IF_EXCEPTION(scope, encodedJSValue());
     } else {
-        collator = IntlCollator::create(vm, globalObject->intlObject()->collatorStructure());
+        collator = IntlCollator::create(vm, globalObject->collatorStructure());
         collator->initializeCollator(*exec, locales, options);
         RETURN_IF_EXCEPTION(scope, encodedJSValue());
     }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to