OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 } | 338 } |
339 } | 339 } |
340 | 340 |
341 | 341 |
342 bool String::HasOnlyAsciiChars() { | 342 bool String::HasOnlyAsciiChars() { |
343 uint32_t type = map()->instance_type(); | 343 uint32_t type = map()->instance_type(); |
344 return (type & kAsciiDataHintMask) == kAsciiDataHintTag; | 344 return (type & kAsciiDataHintMask) == kAsciiDataHintTag; |
345 } | 345 } |
346 | 346 |
347 | 347 |
| 348 bool String::IsOneByteConvertible() { |
| 349 return HasOnlyAsciiChars() || IsOneByteRepresentation(); |
| 350 } |
| 351 |
| 352 |
348 bool StringShape::IsCons() { | 353 bool StringShape::IsCons() { |
349 return (type_ & kStringRepresentationMask) == kConsStringTag; | 354 return (type_ & kStringRepresentationMask) == kConsStringTag; |
350 } | 355 } |
351 | 356 |
352 | 357 |
353 bool StringShape::IsSliced() { | 358 bool StringShape::IsSliced() { |
354 return (type_ & kStringRepresentationMask) == kSlicedStringTag; | 359 return (type_ & kStringRepresentationMask) == kSlicedStringTag; |
355 } | 360 } |
356 | 361 |
357 | 362 |
(...skipping 2240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2598 } | 2603 } |
2599 | 2604 |
2600 | 2605 |
2601 uint16_t SeqOneByteString::SeqOneByteStringGet(int index) { | 2606 uint16_t SeqOneByteString::SeqOneByteStringGet(int index) { |
2602 ASSERT(index >= 0 && index < length()); | 2607 ASSERT(index >= 0 && index < length()); |
2603 return READ_BYTE_FIELD(this, kHeaderSize + index * kCharSize); | 2608 return READ_BYTE_FIELD(this, kHeaderSize + index * kCharSize); |
2604 } | 2609 } |
2605 | 2610 |
2606 | 2611 |
2607 void SeqOneByteString::SeqOneByteStringSet(int index, uint16_t value) { | 2612 void SeqOneByteString::SeqOneByteStringSet(int index, uint16_t value) { |
2608 ASSERT(index >= 0 && index < length() && value <= kMaxAsciiCharCode); | 2613 ASSERT(index >= 0 && index < length() && value <= kMaxOneByteCharCode); |
2609 WRITE_BYTE_FIELD(this, kHeaderSize + index * kCharSize, | 2614 WRITE_BYTE_FIELD(this, kHeaderSize + index * kCharSize, |
2610 static_cast<byte>(value)); | 2615 static_cast<byte>(value)); |
2611 } | 2616 } |
2612 | 2617 |
2613 | 2618 |
2614 Address SeqOneByteString::GetCharsAddress() { | 2619 Address SeqOneByteString::GetCharsAddress() { |
2615 return FIELD_ADDR(this, kHeaderSize); | 2620 return FIELD_ADDR(this, kHeaderSize); |
2616 } | 2621 } |
2617 | 2622 |
2618 | 2623 |
2619 char* SeqOneByteString::GetChars() { | 2624 char* SeqOneByteString::GetChars() { |
2620 return reinterpret_cast<char*>(GetCharsAddress()); | 2625 return reinterpret_cast<char*>(GetCharsAddress()); |
2621 } | 2626 } |
2622 | 2627 |
2623 | 2628 |
| 2629 uint8_t* SeqOneByteString::GetCharsU() { |
| 2630 return reinterpret_cast<uint8_t*>(GetCharsAddress()); |
| 2631 } |
| 2632 |
| 2633 |
2624 Address SeqTwoByteString::GetCharsAddress() { | 2634 Address SeqTwoByteString::GetCharsAddress() { |
2625 return FIELD_ADDR(this, kHeaderSize); | 2635 return FIELD_ADDR(this, kHeaderSize); |
2626 } | 2636 } |
2627 | 2637 |
2628 | 2638 |
2629 uc16* SeqTwoByteString::GetChars() { | 2639 uc16* SeqTwoByteString::GetChars() { |
2630 return reinterpret_cast<uc16*>(FIELD_ADDR(this, kHeaderSize)); | 2640 return reinterpret_cast<uc16*>(FIELD_ADDR(this, kHeaderSize)); |
2631 } | 2641 } |
2632 | 2642 |
2633 | 2643 |
(...skipping 3147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5781 #undef WRITE_UINT32_FIELD | 5791 #undef WRITE_UINT32_FIELD |
5782 #undef READ_SHORT_FIELD | 5792 #undef READ_SHORT_FIELD |
5783 #undef WRITE_SHORT_FIELD | 5793 #undef WRITE_SHORT_FIELD |
5784 #undef READ_BYTE_FIELD | 5794 #undef READ_BYTE_FIELD |
5785 #undef WRITE_BYTE_FIELD | 5795 #undef WRITE_BYTE_FIELD |
5786 | 5796 |
5787 | 5797 |
5788 } } // namespace v8::internal | 5798 } } // namespace v8::internal |
5789 | 5799 |
5790 #endif // V8_OBJECTS_INL_H_ | 5800 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |