Title: [230025] trunk/Source/_javascript_Core
Revision
230025
Author
[email protected]
Date
2018-03-28 02:16:15 -0700 (Wed, 28 Mar 2018)

Log Message

[JSC] Move WeakValueRef class to its own file and use it from Objc and GLib
https://bugs.webkit.org/show_bug.cgi?id=184073

Reviewed by Yusuke Suzuki.

We currently have duplicated code in Obj and GLib implementations.

* API/JSManagedValue.mm:
(managedValueHandleOwner):
(-[JSManagedValue initWithValue:]):
* API/JSWeakValue.cpp: Added.
(JSC::JSWeakValue::~JSWeakValue):
(JSC::JSWeakValue::clear):
(JSC::JSWeakValue::isClear const):
(JSC::JSWeakValue::setPrimitive):
(JSC::JSWeakValue::setObject):
(JSC::JSWeakValue::setString):
* API/JSWeakValue.h: Added.
(JSC::JSWeakValue::isSet const):
(JSC::JSWeakValue::isPrimitive const):
(JSC::JSWeakValue::isObject const):
(JSC::JSWeakValue::isString const):
(JSC::JSWeakValue::object const):
(JSC::JSWeakValue::primitive const):
(JSC::JSWeakValue::string const):
* API/glib/JSCWeakValue.cpp:
* _javascript_Core.xcodeproj/project.pbxproj:
* Sources.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/_javascript_Core/API/JSManagedValue.mm (230024 => 230025)


--- trunk/Source/_javascript_Core/API/JSManagedValue.mm	2018-03-28 06:21:57 UTC (rev 230024)
+++ trunk/Source/_javascript_Core/API/JSManagedValue.mm	2018-03-28 09:16:15 UTC (rev 230025)
@@ -33,7 +33,7 @@
 #import "Heap.h"
 #import "JSContextInternal.h"
 #import "JSValueInternal.h"
-#import "Weak.h"
+#import "JSWeakValue.h"
 #import "WeakHandleOwner.h"
 #import "ObjcRuntimeExtras.h"
 #import "JSCInlines.h"
@@ -46,132 +46,16 @@
     bool isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown>, void* context, JSC::SlotVisitor&) override;
 };
 
-static JSManagedValueHandleOwner* managedValueHandleOwner()
+static JSManagedValueHandleOwner& managedValueHandleOwner()
 {
     static NeverDestroyed<JSManagedValueHandleOwner> jsManagedValueHandleOwner;
-    return &jsManagedValueHandleOwner.get();
+    return jsManagedValueHandleOwner;
 }
 
-class WeakValueRef {
-public:
-    WeakValueRef()
-        : m_tag(NotSet)
-    {
-    }
-
-    ~WeakValueRef()
-    {
-        clear();
-    }
-
-    void clear()
-    {
-        switch (m_tag) {
-        case NotSet:
-            return;
-        case Primitive:
-            u.m_primitive = JSC::JSValue();
-            return;
-        case Object:
-            u.m_object.clear();
-            return;
-        case String:
-            u.m_string.clear();
-            return;
-        }
-        RELEASE_ASSERT_NOT_REACHED();
-    }
-
-    bool isClear() const
-    {
-        switch (m_tag) {
-        case NotSet:
-            return true;
-        case Primitive:
-            return !u.m_primitive;
-        case Object:
-            return !u.m_object;
-        case String:
-            return !u.m_string;
-        }
-        RELEASE_ASSERT_NOT_REACHED();
-    }
-
-    bool isSet() const { return m_tag != NotSet; }
-    bool isPrimitive() const { return m_tag == Primitive; }
-    bool isObject() const { return m_tag == Object; }
-    bool isString() const { return m_tag == String; }
-
-    void setPrimitive(JSC::JSValue primitive)
-    {
-        ASSERT(!isSet());
-        ASSERT(!u.m_primitive);
-        ASSERT(primitive.isPrimitive());
-        m_tag = Primitive;
-        u.m_primitive = primitive;
-    }
-
-    void setObject(JSC::JSObject* object, void* context)
-    {
-        ASSERT(!isSet());
-        ASSERT(!u.m_object);
-        m_tag = Object;
-        JSC::Weak<JSC::JSObject> weak(object, managedValueHandleOwner(), context);
-        u.m_object.swap(weak);
-    }
-
-    void setString(JSC::JSString* string, void* context)
-    {
-        ASSERT(!isSet());
-        ASSERT(!u.m_object);
-        m_tag = String;
-        JSC::Weak<JSC::JSString> weak(string, managedValueHandleOwner(), context);
-        u.m_string.swap(weak);
-    }
-
-    JSC::JSObject* object()
-    {
-        ASSERT(isObject());
-        return u.m_object.get();
-    }
-
-    JSC::JSValue primitive()
-    {
-        ASSERT(isPrimitive());
-        return u.m_primitive;
-    }
-
-    JSC::JSString* string()
-    {
-        ASSERT(isString());
-        return u.m_string.get();
-    }
-
-private:
-    enum WeakTypeTag { NotSet, Primitive, Object, String };
-    WeakTypeTag m_tag;
-    union WeakValueUnion {
-    public:
-        WeakValueUnion ()
-            : m_primitive(JSC::JSValue())
-        {
-        }
-
-        ~WeakValueUnion()
-        {
-            ASSERT(!m_primitive);
-        }
-
-        JSC::JSValue m_primitive;
-        JSC::Weak<JSC::JSObject> m_object;
-        JSC::Weak<JSC::JSString> m_string;
-    } u;
-};
-
 @implementation JSManagedValue {
     JSC::Weak<JSC::JSGlobalObject> m_globalObject;
     RefPtr<JSC::JSLock> m_lock;
-    WeakValueRef m_weakValue;
+    JSC::JSWeakValue m_weakValue;
     NSMapTable *m_owners;
 }
 
@@ -203,7 +87,8 @@
 
     JSC::ExecState* exec = toJS([value.context JSGlobalContextRef]);
     JSC::JSGlobalObject* globalObject = exec->lexicalGlobalObject();
-    JSC::Weak<JSC::JSGlobalObject> weak(globalObject, managedValueHandleOwner(), self);
+    auto& owner = managedValueHandleOwner();
+    JSC::Weak<JSC::JSGlobalObject> weak(globalObject, &owner, self);
     m_globalObject.swap(weak);
 
     m_lock = &exec->vm().apiLock();
@@ -214,9 +99,9 @@
 
     JSC::JSValue jsValue = toJS(exec, [value JSValueRef]);
     if (jsValue.isObject())
-        m_weakValue.setObject(JSC::jsCast<JSC::JSObject*>(jsValue.asCell()), self);
+        m_weakValue.setObject(JSC::jsCast<JSC::JSObject*>(jsValue.asCell()), owner, self);
     else if (jsValue.isString())
-        m_weakValue.setString(JSC::jsCast<JSC::JSString*>(jsValue.asCell()), self);
+        m_weakValue.setString(JSC::jsCast<JSC::JSString*>(jsValue.asCell()), owner, self);
     else
         m_weakValue.setPrimitive(jsValue);
     return self;

Added: trunk/Source/_javascript_Core/API/JSWeakValue.cpp (0 => 230025)


