2011-04-15 Sheriff Bot <webkit.review.bot@gmail.com>
authorloislo@chromium.org <loislo@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 16 Apr 2011 05:41:56 +0000 (05:41 +0000)
committerloislo@chromium.org <loislo@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 16 Apr 2011 05:41:56 +0000 (05:41 +0000)
        Unreviewed, rolling out r84067.
        http://trac.webkit.org/changeset/84067
        https://bugs.webkit.org/show_bug.cgi?id=58724

        qt build are failing. (Requested by loislo2 on #webkit).

        * heap/MarkStack.h:
        (JSC::MarkStack::append):
        * runtime/JSValue.h:
        * runtime/WriteBarrier.h:
        (JSC::DeprecatedPtr::DeprecatedPtr):
        (JSC::DeprecatedPtr::get):
        (JSC::DeprecatedPtr::operator*):
        (JSC::DeprecatedPtr::operator->):
        (JSC::DeprecatedPtr::slot):
        (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
        (JSC::DeprecatedPtr::operator!):
        (JSC::operator==):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@84081 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/heap/MarkStack.h
Source/JavaScriptCore/runtime/JSValue.h
Source/JavaScriptCore/runtime/WriteBarrier.h

index b6ae086059ad202353910c9a3020ca2b2dd3411f..3c66ff653b719636159575c014dba80a90aff646 100644 (file)
@@ -1,3 +1,24 @@
+2011-04-15  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r84067.
+        http://trac.webkit.org/changeset/84067
+        https://bugs.webkit.org/show_bug.cgi?id=58724
+
+        qt build are failing. (Requested by loislo2 on #webkit).
+
+        * heap/MarkStack.h:
+        (JSC::MarkStack::append):
+        * runtime/JSValue.h:
+        * runtime/WriteBarrier.h:
+        (JSC::DeprecatedPtr::DeprecatedPtr):
+        (JSC::DeprecatedPtr::get):
+        (JSC::DeprecatedPtr::operator*):
+        (JSC::DeprecatedPtr::operator->):
+        (JSC::DeprecatedPtr::slot):
+        (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
+        (JSC::DeprecatedPtr::operator!):
+        (JSC::operator==):
+
 2011-04-15  Shishir Agrawal  <shishir@chromium.org>
 
         Reviewed by James Robinson.
index a77995af11e0dc27b872b5bd256bbd4d87e62414..f09536a32ec2fbf053b71ac04b3040e4bf449e5e 100644 (file)
@@ -64,6 +64,7 @@ namespace JSC {
         void deprecatedAppend(JSCell**);
         void deprecatedAppend(Register*);
         template <typename T> void append(WriteBarrierBase<T>*);
+        template <typename T> void append(DeprecatedPtr<T>*);
         
         ALWAYS_INLINE void deprecatedAppendValues(Register* registers, size_t count, MarkSetProperties properties = NoNullValues)
         {
@@ -217,6 +218,11 @@ namespace JSC {
             return;
         m_markSets.append(MarkSet(slot, slot + count, NoNullValues));
     }
+
+    template <typename T> inline void MarkStack::append(DeprecatedPtr<T>* slot)
+    {
+        internalAppend(*slot->slot());
+    }
     
     template <typename T> inline void MarkStack::append(WriteBarrierBase<T>* slot)
     {
index de50011327c0dc2a1e50e3c49f3f9d3edafcc3cf..ae9d02ccbad904a016b503bbb7beed53ebfcbdd3 100644 (file)
@@ -51,6 +51,7 @@ namespace JSC {
     struct ClassInfo;
     struct Instruction;
 
+    template <class T> class DeprecatedPtr;
     template <class T> class WriteBarrierBase;
 
     enum PreferredPrimitiveType { NoPreference, PreferNumber, PreferString };
@@ -235,6 +236,7 @@ namespace JSC {
 #endif
 
     private:
+        template <class T> JSValue(DeprecatedPtr<T>);
         template <class T> JSValue(WriteBarrierBase<T>);
 
         enum HashTableDeletedValueTag { HashTableDeletedValue };
index 32cb96847566e245d3e8ffc23542cd08220ac24b..943814bdc6486344a3cf7fe3f087d25712b5ab79 100644 (file)
@@ -43,6 +43,51 @@ inline void writeBarrier(JSGlobalData&, const JSCell*, JSCell*)
 typedef enum { } Unknown;
 typedef JSValue* HandleSlot;
 
+// FIXME: Remove all uses of this class.
+template <class T> class DeprecatedPtr {
+public:
+    DeprecatedPtr() : m_cell(0) { }
+    DeprecatedPtr(T* cell) : m_cell(reinterpret_cast<JSCell*>(cell)) { }
+    T* get() const { return reinterpret_cast<T*>(m_cell); }
+    T* operator*() const { return static_cast<T*>(m_cell); }
+    T* operator->() const { return static_cast<T*>(m_cell); }
+    
+    JSCell** slot() { return &m_cell; }
+    
+    typedef T* (DeprecatedPtr::*UnspecifiedBoolType);
+    operator UnspecifiedBoolType*() const { return m_cell ? reinterpret_cast<UnspecifiedBoolType*>(1) : 0; }
+
+    bool operator!() const { return !m_cell; }
+
+protected:
+    JSCell* m_cell;
+};
+
+// FIXME: Remove all uses of this class.
+template <> class DeprecatedPtr<Unknown> {
+public:
+    DeprecatedPtr() { }
+    DeprecatedPtr(JSValue value) : m_value(value) { }
+    DeprecatedPtr(JSCell* value) : m_value(value) { }
+    const JSValue& get() const { return m_value; }
+    const JSValue* operator*() const { return &m_value; }
+    const JSValue* operator->() const { return &m_value; }
+    
+    JSValue* slot() { return &m_value; }
+    
+    typedef JSValue (DeprecatedPtr::*UnspecifiedBoolType);
+    operator UnspecifiedBoolType*() const { return m_value ? reinterpret_cast<UnspecifiedBoolType*>(1) : 0; }
+    bool operator!() const { return !m_value; }
+    
+private:
+    JSValue m_value;
+};
+
+template <typename U, typename V> inline bool operator==(const DeprecatedPtr<U>& lhs, const DeprecatedPtr<V>& rhs)
+{
+    return lhs.get() == rhs.get();
+}
+
 template <typename T> struct JSValueChecker {
     static const bool IsJSValue = false;
 };