WebKit Bugzilla
Attachment 362214 Details for
Bug 194743
: [JSC] JSWrapperObject should not be destructible
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-194743-20190216015458.patch (text/plain), 20.31 KB, created by
Yusuke Suzuki
on 2019-02-16 01:54:59 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2019-02-16 01:54:59 PST
Size:
20.31 KB
patch
obsolete
>Subversion Revision: 241645 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 13b3cd5f0f4ece6f0cb28a7a977b0fdf1c41c11a..da4d5bca2cff8093b3a164a4f3304c7c22b5990d 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,47 @@ >+2019-02-16 Yusuke Suzuki <ysuzuki@apple.com> >+ >+ [JSC] JSWrapperObject should not be destructible >+ https://bugs.webkit.org/show_bug.cgi?id=194743 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ JSWrapperObject should be just a wrapper object for JSValue, thus, it should not be a JSDestructibleObject. >+ Currently it is destructible object because DateInstance uses it. This patch changes Base of DateInstance from >+ JSWrapperObjec to JSDestructibleObject, and makes JSWrapperObject non-destructible. >+ >+ * runtime/BigIntObject.cpp: >+ (JSC::BigIntObject::BigIntObject): >+ * runtime/BooleanConstructor.cpp: >+ (JSC::BooleanConstructor::finishCreation): >+ * runtime/BooleanObject.cpp: >+ (JSC::BooleanObject::BooleanObject): >+ * runtime/BooleanObject.h: >+ * runtime/DateInstance.cpp: >+ (JSC::DateInstance::DateInstance): >+ (JSC::DateInstance::finishCreation): >+ * runtime/DateInstance.h: >+ * runtime/DatePrototype.cpp: >+ (JSC::dateProtoFuncGetTime): >+ (JSC::dateProtoFuncSetTime): >+ (JSC::setNewValueFromTimeArgs): >+ (JSC::setNewValueFromDateArgs): >+ (JSC::dateProtoFuncSetYear): >+ * runtime/JSCPoison.h: >+ * runtime/JSWrapperObject.h: >+ (JSC::JSWrapperObject::JSWrapperObject): >+ * runtime/NumberObject.cpp: >+ (JSC::NumberObject::NumberObject): >+ * runtime/NumberObject.h: >+ * runtime/StringConstructor.cpp: >+ (JSC::StringConstructor::finishCreation): >+ * runtime/StringObject.cpp: >+ (JSC::StringObject::StringObject): >+ * runtime/StringObject.h: >+ (JSC::StringObject::internalValue const): >+ * runtime/SymbolObject.cpp: >+ (JSC::SymbolObject::SymbolObject): >+ * runtime/SymbolObject.h: >+ > 2019-02-16 Yusuke Suzuki <ysuzuki@apple.com> > > [JSC] Shrink UnlinkedFunctionExecutable >diff --git a/Source/JavaScriptCore/runtime/BigIntObject.cpp b/Source/JavaScriptCore/runtime/BigIntObject.cpp >index 1f04547ba0a7f4aefaa11c3cb0450d4014cc625d..3c14982c4d6e7d3a544982d5738d5653172f784a 100644 >--- a/Source/JavaScriptCore/runtime/BigIntObject.cpp >+++ b/Source/JavaScriptCore/runtime/BigIntObject.cpp >@@ -45,7 +45,7 @@ BigIntObject* BigIntObject::create(VM& vm, JSGlobalObject* globalObject, JSBigIn > } > > BigIntObject::BigIntObject(VM& vm, Structure* structure) >- : JSWrapperObject(vm, structure) >+ : Base(vm, structure) > { > } > >diff --git a/Source/JavaScriptCore/runtime/BooleanConstructor.cpp b/Source/JavaScriptCore/runtime/BooleanConstructor.cpp >index b8fa66c5f65320473c88830febbb13364846cbe4..e32378ffc97ae09ca6078598695e3c335cc16417 100644 >--- a/Source/JavaScriptCore/runtime/BooleanConstructor.cpp >+++ b/Source/JavaScriptCore/runtime/BooleanConstructor.cpp >@@ -57,7 +57,7 @@ BooleanConstructor::BooleanConstructor(VM& vm, Structure* structure) > > void BooleanConstructor::finishCreation(VM& vm, BooleanPrototype* booleanPrototype) > { >- Base::finishCreation(vm, booleanPrototype->classInfo()->className); >+ Base::finishCreation(vm, booleanPrototype->classInfo(vm)->className); > putDirectWithoutTransition(vm, vm.propertyNames->prototype, booleanPrototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly); > putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum); > } >diff --git a/Source/JavaScriptCore/runtime/BooleanObject.cpp b/Source/JavaScriptCore/runtime/BooleanObject.cpp >index b64b0333fe94cfe8d6ba0b0cd305c2e17ebe45ce..7de5deb8b92e558c406195230b80782e8efb9bab 100644 >--- a/Source/JavaScriptCore/runtime/BooleanObject.cpp >+++ b/Source/JavaScriptCore/runtime/BooleanObject.cpp >@@ -28,10 +28,10 @@ namespace JSC { > > STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(BooleanObject); > >-const ClassInfo BooleanObject::s_info = { "Boolean", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(BooleanObject) }; >+const ClassInfo BooleanObject::s_info = { "Boolean", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(BooleanObject) }; > > BooleanObject::BooleanObject(VM& vm, Structure* structure) >- : JSWrapperObject(vm, structure) >+ : Base(vm, structure) > { > } > >diff --git a/Source/JavaScriptCore/runtime/BooleanObject.h b/Source/JavaScriptCore/runtime/BooleanObject.h >index 27c43e79a58aebb538e0a0986db62713d292177d..85d673c5880a6f17c9ed32d6ae8b492a6d2b16c6 100644 >--- a/Source/JavaScriptCore/runtime/BooleanObject.h >+++ b/Source/JavaScriptCore/runtime/BooleanObject.h >@@ -30,7 +30,7 @@ class BooleanObject : public JSWrapperObject { > JS_EXPORT_PRIVATE void finishCreation(VM&); > > public: >- typedef JSWrapperObject Base; >+ using Base = JSWrapperObject; > > static BooleanObject* create(VM& vm, Structure* structure) > { >diff --git a/Source/JavaScriptCore/runtime/DateInstance.cpp b/Source/JavaScriptCore/runtime/DateInstance.cpp >index 4dd8603c72418c7a42c9771c5b79b81aa39a49d8..9e2dd2047eb9625076c44d359f4cf904c645f5ea 100644 >--- a/Source/JavaScriptCore/runtime/DateInstance.cpp >+++ b/Source/JavaScriptCore/runtime/DateInstance.cpp >@@ -32,10 +32,10 @@ namespace JSC { > > using namespace WTF; > >-const ClassInfo DateInstance::s_info = {"Date", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(DateInstance)}; >+const ClassInfo DateInstance::s_info = {"Date", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(DateInstance)}; > > DateInstance::DateInstance(VM& vm, Structure* structure) >- : JSWrapperObject(vm, structure) >+ : Base(vm, structure) > { > } > >@@ -43,14 +43,13 @@ void DateInstance::finishCreation(VM& vm) > { > Base::finishCreation(vm); > ASSERT(inherits(vm, info())); >- setInternalValue(vm, jsNaN()); > } > > void DateInstance::finishCreation(VM& vm, double time) > { > Base::finishCreation(vm); > ASSERT(inherits(vm, info())); >- setInternalValue(vm, jsNumber(timeClip(time))); >+ m_internalNumber = timeClip(time); > } > > void DateInstance::destroy(JSCell* cell) >diff --git a/Source/JavaScriptCore/runtime/DateInstance.h b/Source/JavaScriptCore/runtime/DateInstance.h >index 4630cfde483c5df87b52bae3732a02e6ef6db8f7..cad748d1e917fabe9356bdf516e96e944c08d517 100644 >--- a/Source/JavaScriptCore/runtime/DateInstance.h >+++ b/Source/JavaScriptCore/runtime/DateInstance.h >@@ -20,12 +20,11 @@ > > #pragma once > >-#include "JSCPoison.h" >-#include "JSWrapperObject.h" >+#include "JSDestructibleObject.h" > > namespace JSC { > >-class DateInstance final : public JSWrapperObject { >+class DateInstance final : public JSDestructibleObject { > protected: > JS_EXPORT_PRIVATE DateInstance(VM&, Structure*); > void finishCreation(VM&); >@@ -34,7 +33,7 @@ class DateInstance final : public JSWrapperObject { > JS_EXPORT_PRIVATE static void destroy(JSCell*); > > public: >- typedef JSWrapperObject Base; >+ using Base = JSDestructibleObject; > > static DateInstance* create(VM& vm, Structure* structure, double date) > { >@@ -50,7 +49,8 @@ class DateInstance final : public JSWrapperObject { > return instance; > } > >- double internalNumber() const { return internalValue().asNumber(); } >+ double internalNumber() const { return m_internalNumber; } >+ void setInternalNumber(double value) { m_internalNumber = value; } > > DECLARE_EXPORT_INFO; > >@@ -77,7 +77,8 @@ class DateInstance final : public JSWrapperObject { > JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTime(ExecState*) const; > JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const; > >- mutable PoisonedRefPtr<DateInstancePoison, DateInstanceData> m_data; >+ double m_internalNumber { PNaN }; >+ mutable RefPtr<DateInstanceData> m_data; > }; > > } // namespace JSC >diff --git a/Source/JavaScriptCore/runtime/DatePrototype.cpp b/Source/JavaScriptCore/runtime/DatePrototype.cpp >index 71edba95c1d0718de743d86de192af3b139a2ed1..fbd09756de27b12bdc9f32918b767b4fa8cea54f 100644 >--- a/Source/JavaScriptCore/runtime/DatePrototype.cpp >+++ b/Source/JavaScriptCore/runtime/DatePrototype.cpp >@@ -648,7 +648,7 @@ EncodedJSValue JSC_HOST_CALL dateProtoFuncGetTime(ExecState* exec) > if (UNLIKELY(!thisDateObj)) > return throwVMTypeError(exec, scope); > >- return JSValue::encode(thisDateObj->internalValue()); >+ return JSValue::encode(jsNumber(thisDateObj->internalNumber())); > } > > EncodedJSValue JSC_HOST_CALL dateProtoFuncGetFullYear(ExecState* exec) >@@ -923,9 +923,8 @@ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetTime(ExecState* exec) > > double milli = timeClip(exec->argument(0).toNumber(exec)); > RETURN_IF_EXCEPTION(scope, encodedJSValue()); >- JSValue result = jsNumber(milli); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ thisDateObj->setInternalNumber(milli); >+ return JSValue::encode(jsNumber(milli)); > } > > static EncodedJSValue setNewValueFromTimeArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType) >@@ -940,9 +939,8 @@ static EncodedJSValue setNewValueFromTimeArgs(ExecState* exec, int numArgsToUse, > double milli = thisDateObj->internalNumber(); > > if (!exec->argumentCount() || std::isnan(milli)) { >- JSValue result = jsNaN(); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ thisDateObj->setInternalNumber(PNaN); >+ return JSValue::encode(jsNaN()); > } > > double secs = floor(milli / msPerSecond); >@@ -959,15 +957,14 @@ static EncodedJSValue setNewValueFromTimeArgs(ExecState* exec, int numArgsToUse, > bool success = fillStructuresUsingTimeArgs(exec, numArgsToUse, &ms, &gregorianDateTime); > RETURN_IF_EXCEPTION(scope, encodedJSValue()); > if (!success) { >- JSValue result = jsNaN(); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ thisDateObj->setInternalNumber(PNaN); >+ return JSValue::encode(jsNaN()); > } > > double newUTCDate = gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputTimeType); >- JSValue result = jsNumber(timeClip(newUTCDate)); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ double result = timeClip(newUTCDate); >+ thisDateObj->setInternalNumber(result); >+ return JSValue::encode(jsNumber(result)); > } > > static EncodedJSValue setNewValueFromDateArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType) >@@ -980,9 +977,8 @@ static EncodedJSValue setNewValueFromDateArgs(ExecState* exec, int numArgsToUse, > return throwVMTypeError(exec, scope); > > if (!exec->argumentCount()) { >- JSValue result = jsNaN(); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ thisDateObj->setInternalNumber(PNaN); >+ return JSValue::encode(jsNaN()); > } > > double milli = thisDateObj->internalNumber(); >@@ -1004,15 +1000,14 @@ static EncodedJSValue setNewValueFromDateArgs(ExecState* exec, int numArgsToUse, > bool success = fillStructuresUsingDateArgs(exec, numArgsToUse, &ms, &gregorianDateTime); > RETURN_IF_EXCEPTION(scope, encodedJSValue()); > if (!success) { >- JSValue result = jsNaN(); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ thisDateObj->setInternalNumber(PNaN); >+ return JSValue::encode(jsNaN()); > } > > double newUTCDate = gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputTimeType); >- JSValue result = jsNumber(timeClip(newUTCDate)); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ double result = timeClip(newUTCDate); >+ thisDateObj->setInternalNumber(result); >+ return JSValue::encode(jsNumber(result)); > } > > EncodedJSValue JSC_HOST_CALL dateProtoFuncSetMilliSeconds(ExecState* exec) >@@ -1095,9 +1090,8 @@ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState* exec) > return throwVMTypeError(exec, scope); > > if (!exec->argumentCount()) { >- JSValue result = jsNaN(); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ thisDateObj->setInternalNumber(PNaN); >+ return JSValue::encode(jsNaN()); > } > > double milli = thisDateObj->internalNumber(); >@@ -1118,16 +1112,15 @@ EncodedJSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState* exec) > double year = exec->argument(0).toIntegerPreserveNaN(exec); > RETURN_IF_EXCEPTION(scope, encodedJSValue()); > if (!std::isfinite(year)) { >- JSValue result = jsNaN(); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ thisDateObj->setInternalNumber(PNaN); >+ return JSValue::encode(jsNaN()); > } > > gregorianDateTime.setYear(toInt32((year >= 0 && year <= 99) ? (year + 1900) : year)); > double timeInMilliseconds = gregorianDateTimeToMS(vm, gregorianDateTime, ms, WTF::LocalTime); >- JSValue result = jsNumber(timeClip(timeInMilliseconds)); >- thisDateObj->setInternalValue(vm, result); >- return JSValue::encode(result); >+ double result = timeClip(timeInMilliseconds); >+ thisDateObj->setInternalNumber(result); >+ return JSValue::encode(jsNumber(result)); > } > > EncodedJSValue JSC_HOST_CALL dateProtoFuncGetYear(ExecState* exec) >diff --git a/Source/JavaScriptCore/runtime/JSCPoison.h b/Source/JavaScriptCore/runtime/JSCPoison.h >index 1db4ac6d5463019d9fc6fa11883107c851da840d..65cf1927bea10865cf8091926b4265fae451b687 100644 >--- a/Source/JavaScriptCore/runtime/JSCPoison.h >+++ b/Source/JavaScriptCore/runtime/JSCPoison.h >@@ -33,7 +33,6 @@ namespace JSC { > #define FOR_EACH_JSC_POISON(v) \ > v(ArrayPrototype) \ > v(CodeBlock) \ >- v(DateInstance) \ > v(GlobalData) \ > v(JITCode) \ > v(JSAPIWrapperObject) \ >diff --git a/Source/JavaScriptCore/runtime/JSWrapperObject.h b/Source/JavaScriptCore/runtime/JSWrapperObject.h >index 211f8f854a7c512a59228e6ed9ee8f25d6cb0ecd..9117fdba54b3ec5d3e9d76a69a882a7e9cb1d596 100644 >--- a/Source/JavaScriptCore/runtime/JSWrapperObject.h >+++ b/Source/JavaScriptCore/runtime/JSWrapperObject.h >@@ -21,15 +21,15 @@ > > #pragma once > >-#include "JSDestructibleObject.h" >+#include "JSObject.h" > > namespace JSC { > > // This class is used as a base for classes such as String, >-// Number, Boolean and Date which are wrappers for primitive types. >-class JSWrapperObject : public JSDestructibleObject { >+// Number, Boolean and Symbol which are wrappers for primitive types. >+class JSWrapperObject : public JSNonFinalObject { > public: >- typedef JSDestructibleObject Base; >+ using Base = JSNonFinalObject; > > static size_t allocationSize(Checked<size_t> inlineCapacity) > { >@@ -65,7 +65,7 @@ class JSWrapperObject : public JSDestructibleObject { > }; > > inline JSWrapperObject::JSWrapperObject(VM& vm, Structure* structure) >- : JSDestructibleObject(vm, structure) >+ : Base(vm, structure) > { > } > >diff --git a/Source/JavaScriptCore/runtime/NumberObject.cpp b/Source/JavaScriptCore/runtime/NumberObject.cpp >index b76e247873fc670d8ee87b6271bb4b2a53bce68f..411ca223be1f4081cfb7a30b042e08bcf8a114ba 100644 >--- a/Source/JavaScriptCore/runtime/NumberObject.cpp >+++ b/Source/JavaScriptCore/runtime/NumberObject.cpp >@@ -30,10 +30,10 @@ namespace JSC { > > STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(NumberObject); > >-const ClassInfo NumberObject::s_info = { "Number", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(NumberObject) }; >+const ClassInfo NumberObject::s_info = { "Number", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(NumberObject) }; > > NumberObject::NumberObject(VM& vm, Structure* structure) >- : JSWrapperObject(vm, structure) >+ : Base(vm, structure) > { > } > >diff --git a/Source/JavaScriptCore/runtime/NumberObject.h b/Source/JavaScriptCore/runtime/NumberObject.h >index 9779fcbf5f5691c63b7c57cd78689ba9d7c1fca0..17f0e57a18bc5960a449183bd4515e420f7cdabd 100644 >--- a/Source/JavaScriptCore/runtime/NumberObject.h >+++ b/Source/JavaScriptCore/runtime/NumberObject.h >@@ -30,7 +30,7 @@ class NumberObject : public JSWrapperObject { > void finishCreation(VM&); > > public: >- typedef JSWrapperObject Base; >+ using Base = JSWrapperObject; > > static NumberObject* create(VM& vm, Structure* structure) > { >diff --git a/Source/JavaScriptCore/runtime/StringConstructor.cpp b/Source/JavaScriptCore/runtime/StringConstructor.cpp >index 12e2c3073685342c683f5b8e4e082d6d8b04e239..cf5b8a8df738254104e38ff80294d6ac293f61ea 100644 >--- a/Source/JavaScriptCore/runtime/StringConstructor.cpp >+++ b/Source/JavaScriptCore/runtime/StringConstructor.cpp >@@ -63,7 +63,7 @@ StringConstructor::StringConstructor(VM& vm, Structure* structure) > > void StringConstructor::finishCreation(VM& vm, StringPrototype* stringPrototype) > { >- Base::finishCreation(vm, stringPrototype->classInfo()->className); >+ Base::finishCreation(vm, stringPrototype->classInfo(vm)->className); > putDirectWithoutTransition(vm, vm.propertyNames->prototype, stringPrototype, PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete); > putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum); > } >diff --git a/Source/JavaScriptCore/runtime/StringObject.cpp b/Source/JavaScriptCore/runtime/StringObject.cpp >index 980c0725fe71c35b47e162f2e5c4ff2836e86ee7..8c6ffa7cf786f6fc2f174fcd0b734fc33aa9c06e 100644 >--- a/Source/JavaScriptCore/runtime/StringObject.cpp >+++ b/Source/JavaScriptCore/runtime/StringObject.cpp >@@ -30,10 +30,10 @@ namespace JSC { > > STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(StringObject); > >-const ClassInfo StringObject::s_info = { "String", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(StringObject) }; >+const ClassInfo StringObject::s_info = { "String", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(StringObject) }; > > StringObject::StringObject(VM& vm, Structure* structure) >- : JSWrapperObject(vm, structure) >+ : Base(vm, structure) > { > } > >diff --git a/Source/JavaScriptCore/runtime/StringObject.h b/Source/JavaScriptCore/runtime/StringObject.h >index 86a0fab9efc05041f2443d6f8390c1541842a7b4..8aedca634c48bfd63c1253559a800d2d36f91f28 100644 >--- a/Source/JavaScriptCore/runtime/StringObject.h >+++ b/Source/JavaScriptCore/runtime/StringObject.h >@@ -27,7 +27,7 @@ namespace JSC { > > class StringObject : public JSWrapperObject { > public: >- typedef JSWrapperObject Base; >+ using Base = JSWrapperObject; > static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | OverridesGetPropertyNames; > > static StringObject* create(VM& vm, Structure* structure) >@@ -59,7 +59,7 @@ class StringObject : public JSWrapperObject { > > DECLARE_EXPORT_INFO; > >- JSString* internalValue() const { return asString(JSWrapperObject::internalValue());} >+ JSString* internalValue() const { return asString(JSWrapperObject::internalValue()); } > > static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) > { >diff --git a/Source/JavaScriptCore/runtime/SymbolObject.cpp b/Source/JavaScriptCore/runtime/SymbolObject.cpp >index 767bf65aa4d5f29bafd3a6364fc7e5a83efd0454..3076d2eee97ca4ecbc34041cd1efeec77753a5b8 100644 >--- a/Source/JavaScriptCore/runtime/SymbolObject.cpp >+++ b/Source/JavaScriptCore/runtime/SymbolObject.cpp >@@ -33,10 +33,10 @@ namespace JSC { > > STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(SymbolObject); > >-const ClassInfo SymbolObject::s_info = { "Symbol", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(SymbolObject) }; >+const ClassInfo SymbolObject::s_info = { "Symbol", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(SymbolObject) }; > > SymbolObject::SymbolObject(VM& vm, Structure* structure) >- : JSWrapperObject(vm, structure) >+ : Base(vm, structure) > { > } > >diff --git a/Source/JavaScriptCore/runtime/SymbolObject.h b/Source/JavaScriptCore/runtime/SymbolObject.h >index a8477f5210536fd2cdddea8ec0e6c07bc4c9d0ea..82de09ee4f1f2df79927974aa3ebcd0198284731 100644 >--- a/Source/JavaScriptCore/runtime/SymbolObject.h >+++ b/Source/JavaScriptCore/runtime/SymbolObject.h >@@ -28,7 +28,7 @@ namespace JSC { > > class SymbolObject final : public JSWrapperObject { > public: >- typedef JSWrapperObject Base; >+ using Base = JSWrapperObject; > > static SymbolObject* create(VM& vm, Structure* structure) > {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
saam
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194743
: 362214