--- trunk/Source/_javascript_Core/API/JSWeakValue.cpp	                        (rev 0)
+++ trunk/Source/_javascript_Core/API/JSWeakValue.cpp	2018-03-28 09:16:15 UTC (rev 230025)
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2013, 2016 Apple Inc.  All rights reserved.
+ * Copyright (C) 2018 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "JSWeakValue.h"
+
+#include "JSCInlines.h"
+#include "WeakHandleOwner.h"
+
+namespace JSC {
+
+JSWeakValue::~JSWeakValue()
+{
+    clear();
+}
+
+void JSWeakValue::clear()
+{
+    switch (m_tag) {
+    case WeakTypeTag::NotSet:
+        return;
+    case WeakTypeTag::Primitive:
+        m_value.primitive = JSValue();
+        return;
+    case WeakTypeTag::Object:
+        m_value.object.clear();
+        return;
+    case WeakTypeTag::String:
+        m_value.string.clear();
+        return;
+    }
+    RELEASE_ASSERT_NOT_REACHED();
+}
+
+bool JSWeakValue::isClear() const
+{
+    switch (m_tag) {
+    case WeakTypeTag::NotSet:
+        return true;
+    case WeakTypeTag::Primitive:
+        return !m_value.primitive;
+    case WeakTypeTag::Object:
+        return !m_value.object;
+    case WeakTypeTag::String:
+        return !m_value.string;
+    }
+    RELEASE_ASSERT_NOT_REACHED();
+}
+
+void JSWeakValue::setPrimitive(JSValue primitive)
+{
+    ASSERT(!isSet());
+    ASSERT(!m_value.primitive);
+    ASSERT(primitive.isPrimitive());
+    m_tag = WeakTypeTag::Primitive;
+    m_value.primitive = primitive;
+}
+
+void JSWeakValue::setObject(JSObject* object, WeakHandleOwner& owner, void* context)
+{
+    ASSERT(!isSet());
+    ASSERT(!m_value.object);
+    m_tag = WeakTypeTag::Object;
+    Weak<JSObject> weak(object, &owner, context);
+    m_value.object.swap(weak);
+}
+
+void JSWeakValue::setString(JSString* string, WeakHandleOwner& owner, void* context)
+{
+    ASSERT(!isSet());
+    ASSERT(!m_value.string);
+    m_tag = WeakTypeTag::String;
+    Weak<JSString> weak(string, &owner, context);
+    m_value.string.swap(weak);
+}
+
+} // namespace JSC

Added: trunk/Source/_javascript_Core/API/JSWeakValue.h (0 => 230025)


--- trunk/Source/_javascript_Core/API/JSWeakValue.h	                        (rev 0)
+++ trunk/Source/_javascript_Core/API/JSWeakValue.h	2018-03-28 09:16:15 UTC (rev 230025)
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2013, 2016 Apple Inc.  All rights reserved.
+ * Copyright (C) 2018 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "JSCJSValue.h"
+#include "Weak.h"
+
+namespace JSC {
+
+class JSObject;
+class JSString;
+class WeakHandleOwner;
+
+class JSWeakValue {
+public:
+    JSWeakValue() = default;
+    ~JSWeakValue();
+
+    void clear();
+    bool isClear() const;
+
+    bool isSet() const { return m_tag != WeakTypeTag::NotSet; }
+    bool isPrimitive() const { return m_tag == WeakTypeTag::Primitive; }
+    bool isObject() const { return m_tag == WeakTypeTag::Object; }
+    bool isString() const { return m_tag == WeakTypeTag::String; }
+
+    void setPrimitive(JSValue);
+    void setObject(JSObject*, WeakHandleOwner&, void* context);
+    void setString(JSString*, WeakHandleOwner&, void* context);
+
+    JSObject* object() const
+    {
+        ASSERT(isObject());
+        return m_value.object.get();
+    }
+
+    JSValue primitive() const
+    {
+        ASSERT(isPrimitive());
+        return m_value.primitive;
+    }
+
+    JSString* string() const
+    {
+        ASSERT(isString());
+        return m_value.string.get();
+    }
+
+private:
+    enum class WeakTypeTag { NotSet, Primitive, Object, String };
+
+    WeakTypeTag m_tag { WeakTypeTag::NotSet };
+
+    union WeakValueUnion {
+        WeakValueUnion()
+            : primitive(JSValue())
+        {
+        }
+
+        ~WeakValueUnion()
+        {
+            ASSERT(!primitive);
+        }
+
+        JSValue primitive;
+        Weak<JSObject> object;
+        Weak<JSString> string;
+    } m_value;
+};
+
+} // namespace JSC

Modified: trunk/Source/_javascript_Core/API/glib/JSCWeakValue.cpp (230024 => 230025)


--- trunk/Source/_javascript_Core/API/glib/JSCWeakValue.cpp	2018-03-28 06:21:57 UTC (rev 230024)
+++ trunk/Source/_javascript_Core/API/glib/JSCWeakValue.cpp	2018-03-28 09:16:15 UTC (rev 230025)
@@ -24,7 +24,7 @@
 #include "JSCContextPrivate.h"
 #include "JSCInlines.h"
 #include "JSCValuePrivate.h"
-#include "Weak.h"
+#include "JSWeakValue.h"
 #include "WeakHandleOwner.h"
 #include <wtf/glib/GRefPtr.h>
 #include <wtf/glib/GUniquePtr.h>
@@ -53,124 +53,10 @@
     LAST_SIGNAL
 };
 
-// FIXME: move this to its own file to be shared by GLib and Objc APIs.
-class WeakValueRef {
-public:
-    ~WeakValueRef()
-    {
-        clear();
-    }
-
-    void clear()
-    {
-        switch (m_tag) {
-        case WeakTypeTag::NotSet:
-            return;
-        case WeakTypeTag::Primitive:
-            u.m_primitive = JSC::JSValue();
-            return;
-        case WeakTypeTag::Object:
-            u.m_object.clear();
-            return;
-        case WeakTypeTag::String:
-            u.m_string.clear();
-            return;
-        }
-        RELEASE_ASSERT_NOT_REACHED();
-    }
-
-    bool isClear() const
-    {
-        switch (m_tag) {
-        case WeakTypeTag::NotSet:
-            return true;
-        case WeakTypeTag::Primitive:
-            return !u.m_primitive;
-        case WeakTypeTag::Object:
-            return !u.m_object;
-        case WeakTypeTag::String:
-            return !u.m_string;
-        }
-        RELEASE_ASSERT_NOT_REACHED();
-    }
-
-    bool isSet() const { return m_tag != WeakTypeTag::NotSet; }
-    bool isPrimitive() const { return m_tag == WeakTypeTag::Primitive; }
-    bool isObject() const { return m_tag == WeakTypeTag::Object; }
-    bool isString() const { return m_tag == WeakTypeTag::String; }
-
-    void setPrimitive(JSC::JSValue primitive)
-    {
-        ASSERT(!isSet());
-        ASSERT(!u.m_primitive);
-        ASSERT(primitive.isPrimitive());
-        m_tag = WeakTypeTag::Primitive;
-        u.m_primitive = primitive;
-    }
-
-    void setObject(JSC::JSObject* object, JSC::WeakHandleOwner& owner, void* context)
-    {
-        ASSERT(!isSet());
-        ASSERT(!u.m_object);
-        m_tag = WeakTypeTag::Object;
-        JSC::Weak<JSC::JSObject> weak(object, &owner, context);
-        u.m_object.swap(weak);
-    }
-
-    void setString(JSC::JSString* string, JSC::WeakHandleOwner& owner, void* context)
-    {
-        ASSERT(!isSet());
-        ASSERT(!u.m_object);
-        m_tag = WeakTypeTag::String;
-        JSC::Weak<JSC::JSString> weak(string, &owner, context);
-        u.m_string.swap(weak);
-    }
-
-    JSC::JSObject* object() const
-    {
-        ASSERT(isObject());
-        return u.m_object.get();
-    }
-
-    JSC::JSValue primitive() const
-    {
-        ASSERT(isPrimitive());
-        return u.m_primitive;
-    }
-
-    JSC::JSString* string() const
-    {
-        ASSERT(isString());
-        return u.m_string.get();
-    }
-
-private:
-    enum class WeakTypeTag { NotSet, Primitive, Object, String };
-
-    WeakTypeTag m_tag { WeakTypeTag::NotSet };
-
-    union WeakValueUnion {
-    public:
-        WeakValueUnion()
-            : m_primitive(JSC::JSValue())
-        {
-        }
-
-        ~WeakValueUnion()
-        {
-            ASSERT(!m_primitive);
-        }
-
-        JSC::JSValue m_primitive;
-        JSC::Weak<JSC::JSObject> m_object;
-        JSC::Weak<JSC::JSString> m_string;
-    } u;
-};
-
 struct _JSCWeakValuePrivate {
     JSC::Weak<JSC::JSGlobalObject> globalObject;
     RefPtr<JSC::JSLock> lock;
-    WeakValueRef weakValueRef;
+    JSC::JSWeakValue weakValueRef;
 };
 
 static guint signals[LAST_SIGNAL] = { 0, };

