Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index ad151041528b3a7e4b75146eda063f7f68e09549..d82d73ec50108cd6526799bc30601a8ccf364681 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -1691,13 +1691,19 @@ bool String::Equals(String* other) { |
Object* String::TryFlatten(PretenureFlag pretenure) { |
- // We don't need to flatten strings that are already flat. Since this code |
- // is inlined, it can be helpful in the flat case to not call out to Flatten. |
- if (IsFlat()) return this; |
+ if (!StringShape(this).IsCons()) return this; |
Mads Ager (chromium)
2010/05/19 12:27:43
StringShapes should be deprecated, they were a fai
|
+ ConsString* cons = ConsString::cast(this); |
+ if (cons->second()->length() == 0) return cons->first(); |
return SlowTryFlatten(pretenure); |
} |
+String* String::TryFlattenGetString(PretenureFlag pretenure) { |
+ Object* flat = TryFlatten(pretenure); |
+ return flat->IsFailure() ? this : String::cast(flat); |
+} |
+ |
+ |
uint16_t String::Get(int index) { |
ASSERT(index >= 0 && index < length()); |
switch (StringShape(this).full_representation_tag()) { |