Reviewers: Christian Plesner Hansen, Message: Stricter IsFlat. All tests still run in mode=debug.
Description: Fixed typo Please review this at http://codereview.chromium.org/6302 Affected files: M src/objects-inl.h M test/mjsunit/switch.js Index: src/objects-inl.h diff --git a/src/objects-inl.h b/src/objects-inl.h index decaf392f6d999002e9d9db5eaaf22f587e100de..a612ba984cc86e534669b9513cb7f87478179c56 100644 --- a/src/objects-inl.h +++ b/src/objects-inl.h @@ -1321,17 +1321,17 @@ StringRepresentationTag String::map_representation_tag(Map* map) { bool String::IsFlat() { - String* current = this; - while (true) { - switch (current->representation_tag()) { - case kConsStringTag: - return String::cast(ConsString::cast(current)->second())->length() == 0; - case kSlicedStringTag: - current = String::cast(SlicedString::cast(this)->buffer()); - break; - default: - return true; + switch (this->representation_tag()) { + case kConsStringTag: + // Only flattened strings have second part empty. + return String::cast(ConsString::cast(this)->second())->length() == 0; + case kSlicedStringTag: { + String* slice = String::cast(SlicedString::cast(this)->buffer()); + StringRepresentationTag tag = slice->representation_tag(); + return tag == kSeqStringTag || tag == kExternalStringTag; } + default: + return true; } } Index: test/mjsunit/switch.js diff --git a/test/mjsunit/switch.js b/test/mjsunit/switch.js index 3b8458d3d963425f065e147f4c0e92377b101d01..ae5ce2bdcdad80afd1503496b849906e3638eb2b 100644 --- a/test/mjsunit/switch.js +++ b/test/mjsunit/switch.js @@ -27,7 +27,7 @@ function f0() { switch (0) { - // switch deliberatly left empty + // switch deliberately left empty } } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
