| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 88786e82473eada4915a7260b4e2f633d0dda729..e4bf83d4a9e13d684af33a6ee1a6891a4d0f30f2 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -4927,16 +4927,6 @@ static Object* ConvertCaseHelper(String* s,
|
| }
|
|
|
|
|
| -static inline SeqAsciiString* TryGetSeqAsciiString(String* s) {
|
| - if (!s->IsFlat() || !s->IsAsciiRepresentation()) return NULL;
|
| - if (s->IsConsString()) {
|
| - ASSERT(ConsString::cast(s)->second()->length() == 0);
|
| - return SeqAsciiString::cast(ConsString::cast(s)->first());
|
| - }
|
| - return SeqAsciiString::cast(s);
|
| -}
|
| -
|
| -
|
| namespace {
|
|
|
| struct ToLowerTraits {
|
| @@ -4983,7 +4973,7 @@ static Object* ConvertCase(
|
| unibrow::Mapping<typename ConvertTraits::UnibrowConverter, 128>* mapping) {
|
| NoHandleAllocation ha;
|
| CONVERT_CHECKED(String, s, args[0]);
|
| - s->TryFlatten();
|
| + s = s->TryFlattenGetString();
|
|
|
| const int length = s->length();
|
| // Assume that the string is not empty; we need this assumption later
|
| @@ -4995,13 +4985,12 @@ static Object* ConvertCase(
|
| // character is also ascii. This is currently the case, but it
|
| // might break in the future if we implement more context and locale
|
| // dependent upper/lower conversions.
|
| - SeqAsciiString* seq_ascii = TryGetSeqAsciiString(s);
|
| - if (seq_ascii != NULL) {
|
| + if (s->IsSeqAsciiString()) {
|
| Object* o = Heap::AllocateRawAsciiString(length);
|
| if (o->IsFailure()) return o;
|
| SeqAsciiString* result = SeqAsciiString::cast(o);
|
| bool has_changed_character = ConvertTraits::ConvertAscii(
|
| - result->GetChars(), seq_ascii->GetChars(), length);
|
| + result->GetChars(), SeqAsciiString::cast(s)->GetChars(), length);
|
| return has_changed_character ? result : s;
|
| }
|
|
|
| @@ -5545,7 +5534,7 @@ static Object* Runtime_StringBuilderConcat(Arguments args) {
|
| if (first->IsString()) return first;
|
| }
|
|
|
| - bool ascii = special->IsAsciiRepresentation();
|
| + bool ascii = special->HasAsciiChars();
|
| int position = 0;
|
| for (int i = 0; i < array_length; i++) {
|
| int increment = 0;
|
| @@ -5586,7 +5575,7 @@ static Object* Runtime_StringBuilderConcat(Arguments args) {
|
| String* element = String::cast(elt);
|
| int element_length = element->length();
|
| increment = element_length;
|
| - if (ascii && !element->IsAsciiRepresentation()) {
|
| + if (ascii && !element->HasAsciiChars()) {
|
| ascii = false;
|
| }
|
| } else {
|
|
|