Modified: trunk/Source/_javascript_Core/ChangeLog (230024 => 230025)


--- trunk/Source/_javascript_Core/ChangeLog	2018-03-28 06:21:57 UTC (rev 230024)
+++ trunk/Source/_javascript_Core/ChangeLog	2018-03-28 09:16:15 UTC (rev 230025)
@@ -1,3 +1,34 @@
+2018-03-28  Carlos Garcia Campos  <[email protected]>
+
+        [JSC] Move WeakValueRef class to its own file and use it from Objc and GLib
+        https://bugs.webkit.org/show_bug.cgi?id=184073
+
+        Reviewed by Yusuke Suzuki.
+
+        We currently have duplicated code in Obj and GLib implementations.
+
+        * API/JSManagedValue.mm:
+        (managedValueHandleOwner):
+        (-[JSManagedValue initWithValue:]):
+        * API/JSWeakValue.cpp: Added.
+        (JSC::JSWeakValue::~JSWeakValue):
+        (JSC::JSWeakValue::clear):
+        (JSC::JSWeakValue::isClear const):
+        (JSC::JSWeakValue::setPrimitive):
+        (JSC::JSWeakValue::setObject):
+        (JSC::JSWeakValue::setString):
+        * API/JSWeakValue.h: Added.
+        (JSC::JSWeakValue::isSet const):
+        (JSC::JSWeakValue::isPrimitive const):
+        (JSC::JSWeakValue::isObject const):
+        (JSC::JSWeakValue::isString const):
+        (JSC::JSWeakValue::object const):
+        (JSC::JSWeakValue::primitive const):
+        (JSC::JSWeakValue::string const):
+        * API/glib/JSCWeakValue.cpp:
+        * _javascript_Core.xcodeproj/project.pbxproj:
+        * Sources.txt:
+
 2018-03-27  Carlos Garcia Campos  <[email protected]>
 
         [GLIB] Add JSCWeakValue to _javascript_Core GLib API

Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (230024 => 230025)


