Title: [130606] tags/Safari-537.13.1/Source/_javascript_Core
- Revision
- 130606
- Author
- [email protected]
- Date
- 2012-10-07 11:38:30 -0700 (Sun, 07 Oct 2012)
Log Message
Rollout r130344. <rdar://problem/12448776>
Modified Paths
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