Title: [101187] trunk/Source/_javascript_Core
- Revision
- 101187
- Author
- msab...@apple.com
- Date
- 2011-11-25 22:15:20 -0800 (Fri, 25 Nov 2011)
Log Message
String.prototype.toLower should be optimized for 8 bit strings
https://bugs.webkit.org/show_bug.cgi?id=73154
Changed stringProtoFuncToLowerCase to use StringImpl::lower() which has
been optimized for 8 bit strings.
This is worth ~7% to sunspider string.tagcloud.
Reviewed by Filip Pizlo.
* runtime/StringPrototype.cpp:
(JSC::stringProtoFuncToLowerCase):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (101186 => 101187)
--- trunk/Source/_javascript_Core/ChangeLog 2011-11-26 06:01:06 UTC (rev 101186)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-11-26 06:15:20 UTC (rev 101187)
@@ -1,5 +1,20 @@
2011-11-25 Michael Saboff <msab...@apple.com>
+ String.prototype.toLower should be optimized for 8 bit strings
+ https://bugs.webkit.org/show_bug.cgi?id=73154
+
+ Changed stringProtoFuncToLowerCase to use StringImpl::lower() which has
+ been optimized for 8 bit strings.
+
+ This is worth ~7% to sunspider string.tagcloud.
+
+ Reviewed by Filip Pizlo.
+
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncToLowerCase):
+
+2011-11-25 Michael Saboff <msab...@apple.com>
+
Array.toString always uses StringImpl::characters()
https://bugs.webkit.org/show_bug.cgi?id=72969
Modified: trunk/Source/_javascript_Core/runtime/StringPrototype.cpp (101186 => 101187)
--- trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2011-11-26 06:01:06 UTC (rev 101186)
+++ trunk/Source/_javascript_Core/runtime/StringPrototype.cpp 2011-11-26 06:15:20 UTC (rev 101187)
@@ -1189,32 +1189,7 @@
if (!sSize)
return JSValue::encode(sVal);
- const UChar* sData = s.characters();
- Vector<UChar> buffer(sSize);
-
- UChar ored = 0;
- for (int i = 0; i < sSize; i++) {
- UChar c = sData[i];
- ored |= c;
- buffer[i] = toASCIILower(c);
- }
- if (!(ored & ~0x7f))
- return JSValue::encode(jsString(exec, UString::adopt(buffer)));
-
- bool error;
- int length = Unicode::toLower(buffer.data(), sSize, sData, sSize, &error);
- if (error) {
- buffer.resize(length);
- length = Unicode::toLower(buffer.data(), length, sData, sSize, &error);
- if (error)
- return JSValue::encode(sVal);
- }
- if (length == sSize) {
- if (memcmp(buffer.data(), sData, length * sizeof(UChar)) == 0)
- return JSValue::encode(sVal);
- } else
- buffer.resize(length);
- return JSValue::encode(jsString(exec, UString::adopt(buffer)));
+ return JSValue::encode(jsString(exec, UString(s.impl()->lower())));
}
EncodedJSValue JSC_HOST_CALL stringProtoFuncToUpperCase(ExecState* exec)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes