Title: [130606] tags/Safari-537.13.1/Source/_javascript_Core

Diff

Modified: tags/Safari-537.13.1/Source/_javascript_Core/API/OpaqueJSString.cpp (130605 => 130606)


--- tags/Safari-537.13.1/Source/_javascript_Core/API/OpaqueJSString.cpp	2012-10-07 18:36:10 UTC (rev 130605)
+++ tags/Safari-537.13.1/Source/_javascript_Core/API/OpaqueJSString.cpp	2012-10-07 18:38:30 UTC (rev 130606)
@@ -35,14 +35,21 @@
 PassRefPtr<OpaqueJSString> OpaqueJSString::create(const String& string)
 {
     if (!string.isNull())
-        return adoptRef(new OpaqueJSString(string));
-    return adoptRef(new OpaqueJSString());
+        return adoptRef(new OpaqueJSString(string.characters(), string.length()));
+    return 0;
 }
 
+String OpaqueJSString::string() const
+{
+    if (this && m_characters)
+        return String(m_characters, m_length);
+    return String();
+}
+
 Identifier OpaqueJSString::identifier(JSGlobalData* globalData) const
 {
-    if (!this || !m_string.length())
+    if (!this || !m_characters)
         return Identifier(globalData, static_cast<const char*>(0));
 
-    return Identifier(globalData, m_string);
+    return Identifier(globalData, m_characters, m_length);
 }

Modified: tags/Safari-537.13.1/Source/_javascript_Core/API/OpaqueJSString.h (130605 => 130606)


--- tags/Safari-537.13.1/Source/_javascript_Core/API/OpaqueJSString.h	2012-10-07 18:36:10 UTC (rev 130605)
+++ tags/Safari-537.13.1/Source/_javascript_Core/API/OpaqueJSString.h	2012-10-07 18:38:30 UTC (rev 130606)
@@ -48,35 +48,35 @@
 
     JS_EXPORT_PRIVATE static PassRefPtr<OpaqueJSString> create(const String&);
 
-    const UChar* characters() { return !!this ? m_string.characters() : 0; }
-    unsigned length() { return !!this ? m_string.length() : 0; }
+    UChar* characters() { return this ? m_characters : 0; }
+    unsigned length() { return this ? m_length : 0; }
 
-    String string() const { return !!this ? m_string : String(); };
+    String string() const;
     JSC::Identifier identifier(JSC::JSGlobalData*) const;
 
 private:
     friend class WTF::ThreadSafeRefCounted<OpaqueJSString>;
 
     OpaqueJSString()
+        : m_characters(0)
+        , m_length(0)
     {
-        m_string = emptyString();
     }
 
-    OpaqueJSString(const String& string)
+    OpaqueJSString(const UChar* characters, unsigned length)
+        : m_length(length)
     {
-        // Make a copy of the source string.
-        if (string.is8Bit())
-            m_string = String(string.characters8(), string.length());
-        else
-            m_string = String(string.characters16(), string.length());
+        m_characters = new UChar[length];
+        memcpy(m_characters, characters, length * sizeof(UChar));
     }
 
-    OpaqueJSString(const UChar* characters, unsigned length)
+    ~OpaqueJSString()
     {
-        m_string = String(characters, length);
+        delete[] m_characters;
     }
 
-    String m_string;
+    UChar* m_characters;
+    unsigned m_length;
 };
 
 #endif

Modified: tags/Safari-537.13.1/Source/_javascript_Core/ChangeLog (130605 => 130606)


--- tags/Safari-537.13.1/Source/_javascript_Core/ChangeLog	2012-10-07 18:36:10 UTC (rev 130605)
+++ tags/Safari-537.13.1/Source/_javascript_Core/ChangeLog	2012-10-07 18:38:30 UTC (rev 130606)
@@ -1,23 +1,3 @@
-2012-10-03  Michael Saboff  <[email protected]>
-
-        OpaqueJSString doesn't optimally handle 8 bit strings
-        https://bugs.webkit.org/show_bug.cgi?id=98300
-
-        Reviewed by Geoffrey Garen.
-
-        Change OpaqueJSString to store and manage a String instead of a UChar buffer.
-        The member string is a copy of any string used during creation.
-
-        * API/OpaqueJSString.cpp:
-        (OpaqueJSString::create):
-        (OpaqueJSString::identifier):
-        * API/OpaqueJSString.h:
-        (OpaqueJSString::characters):
-        (OpaqueJSString::length):
-        (OpaqueJSString::string):
-        (OpaqueJSString::OpaqueJSString):
-        (OpaqueJSString):
-
 2012-10-03  Filip Pizlo  <[email protected]>
 
         Array.splice should be fast when it is used to remove elements other than the very first
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to