Title: [241720] releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime
Revision
241720
Author
carlo...@webkit.org
Date
2019-02-18 09:14:55 -0800 (Mon, 18 Feb 2019)

Log Message

Revert r241713 - Merge r241649 - [JSC] JSWrapperObject should not be destructible"

This reverts commit r241713.

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BigIntObject.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BigIntObject.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BigIntObject.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -45,7 +45,7 @@
 }
 
 BigIntObject::BigIntObject(VM& vm, Structure* structure)
-    : Base(vm, structure)
+    : JSWrapperObject(vm, structure)
 {
 }
 

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanConstructor.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanConstructor.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanConstructor.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -57,7 +57,7 @@
 
 void BooleanConstructor::finishCreation(VM& vm, BooleanPrototype* booleanPrototype)
 {
-    Base::finishCreation(vm, booleanPrototype->classInfo(vm)->className);
+    Base::finishCreation(vm, booleanPrototype->classInfo()->className);
     putDirectWithoutTransition(vm, vm.propertyNames->prototype, booleanPrototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
 }

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanObject.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanObject.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanObject.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -28,10 +28,10 @@
 
 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(BooleanObject);
 
-const ClassInfo BooleanObject::s_info = { "Boolean", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(BooleanObject) };
+const ClassInfo BooleanObject::s_info = { "Boolean", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(BooleanObject) };
 
 BooleanObject::BooleanObject(VM& vm, Structure* structure)
-    : Base(vm, structure)
+    : JSWrapperObject(vm, structure)
 {
 }
 

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanObject.h (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanObject.h	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/BooleanObject.h	2019-02-18 17:14:55 UTC (rev 241720)
@@ -30,7 +30,7 @@
     JS_EXPORT_PRIVATE void finishCreation(VM&);
 
 public:
-    using Base = JSWrapperObject;
+    typedef JSWrapperObject Base;
 
     static BooleanObject* create(VM& vm, Structure* structure)
     {

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DateInstance.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DateInstance.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DateInstance.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -32,10 +32,10 @@
 
 using namespace WTF;
 
-const ClassInfo DateInstance::s_info = {"Date", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(DateInstance)};
+const ClassInfo DateInstance::s_info = {"Date", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(DateInstance)};
 
 DateInstance::DateInstance(VM& vm, Structure* structure)
-    : Base(vm, structure)
+    : JSWrapperObject(vm, structure)
 {
 }
 
@@ -43,6 +43,7 @@
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
+    setInternalValue(vm, jsNaN());
 }
 
 void DateInstance::finishCreation(VM& vm, double time)
@@ -49,7 +50,7 @@
 {
     Base::finishCreation(vm);
     ASSERT(inherits(vm, info()));
-    m_internalNumber = timeClip(time);
+    setInternalValue(vm, jsNumber(timeClip(time)));
 }
 
 void DateInstance::destroy(JSCell* cell)

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DateInstance.h (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DateInstance.h	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DateInstance.h	2019-02-18 17:14:55 UTC (rev 241720)
@@ -20,11 +20,12 @@
 
 #pragma once
 
-#include "JSDestructibleObject.h"
+#include "JSCPoison.h"
+#include "JSWrapperObject.h"
 
 namespace JSC {
 
-class DateInstance final : public JSDestructibleObject {
+class DateInstance final : public JSWrapperObject {
 protected:
     JS_EXPORT_PRIVATE DateInstance(VM&, Structure*);
     void finishCreation(VM&);
@@ -33,7 +34,7 @@
     JS_EXPORT_PRIVATE static void destroy(JSCell*);
 
 public:
-    using Base = JSDestructibleObject;
+    typedef JSWrapperObject Base;
 
     static DateInstance* create(VM& vm, Structure* structure, double date)
     {
@@ -49,8 +50,7 @@
         return instance;
     }
 
-    double internalNumber() const { return m_internalNumber; }
-    void setInternalNumber(double value) { m_internalNumber = value; }
+    double internalNumber() const { return internalValue().asNumber(); }
 
     DECLARE_EXPORT_INFO;
 
@@ -77,8 +77,7 @@
     JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTime(ExecState*) const;
     JS_EXPORT_PRIVATE const GregorianDateTime* calculateGregorianDateTimeUTC(ExecState*) const;
 
-    double m_internalNumber { PNaN };
-    mutable RefPtr<DateInstanceData> m_data;
+    mutable PoisonedRefPtr<DateInstancePoison, DateInstanceData> m_data;
 };
 
 } // namespace JSC

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DatePrototype.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DatePrototype.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/DatePrototype.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -648,7 +648,7 @@
     if (UNLIKELY(!thisDateObj))
         return throwVMTypeError(exec, scope);
 
-    return JSValue::encode(jsNumber(thisDateObj->internalNumber()));
+    return JSValue::encode(thisDateObj->internalValue());
 }
 
 EncodedJSValue JSC_HOST_CALL dateProtoFuncGetFullYear(ExecState* exec)
@@ -923,8 +923,9 @@
 
     double milli = timeClip(exec->argument(0).toNumber(exec));
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
-    thisDateObj->setInternalNumber(milli);
-    return JSValue::encode(jsNumber(milli));
+    JSValue result = jsNumber(milli);
+    thisDateObj->setInternalValue(vm, result);
+    return JSValue::encode(result);
 }
 
 static EncodedJSValue setNewValueFromTimeArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType)
@@ -939,8 +940,9 @@
     double milli = thisDateObj->internalNumber();
 
     if (!exec->argumentCount() || std::isnan(milli)) {
-        thisDateObj->setInternalNumber(PNaN);
-        return JSValue::encode(jsNaN());
+        JSValue result = jsNaN();
+        thisDateObj->setInternalValue(vm, result);
+        return JSValue::encode(result);
     }
      
     double secs = floor(milli / msPerSecond);
@@ -957,14 +959,15 @@
     bool success = fillStructuresUsingTimeArgs(exec, numArgsToUse, &ms, &gregorianDateTime);
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
     if (!success) {
-        thisDateObj->setInternalNumber(PNaN);
-        return JSValue::encode(jsNaN());
+        JSValue result = jsNaN();
+        thisDateObj->setInternalValue(vm, result);
+        return JSValue::encode(result);
     } 
 
     double newUTCDate = gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputTimeType);
