Reviewers: Mads Ager,
Description:
Add fast cases for flat comparison to String::Is{Ascii,TwoByte}EqualTo.
[email protected]
Please review this at http://codereview.chromium.org/7064017/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/objects.cc
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index
52b7add58f4f75409c947070bfb2a8e74add2fef..bd544963a590c9a5eff1ed4e869b57b02a2262df
100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -5509,6 +5509,9 @@ bool String::IsEqualTo(Vector<const char> str) {
bool String::IsAsciiEqualTo(Vector<const char> str) {
int slen = length();
if (str.length() != slen) return false;
+ if (IsFlat() && IsAsciiRepresentation()) {
+ return CompareChars(ToAsciiVector().start(), str.start(), slen) == 0;
+ }
for (int i = 0; i < slen; i++) {
if (Get(i) != static_cast<uint16_t>(str[i])) return false;
}
@@ -5519,6 +5522,9 @@ bool String::IsAsciiEqualTo(Vector<const char> str) {
bool String::IsTwoByteEqualTo(Vector<const uc16> str) {
int slen = length();
if (str.length() != slen) return false;
+ if (IsFlat() && IsTwoByteRepresentation()) {
+ return CompareChars(ToUC16Vector().start(), str.start(), slen) == 0;
+ }
for (int i = 0; i < slen; i++) {
if (Get(i) != str[i]) return false;
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev