OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 6740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6751 // | 6751 // |
6752 // The API expects that all ExternalStrings are created through the | 6752 // The API expects that all ExternalStrings are created through the |
6753 // API. Therefore, ExternalStrings should not be used internally. | 6753 // API. Therefore, ExternalStrings should not be used internally. |
6754 class ExternalString: public String { | 6754 class ExternalString: public String { |
6755 public: | 6755 public: |
6756 // Casting | 6756 // Casting |
6757 static inline ExternalString* cast(Object* obj); | 6757 static inline ExternalString* cast(Object* obj); |
6758 | 6758 |
6759 // Layout description. | 6759 // Layout description. |
6760 static const int kResourceOffset = POINTER_SIZE_ALIGN(String::kSize); | 6760 static const int kResourceOffset = POINTER_SIZE_ALIGN(String::kSize); |
6761 static const int kSize = kResourceOffset + kPointerSize; | 6761 static const int kResourceDataOffset = kResourceOffset + kPointerSize; |
| 6762 static const int kSize = kResourceDataOffset + kPointerSize; |
| 6763 |
| 6764 // Clear the cached pointer to the character array provided by the resource. |
| 6765 // This cache is updated the first time the character array is accessed. |
| 6766 inline void clear_data_cache(); |
6762 | 6767 |
6763 STATIC_CHECK(kResourceOffset == Internals::kStringResourceOffset); | 6768 STATIC_CHECK(kResourceOffset == Internals::kStringResourceOffset); |
6764 | 6769 |
6765 private: | 6770 private: |
6766 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalString); | 6771 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalString); |
6767 }; | 6772 }; |
6768 | 6773 |
6769 | 6774 |
6770 // The ExternalAsciiString class is an external string backed by an | 6775 // The ExternalAsciiString class is an external string backed by an |
6771 // ASCII string. | 6776 // ASCII string. |
6772 class ExternalAsciiString: public ExternalString { | 6777 class ExternalAsciiString: public ExternalString { |
6773 public: | 6778 public: |
6774 static const bool kHasAsciiEncoding = true; | 6779 static const bool kHasAsciiEncoding = true; |
6775 | 6780 |
6776 typedef v8::String::ExternalAsciiStringResource Resource; | 6781 typedef v8::String::ExternalAsciiStringResource Resource; |
6777 | 6782 |
6778 // The underlying resource. | 6783 // The underlying resource. |
6779 inline const Resource* resource(); | 6784 inline const Resource* resource(); |
6780 inline void set_resource(const Resource* buffer); | 6785 inline void set_resource(const Resource* buffer); |
6781 | 6786 |
| 6787 inline const char* GetChars(); |
| 6788 |
6782 // Dispatched behavior. | 6789 // Dispatched behavior. |
6783 uint16_t ExternalAsciiStringGet(int index); | 6790 uint16_t ExternalAsciiStringGet(int index); |
6784 | 6791 |
6785 // Casting. | 6792 // Casting. |
6786 static inline ExternalAsciiString* cast(Object* obj); | 6793 static inline ExternalAsciiString* cast(Object* obj); |
6787 | 6794 |
6788 // Garbage collection support. | 6795 // Garbage collection support. |
6789 inline void ExternalAsciiStringIterateBody(ObjectVisitor* v); | 6796 inline void ExternalAsciiStringIterateBody(ObjectVisitor* v); |
6790 | 6797 |
6791 template<typename StaticVisitor> | 6798 template<typename StaticVisitor> |
(...skipping 17 matching lines...) Expand all Loading... |
6809 class ExternalTwoByteString: public ExternalString { | 6816 class ExternalTwoByteString: public ExternalString { |
6810 public: | 6817 public: |
6811 static const bool kHasAsciiEncoding = false; | 6818 static const bool kHasAsciiEncoding = false; |
6812 | 6819 |
6813 typedef v8::String::ExternalStringResource Resource; | 6820 typedef v8::String::ExternalStringResource Resource; |
6814 | 6821 |
6815 // The underlying string resource. | 6822 // The underlying string resource. |
6816 inline const Resource* resource(); | 6823 inline const Resource* resource(); |
6817 inline void set_resource(const Resource* buffer); | 6824 inline void set_resource(const Resource* buffer); |
6818 | 6825 |
| 6826 inline const uint16_t* GetChars(); |
| 6827 |
6819 // Dispatched behavior. | 6828 // Dispatched behavior. |
6820 uint16_t ExternalTwoByteStringGet(int index); | 6829 uint16_t ExternalTwoByteStringGet(int index); |
6821 | 6830 |
6822 // For regexp code. | 6831 // For regexp code. |
6823 const uint16_t* ExternalTwoByteStringGetData(unsigned start); | 6832 const uint16_t* ExternalTwoByteStringGetData(unsigned start); |
6824 | 6833 |
6825 // Casting. | 6834 // Casting. |
6826 static inline ExternalTwoByteString* cast(Object* obj); | 6835 static inline ExternalTwoByteString* cast(Object* obj); |
6827 | 6836 |
6828 // Garbage collection support. | 6837 // Garbage collection support. |
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7878 } else { | 7887 } else { |
7879 value &= ~(1 << bit_position); | 7888 value &= ~(1 << bit_position); |
7880 } | 7889 } |
7881 return value; | 7890 return value; |
7882 } | 7891 } |
7883 }; | 7892 }; |
7884 | 7893 |
7885 } } // namespace v8::internal | 7894 } } // namespace v8::internal |
7886 | 7895 |
7887 #endif // V8_OBJECTS_H_ | 7896 #endif // V8_OBJECTS_H_ |
OLD | NEW |