| Index: src/heap.cc
|
| diff --git a/src/heap.cc b/src/heap.cc
|
| index 401f4f7948adc09cb845390ef7f37036fa179aee..9ee52bb91d17a0fc65463bf7208d1ae1fb160c52 100644
|
| --- a/src/heap.cc
|
| +++ b/src/heap.cc
|
| @@ -2785,7 +2785,7 @@ bool Heap::CreateInitialObjects() {
|
| // hash code in place. The hash code for the hidden_symbol is zero to ensure
|
| // that it will always be at the first entry in property descriptors.
|
| { MaybeObject* maybe_obj =
|
| - AllocateSymbol(CStrVector(""), 0, String::kEmptyStringHash);
|
| + AllocateOneByteSymbol(OneByteVector("", 0), String::kEmptyStringHash);
|
| if (!maybe_obj->ToObject(&obj)) return false;
|
| }
|
| hidden_symbol_ = String::cast(obj);
|
| @@ -2838,9 +2838,9 @@ bool Heap::CreateInitialObjects() {
|
| }
|
| set_number_string_cache(FixedArray::cast(obj));
|
|
|
| - // Allocate cache for single character ASCII strings.
|
| + // Allocate cache for single character one byte strings.
|
| { MaybeObject* maybe_obj =
|
| - AllocateFixedArray(String::kMaxAsciiCharCode + 1, TENURED);
|
| + AllocateFixedArray(String::kMaxOneByteCharCode + 1, TENURED);
|
| if (!maybe_obj->ToObject(&obj)) return false;
|
| }
|
| set_single_character_string_cache(FixedArray::cast(obj));
|
| @@ -3309,9 +3309,9 @@ MUST_USE_RESULT static inline MaybeObject* MakeOrFindTwoCharacterString(
|
| return symbol;
|
| // Now we know the length is 2, we might as well make use of that fact
|
| // when building the new string.
|
| - } else if (static_cast<unsigned>(c1 | c2) <= String::kMaxAsciiCharCodeU) {
|
| + } else if (static_cast<unsigned>(c1 | c2) <= String::kMaxOneByteCharCodeU) {
|
| // We can do this.
|
| - ASSERT(IsPowerOf2(String::kMaxAsciiCharCodeU + 1)); // because of this.
|
| + ASSERT(IsPowerOf2(String::kMaxOneByteCharCodeU + 1)); // because of this.
|
| Object* result;
|
| { MaybeObject* maybe_result = heap->AllocateRawOneByteString(2);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| @@ -3355,10 +3355,9 @@ MaybeObject* Heap::AllocateConsString(String* first, String* second) {
|
| return MakeOrFindTwoCharacterString(this, c1, c2);
|
| }
|
|
|
| - bool first_is_ascii = first->IsOneByteRepresentation();
|
| - bool second_is_ascii = second->IsOneByteRepresentation();
|
| - bool is_ascii = first_is_ascii && second_is_ascii;
|
| -
|
| + bool first_is_one_byte = first->IsOneByteRepresentation();
|
| + bool second_is_one_byte = second->IsOneByteRepresentation();
|
| + bool is_one_byte = first_is_one_byte && second_is_one_byte;
|
| // Make sure that an out of memory exception is thrown if the length
|
| // of the new cons string is too large.
|
| if (length > String::kMaxLength || length < 0) {
|
| @@ -3367,7 +3366,7 @@ MaybeObject* Heap::AllocateConsString(String* first, String* second) {
|
| }
|
|
|
| bool is_ascii_data_in_two_byte_string = false;
|
| - if (!is_ascii) {
|
| + if (!is_one_byte) {
|
| // At least one of the strings uses two-byte representation so we
|
| // can't use the fast case code for short ASCII strings below, but
|
| // we can try to save memory if all chars actually fit in ASCII.
|
| @@ -3384,7 +3383,7 @@ MaybeObject* Heap::AllocateConsString(String* first, String* second) {
|
| STATIC_ASSERT(ConsString::kMinLength <= SlicedString::kMinLength);
|
| ASSERT(first->IsFlat());
|
| ASSERT(second->IsFlat());
|
| - if (is_ascii) {
|
| + if (is_one_byte) {
|
| Object* result;
|
| { MaybeObject* maybe_result = AllocateRawOneByteString(length);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| @@ -3433,7 +3432,7 @@ MaybeObject* Heap::AllocateConsString(String* first, String* second) {
|
| }
|
| }
|
|
|
| - Map* map = (is_ascii || is_ascii_data_in_two_byte_string) ?
|
| + Map* map = (is_one_byte || is_ascii_data_in_two_byte_string) ?
|
| cons_ascii_string_map() : cons_string_map();
|
|
|
| Object* result;
|
| @@ -3481,15 +3480,15 @@ MaybeObject* Heap::AllocateSubString(String* buffer,
|
| // WriteToFlat takes care of the case when an indirect string has a
|
| // different encoding from its underlying string. These encodings may
|
| // differ because of externalization.
|
| - bool is_ascii = buffer->IsOneByteRepresentation();
|
| - { MaybeObject* maybe_result = is_ascii
|
| + bool is_one_byte = buffer->IsOneByteRepresentation();
|
| + { MaybeObject* maybe_result = is_one_byte
|
| ? AllocateRawOneByteString(length, pretenure)
|
| : AllocateRawTwoByteString(length, pretenure);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| }
|
| String* string_result = String::cast(result);
|
| // Copy the characters into the new object.
|
| - if (is_ascii) {
|
| + if (is_one_byte) {
|
| ASSERT(string_result->IsOneByteRepresentation());
|
| char* dest = SeqOneByteString::cast(string_result)->GetChars();
|
| String::WriteToFlat(buffer, dest, start, end);
|
| @@ -3580,11 +3579,11 @@ MaybeObject* Heap::AllocateExternalStringFromTwoByte(
|
| }
|
|
|
| // For small strings we check whether the resource contains only
|
| - // ASCII characters. If yes, we use a different string map.
|
| + // one byte characters. If yes, we use a different string map.
|
| static const size_t kAsciiCheckLengthLimit = 32;
|
| - bool is_ascii = length <= kAsciiCheckLengthLimit &&
|
| - String::IsAscii(resource->data(), static_cast<int>(length));
|
| - Map* map = is_ascii ?
|
| + bool is_one_byte = length <= kAsciiCheckLengthLimit &&
|
| + String::IsOneByte(resource->data(), static_cast<int>(length));
|
| + Map* map = is_one_byte ?
|
| external_string_with_ascii_data_map() : external_string_map();
|
| Object* result;
|
| { MaybeObject* maybe_result = Allocate(map, NEW_SPACE);
|
| @@ -3601,15 +3600,15 @@ MaybeObject* Heap::AllocateExternalStringFromTwoByte(
|
|
|
|
|
| MaybeObject* Heap::LookupSingleCharacterStringFromCode(uint16_t code) {
|
| - if (code <= String::kMaxAsciiCharCode) {
|
| + if (code <= String::kMaxOneByteCharCode) {
|
| Object* value = single_character_string_cache()->get(code);
|
| if (value != undefined_value()) return value;
|
|
|
| - char buffer[1];
|
| - buffer[0] = static_cast<char>(code);
|
| + uint8_t buffer[1];
|
| + buffer[0] = static_cast<uint8_t>(code);
|
| Object* result;
|
| MaybeObject* maybe_result =
|
| - LookupOneByteSymbol(Vector<const char>(buffer, 1));
|
| + LookupOneByteSymbol(Vector<const uint8_t>(buffer, 1));
|
|
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| single_character_string_cache()->set(code, result);
|
| @@ -4520,7 +4519,7 @@ MaybeObject* Heap::ReinitializeJSGlobalProxy(JSFunction* constructor,
|
| }
|
|
|
|
|
| -MaybeObject* Heap::AllocateStringFromOneByte(Vector<const char> string,
|
| +MaybeObject* Heap::AllocateStringFromOneByte(Vector<const uint8_t> string,
|
| PretenureFlag pretenure) {
|
| int length = string.length();
|
| if (length == 1) {
|
| @@ -4533,7 +4532,9 @@ MaybeObject* Heap::AllocateStringFromOneByte(Vector<const char> string,
|
| }
|
|
|
| // Copy the characters into the new object.
|
| - CopyChars(SeqOneByteString::cast(result)->GetChars(), string.start(), length);
|
| + CopyChars(SeqOneByteString::cast(result)->GetCharsU(),
|
| + string.start(),
|
| + length);
|
| return result;
|
| }
|
|
|
| @@ -4579,11 +4580,11 @@ MaybeObject* Heap::AllocateStringFromTwoByte(Vector<const uc16> string,
|
| int length = string.length();
|
| const uc16* start = string.start();
|
|
|
| - if (String::IsAscii(start, length)) {
|
| + if (String::IsOneByte(start, length)) {
|
| MaybeObject* maybe_result = AllocateRawOneByteString(length, pretenure);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| CopyChars(SeqOneByteString::cast(result)->GetChars(), start, length);
|
| - } else { // It's not an ASCII string.
|
| + } else { // It's not a one byte string.
|
| MaybeObject* maybe_result = AllocateRawTwoByteString(length, pretenure);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| CopyChars(SeqTwoByteString::cast(result)->GetChars(), start, length);
|
| @@ -5628,7 +5629,7 @@ MaybeObject* Heap::LookupUtf8Symbol(Vector<const char> string) {
|
| }
|
|
|
|
|
| -MaybeObject* Heap::LookupOneByteSymbol(Vector<const char> string) {
|
| +MaybeObject* Heap::LookupOneByteSymbol(Vector<const uint8_t> string) {
|
| Object* symbol = NULL;
|
| Object* new_table;
|
| { MaybeObject* maybe_new_table =
|
|
|