Chromium Code Reviews| 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()) { |