2011-04-12 Geoffrey Garen <ggaren@apple.com>
authorggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Apr 2011 21:12:33 +0000 (21:12 +0000)
committerggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Apr 2011 21:12:33 +0000 (21:12 +0000)
        Reviewed by Sam Weinig.

        Cleaned up some Vector traits, and added missing Vector traits for handles
        https://bugs.webkit.org/show_bug.cgi?id=58372

        * heap/Local.h: Inherit from SimpleClassVectorTraits to avoid duplication.

        * heap/Strong.h: Ditto.

        * heap/Weak.h: Ditto.

        * parser/JSParser.cpp: Fixed a traits error. No test case because this
        particular trait is not currently exercised by the parser.

        * runtime/UString.h: No need to override canInitializeWithMemset, since
        our base class sets it to true.

        * wtf/VectorTraits.h: Inherit from VectorTraitsBase to avoid duplication.

        * wtf/text/WTFString.h: No need to override canInitializeWithMemset, since
        our base class sets it to true.
2011-04-12  Geoffrey Garen  <ggaren@apple.com>

        Reviewed by Sam Weinig.

        Cleaned up some Vector traits, and added missing Vector traits for handles
        https://bugs.webkit.org/show_bug.cgi?id=58372

        * platform/graphics/BitmapImage.h: Added a FIXME because the current
        Vector traits for FrameData are logically incorrect, but I couldn't find
        a place where this currently results in bad behavior, and it's not
        immediately obvious what the right solution is.

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/heap/Local.h
Source/JavaScriptCore/heap/Strong.h
Source/JavaScriptCore/heap/Weak.h
Source/JavaScriptCore/parser/JSParser.cpp
Source/JavaScriptCore/runtime/UString.h
Source/JavaScriptCore/wtf/VectorTraits.h
Source/JavaScriptCore/wtf/text/WTFString.h
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/BitmapImage.h

index 126db9a..5721e3b 100644 (file)
@@ -1,3 +1,27 @@
+2011-04-12  Geoffrey Garen  <ggaren@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Cleaned up some Vector traits, and added missing Vector traits for handles
+        https://bugs.webkit.org/show_bug.cgi?id=58372
+
+        * heap/Local.h: Inherit from SimpleClassVectorTraits to avoid duplication.
+
+        * heap/Strong.h: Ditto.
+
+        * heap/Weak.h: Ditto.
+
+        * parser/JSParser.cpp: Fixed a traits error. No test case because this
+        particular trait is not currently exercised by the parser.
+
+        * runtime/UString.h: No need to override canInitializeWithMemset, since
+        our base class sets it to true.
+
+        * wtf/VectorTraits.h: Inherit from VectorTraitsBase to avoid duplication.
+
+        * wtf/text/WTFString.h: No need to override canInitializeWithMemset, since
+        our base class sets it to true.
+
 2011-04-12  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
 
         Reviewed by Eric Seidel.
index 9739a31..0d3ce23 100644 (file)
@@ -141,14 +141,10 @@ private:
 
 namespace WTF {
 
-template<typename T> struct VectorTraits<JSC::Local<T> > {
+template<typename T> struct VectorTraits<JSC::Local<T> > : SimpleClassVectorTraits {
     static const bool needsDestruction = false;
-    static const bool needsInitialization = true;
     static const bool canInitializeWithMemset = false;
-    static const bool canMoveWithMemcpy = true;
-    static const bool canCopyWithMemcpy = false;
-    static const bool canFillWithMemset = false;
-    static const bool canCompareWithMemcmp = true;
+    static const bool canCompareWithMemcmp = false;
 };
 
 }
index 0798588..25a8b78 100644 (file)
@@ -137,10 +137,14 @@ private:
     }
 };
 
-}
+} // namespace JSC
 
 namespace WTF {
 
+template<typename T> struct VectorTraits<JSC::Strong<T> > : SimpleClassVectorTraits {
+    static const bool canCompareWithMemcmp = false;
+};
+
 template<typename P> struct HashTraits<JSC::Strong<P> > : GenericHashTraits<JSC::Strong<P> > {
     static const bool emptyValueIsZero = true;
     static JSC::Strong<P> emptyValue() { return JSC::Strong<P>(); }
index 45b3083..cfb9bd5 100644 (file)
@@ -108,4 +108,12 @@ private:
 
 } // namespace JSC
 
+namespace WTF {
+
+template<typename T> struct VectorTraits<JSC::Weak<T> > : SimpleClassVectorTraits {
+    static const bool canCompareWithMemcmp = false;
+};
+
+}
+
 #endif // Weak_h
index 9245eb0..314691d 100644 (file)
@@ -2168,5 +2168,7 @@ template <class TreeBuilder> TreeExpression JSParser::parseUnaryExpression(TreeB
 
 namespace WTF
 {
-    template <> struct VectorTraits<JSC::JSParser::Scope> : SimpleClassVectorTraits { };
+    template <> struct VectorTraits<JSC::JSParser::Scope> : SimpleClassVectorTraits {
+        static const bool canInitializeWithMemset = false; // Not all Scope data members initialize to 0.
+    };
 }
index 8f6c083..b98e7b4 100644 (file)
@@ -252,10 +252,7 @@ template<> struct DefaultHash<JSC::UString> {
     typedef JSC::UStringHash Hash;
 };
 
-template <> struct VectorTraits<JSC::UString> : SimpleClassVectorTraits
-{
-    static const bool canInitializeWithMemset = true;
-};
+template <> struct VectorTraits<JSC::UString> : SimpleClassVectorTraits { };
 
 } // namespace WTF
 
index 3f33b29..6777c9e 100644 (file)
@@ -61,14 +61,10 @@ namespace WTF {
     template<typename T>
     struct VectorTraits : VectorTraitsBase<IsPod<T>::value, T> { };
 
-    struct SimpleClassVectorTraits
+    struct SimpleClassVectorTraits : VectorTraitsBase<false, void>
     {
-        static const bool needsDestruction = true;
-        static const bool needsInitialization = true;
         static const bool canInitializeWithMemset = true;
         static const bool canMoveWithMemcpy = true;
-        static const bool canCopyWithMemcpy = false;
-        static const bool canFillWithMemset = false;
         static const bool canCompareWithMemcmp = true;
     };
 
index 713a6c3..b593d20 100644 (file)
@@ -499,10 +499,7 @@ template<> struct DefaultHash<String> {
     typedef StringHash Hash;
 };
 
-template <> struct VectorTraits<String> : SimpleClassVectorTraits
-{
-    static const bool canInitializeWithMemset = true;
-};
+template <> struct VectorTraits<String> : SimpleClassVectorTraits { };
 
 }
 
index 0435d2d..73c4da5 100644 (file)
@@ -1,3 +1,15 @@
+2011-04-12  Geoffrey Garen  <ggaren@apple.com>
+
+        Reviewed by Sam Weinig.
+
+        Cleaned up some Vector traits, and added missing Vector traits for handles
+        https://bugs.webkit.org/show_bug.cgi?id=58372
+
+        * platform/graphics/BitmapImage.h: Added a FIXME because the current
+        Vector traits for FrameData are logically incorrect, but I couldn't find
+        a place where this currently results in bad behavior, and it's not
+        immediately obvious what the right solution is.
+
 2011-04-12  Dimitri Glazkov  <dglazkov@chromium.org>
 
         Reviewed by Eric Seidel.
index 3b52071..1d1cd29 100644 (file)
@@ -53,11 +53,11 @@ namespace WebCore {
     struct FrameData;
 }
 
-// This complicated-looking declaration tells the FrameData Vector that it should copy without
-// invoking our constructor or destructor. This allows us to have a vector even for a struct
-// that's not copyable.
 namespace WTF {
-    template<> struct VectorTraits<WebCore::FrameData> : public SimpleClassVectorTraits {};
+    // FIXME: This declaration gives FrameData a default constructor that zeroes
+    // all its data members, even though FrameData's default constructor defined
+    // below does not zero all its data members. One of these must be wrong!
+    template<> struct VectorTraits<WebCore::FrameData> : public SimpleClassVectorTraits { };
 }
 
 namespace WebCore {