--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2018-03-28 06:21:57 UTC (rev 230024)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2018-03-28 09:16:15 UTC (rev 230025)
@@ -1130,6 +1130,7 @@
 		79EFD4841EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.h in Headers */ = {isa = PBXBuildFile; fileRef = 79EFD4821EBC045C00F3DFEA /* JSWebAssemblyCodeBlockHeapCellType.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		79F8FC1F1B9FED0F00CA66AB /* DFGMaximalFlushInsertionPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F8FC1D1B9FED0F00CA66AB /* DFGMaximalFlushInsertionPhase.h */; };
 		79FC8A081E32E9F000D88F0E /* DFGRegisteredStructure.h in Headers */ = {isa = PBXBuildFile; fileRef = 79FC8A071E32E9F000D88F0E /* DFGRegisteredStructure.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		7A9774A8206B82E4008D03D0 /* JSWeakValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A9774A7206B82C9008D03D0 /* JSWeakValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7BC547D31B6959A100959B58 /* WasmFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BC547D21B69599B00959B58 /* WasmFormat.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7C008CDB187124BB00955C24 /* JSPromiseDeferred.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CD9187124BB00955C24 /* JSPromiseDeferred.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7C008CE7187631B600955C24 /* Microtask.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CE5187631B600955C24 /* Microtask.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -3661,6 +3662,8 @@
 		79F8FC1C1B9FED0F00CA66AB /* DFGMaximalFlushInsertionPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGMaximalFlushInsertionPhase.cpp; path = dfg/DFGMaximalFlushInsertionPhase.cpp; sourceTree = "<group>"; };
 		79F8FC1D1B9FED0F00CA66AB /* DFGMaximalFlushInsertionPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGMaximalFlushInsertionPhase.h; path = dfg/DFGMaximalFlushInsertionPhase.h; sourceTree = "<group>"; };
 		79FC8A071E32E9F000D88F0E /* DFGRegisteredStructure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGRegisteredStructure.h; path = dfg/DFGRegisteredStructure.h; sourceTree = "<group>"; };
+		7A9774A6206B828C008D03D0 /* JSWeakValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWeakValue.cpp; sourceTree = "<group>"; };
+		7A9774A7206B82C9008D03D0 /* JSWeakValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWeakValue.h; sourceTree = "<group>"; };
 		7BC547D21B69599B00959B58 /* WasmFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmFormat.h; sourceTree = "<group>"; };
 		7C008CD8187124BB00955C24 /* JSPromiseDeferred.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSPromiseDeferred.cpp; sourceTree = "<group>"; };
 		7C008CD9187124BB00955C24 /* JSPromiseDeferred.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPromiseDeferred.h; sourceTree = "<group>"; };
@@ -5857,6 +5860,8 @@
 				A7482B791166CDEA003B0712 /* JSWeakObjectMapRefPrivate.h */,
 				0F0B28691EB8E6CD000EB5D2 /* JSWeakPrivate.cpp */,
 				0F0B286A1EB8E6CD000EB5D2 /* JSWeakPrivate.h */,
+				7A9774A6206B828C008D03D0 /* JSWeakValue.cpp */,
+				7A9774A7206B82C9008D03D0 /* JSWeakValue.h */,
 				86E3C60C167BAB87006D760A /* JSWrapperMap.h */,
 				86E3C60B167BAB87006D760A /* JSWrapperMap.mm */,
 				86F3EEB9168CCF750077B92A /* ObjCCallbackFunction.h */,
@@ -9039,6 +9044,7 @@
 				A503FA1E188E0FB000110F14 /* JSJavaScriptCallFramePrototype.h in Headers */,
 				7013CA8C1B491A9400CAE613 /* JSJob.h in Headers */,
 				BC18C4160E16F5CD00B34460 /* JSLexicalEnvironment.h in Headers */,
+				7A9774A8206B82E4008D03D0 /* JSWeakValue.h in Headers */,
 				BC18C4230E16F5CD00B34460 /* JSLock.h in Headers */,
 				C25D709C16DE99F400FCA6BC /* JSManagedValue.h in Headers */,
 				2A4BB7F318A41179008A0FCD /* JSManagedValueInternal.h in Headers */,

Modified: trunk/Source/_javascript_Core/Sources.txt (230024 => 230025)


--- trunk/Source/_javascript_Core/Sources.txt	2018-03-28 06:21:57 UTC (rev 230024)
+++ trunk/Source/_javascript_Core/Sources.txt	2018-03-28 09:16:15 UTC (rev 230025)
@@ -37,6 +37,7 @@
 API/JSValueRef.cpp
 API/JSWeakObjectMapRefPrivate.cpp
 API/JSWeakPrivate.cpp
+API/JSWeakValue.cpp
 API/OpaqueJSString.cpp
 
 assembler/ARMAssembler.cpp
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to