-    double result = timeClip(newUTCDate);
-    thisDateObj->setInternalNumber(result);
-    return JSValue::encode(jsNumber(result));
+    JSValue result = jsNumber(timeClip(newUTCDate));
+    thisDateObj->setInternalValue(vm, result);
+    return JSValue::encode(result);
 }
 
 static EncodedJSValue setNewValueFromDateArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType)
@@ -977,8 +980,9 @@
         return throwVMTypeError(exec, scope);
 
     if (!exec->argumentCount()) {
-        thisDateObj->setInternalNumber(PNaN);
-        return JSValue::encode(jsNaN());
+        JSValue result = jsNaN();
+        thisDateObj->setInternalValue(vm, result);
+        return JSValue::encode(result);
     }
 
     double milli = thisDateObj->internalNumber();
@@ -1000,14 +1004,15 @@
     bool success = fillStructuresUsingDateArgs(exec, numArgsToUse, &ms, &gregorianDateTime);
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
     if (!success) {
-        thisDateObj->setInternalNumber(PNaN);
-        return JSValue::encode(jsNaN());
+        JSValue result = jsNaN();
+        thisDateObj->setInternalValue(vm, result);
+        return JSValue::encode(result);
     } 
 
     double newUTCDate = gregorianDateTimeToMS(vm, gregorianDateTime, ms, inputTimeType);
-    double result = timeClip(newUTCDate);
-    thisDateObj->setInternalNumber(result);
-    return JSValue::encode(jsNumber(result));
+    JSValue result = jsNumber(timeClip(newUTCDate));
+    thisDateObj->setInternalValue(vm, result);
+    return JSValue::encode(result);
 }
 
 EncodedJSValue JSC_HOST_CALL dateProtoFuncSetMilliSeconds(ExecState* exec)
@@ -1090,8 +1095,9 @@
         return throwVMTypeError(exec, scope);
 
     if (!exec->argumentCount()) { 
-        thisDateObj->setInternalNumber(PNaN);
-        return JSValue::encode(jsNaN());
+        JSValue result = jsNaN();
+        thisDateObj->setInternalValue(vm, result);
+        return JSValue::encode(result);
     }
 
     double milli = thisDateObj->internalNumber();
@@ -1112,15 +1118,16 @@
     double year = exec->argument(0).toIntegerPreserveNaN(exec);
     RETURN_IF_EXCEPTION(scope, encodedJSValue());
     if (!std::isfinite(year)) {
-        thisDateObj->setInternalNumber(PNaN);
-        return JSValue::encode(jsNaN());
+        JSValue result = jsNaN();
+        thisDateObj->setInternalValue(vm, result);
+        return JSValue::encode(result);
     }
 
     gregorianDateTime.setYear(toInt32((year >= 0 && year <= 99) ? (year + 1900) : year));
     double timeInMilliseconds = gregorianDateTimeToMS(vm, gregorianDateTime, ms, WTF::LocalTime);
-    double result = timeClip(timeInMilliseconds);
-    thisDateObj->setInternalNumber(result);
-    return JSValue::encode(jsNumber(result));
+    JSValue result = jsNumber(timeClip(timeInMilliseconds));
+    thisDateObj->setInternalValue(vm, result);
+    return JSValue::encode(result);
 }
 
 EncodedJSValue JSC_HOST_CALL dateProtoFuncGetYear(ExecState* exec)

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSCPoison.h (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSCPoison.h	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSCPoison.h	2019-02-18 17:14:55 UTC (rev 241720)
@@ -33,6 +33,7 @@
 #define FOR_EACH_JSC_POISON(v) \
     v(ArrayPrototype) \
     v(CodeBlock) \
+    v(DateInstance) \
     v(GlobalData) \
     v(JITCode) \
     v(JSAPIWrapperObject) \

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSWrapperObject.h (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSWrapperObject.h	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/JSWrapperObject.h	2019-02-18 17:14:55 UTC (rev 241720)
@@ -21,15 +21,15 @@
 
 #pragma once
 
-#include "JSObject.h"
+#include "JSDestructibleObject.h"
 
 namespace JSC {
 
 // This class is used as a base for classes such as String,
-// Number, Boolean and Symbol which are wrappers for primitive types.
-class JSWrapperObject : public JSNonFinalObject {
+// Number, Boolean and Date which are wrappers for primitive types.
+class JSWrapperObject : public JSDestructibleObject {
 public:
-    using Base = JSNonFinalObject;
+    typedef JSDestructibleObject Base;
 
     static size_t allocationSize(Checked<size_t> inlineCapacity)
     {
@@ -65,7 +65,7 @@
 };
 
 inline JSWrapperObject::JSWrapperObject(VM& vm, Structure* structure)
-    : Base(vm, structure)
+    : JSDestructibleObject(vm, structure)
 {
 }
 

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberObject.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberObject.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberObject.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -30,10 +30,10 @@
 
 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(NumberObject);
 
-const ClassInfo NumberObject::s_info = { "Number", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(NumberObject) };
+const ClassInfo NumberObject::s_info = { "Number", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(NumberObject) };
 
 NumberObject::NumberObject(VM& vm, Structure* structure)
-    : Base(vm, structure)
+    : JSWrapperObject(vm, structure)
 {
 }
 

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberObject.h (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberObject.h	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/NumberObject.h	2019-02-18 17:14:55 UTC (rev 241720)
@@ -30,7 +30,7 @@
     void finishCreation(VM&);
 
 public:
-    using Base = JSWrapperObject;
+    typedef JSWrapperObject Base;
 
     static NumberObject* create(VM& vm, Structure* structure)
     {

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringConstructor.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringConstructor.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringConstructor.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -63,7 +63,7 @@
 
 void StringConstructor::finishCreation(VM& vm, StringPrototype* stringPrototype)
 {
-    Base::finishCreation(vm, stringPrototype->classInfo(vm)->className);
+    Base::finishCreation(vm, stringPrototype->classInfo()->className);
     putDirectWithoutTransition(vm, vm.propertyNames->prototype, stringPrototype, PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
     putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
 }

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringObject.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringObject.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringObject.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -30,10 +30,10 @@
 
 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(StringObject);
 
-const ClassInfo StringObject::s_info = { "String", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(StringObject) };
+const ClassInfo StringObject::s_info = { "String", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(StringObject) };
 
 StringObject::StringObject(VM& vm, Structure* structure)
-    : Base(vm, structure)
+    : JSWrapperObject(vm, structure)
 {
 }
 

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringObject.h (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringObject.h	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/StringObject.h	2019-02-18 17:14:55 UTC (rev 241720)
@@ -27,7 +27,7 @@
 
 class StringObject : public JSWrapperObject {
 public:
-    using Base = JSWrapperObject;
+    typedef JSWrapperObject Base;
     static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | OverridesGetPropertyNames;
 
     static StringObject* create(VM& vm, Structure* structure)
@@ -59,7 +59,7 @@
 
     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)
     {

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/SymbolObject.cpp (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/SymbolObject.cpp	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/SymbolObject.cpp	2019-02-18 17:14:55 UTC (rev 241720)
@@ -33,10 +33,10 @@
 
 STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(SymbolObject);
 
-const ClassInfo SymbolObject::s_info = { "Symbol", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(SymbolObject) };
+const ClassInfo SymbolObject::s_info = { "Symbol", &JSWrapperObject::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(SymbolObject) };
 
 SymbolObject::SymbolObject(VM& vm, Structure* structure)
-    : Base(vm, structure)
+    : JSWrapperObject(vm, structure)
 {
 }
 

Modified: releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/SymbolObject.h (241719 => 241720)


--- releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/SymbolObject.h	2019-02-18 16:53:32 UTC (rev 241719)
+++ releases/WebKitGTK/webkit-2.24/Source/_javascript_Core/runtime/SymbolObject.h	2019-02-18 17:14:55 UTC (rev 241720)
@@ -28,7 +28,7 @@
 
 class SymbolObject final : public JSWrapperObject {
 public:
-    using Base = JSWrapperObject;
+    typedef JSWrapperObject Base;
 
     static SymbolObject* create(VM& vm, Structure* structure)
     {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to