OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_OBJECT_H_ | 5 #ifndef VM_OBJECT_H_ |
6 #define VM_OBJECT_H_ | 6 #define VM_OBJECT_H_ |
7 | 7 |
8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
(...skipping 5506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5517 intptr_t result = Smi::Value(symbol->ptr()->hash_); | 5517 intptr_t result = Smi::Value(symbol->ptr()->hash_); |
5518 ASSERT(result != 0); | 5518 ASSERT(result != 0); |
5519 return result; | 5519 return result; |
5520 } | 5520 } |
5521 | 5521 |
5522 // Returns the hash of str1 + str2. | 5522 // Returns the hash of str1 + str2. |
5523 static intptr_t HashConcat(const String& str1, const String& str2); | 5523 static intptr_t HashConcat(const String& str1, const String& str2); |
5524 | 5524 |
5525 virtual RawObject* HashCode() const { return Integer::New(Hash()); } | 5525 virtual RawObject* HashCode() const { return Integer::New(Hash()); } |
5526 | 5526 |
5527 int32_t CharAt(intptr_t index) const; | 5527 uint16_t CharAt(intptr_t index) const; |
5528 | 5528 |
5529 Scanner::CharAtFunc CharAtFunc() const; | 5529 Scanner::CharAtFunc CharAtFunc() const; |
5530 | 5530 |
5531 intptr_t CharSize() const; | 5531 intptr_t CharSize() const; |
5532 | 5532 |
5533 inline bool Equals(const String& str) const; | 5533 inline bool Equals(const String& str) const; |
5534 inline bool Equals(const String& str, | 5534 inline bool Equals(const String& str, |
5535 intptr_t begin_index, // begin index on 'str'. | 5535 intptr_t begin_index, // begin index on 'str'. |
5536 intptr_t len) const; // len on 'str'. | 5536 intptr_t len) const; // len on 'str'. |
5537 | 5537 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5747 friend class TwoByteString; | 5747 friend class TwoByteString; |
5748 friend class ExternalOneByteString; | 5748 friend class ExternalOneByteString; |
5749 friend class ExternalTwoByteString; | 5749 friend class ExternalTwoByteString; |
5750 // So that the MarkingVisitor can print a debug string from a NoHandleScope. | 5750 // So that the MarkingVisitor can print a debug string from a NoHandleScope. |
5751 friend class MarkingVisitor; | 5751 friend class MarkingVisitor; |
5752 }; | 5752 }; |
5753 | 5753 |
5754 | 5754 |
5755 class OneByteString : public AllStatic { | 5755 class OneByteString : public AllStatic { |
5756 public: | 5756 public: |
5757 static int32_t CharAt(const String& str, intptr_t index) { | 5757 static uint16_t CharAt(const String& str, intptr_t index) { |
5758 return *CharAddr(str, index); | 5758 return *CharAddr(str, index); |
5759 } | 5759 } |
5760 | 5760 |
5761 static void SetCharAt(const String& str, intptr_t index, uint8_t code_point) { | 5761 static void SetCharAt(const String& str, intptr_t index, uint8_t code_unit) { |
5762 *CharAddr(str, index) = code_point; | 5762 *CharAddr(str, index) = code_unit; |
5763 } | 5763 } |
5764 static RawOneByteString* EscapeSpecialCharacters(const String& str); | 5764 static RawOneByteString* EscapeSpecialCharacters(const String& str); |
5765 // We use the same maximum elements for all strings. | 5765 // We use the same maximum elements for all strings. |
5766 static const intptr_t kBytesPerElement = 1; | 5766 static const intptr_t kBytesPerElement = 1; |
5767 static const intptr_t kMaxElements = String::kMaxElements; | 5767 static const intptr_t kMaxElements = String::kMaxElements; |
5768 | 5768 |
5769 static intptr_t data_offset() { | 5769 static intptr_t data_offset() { |
5770 return OFFSET_OF_RETURNED_VALUE(RawOneByteString, data); | 5770 return OFFSET_OF_RETURNED_VALUE(RawOneByteString, data); |
5771 } | 5771 } |
5772 | 5772 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5876 friend class Class; | 5876 friend class Class; |
5877 friend class String; | 5877 friend class String; |
5878 friend class ExternalOneByteString; | 5878 friend class ExternalOneByteString; |
5879 friend class SnapshotReader; | 5879 friend class SnapshotReader; |
5880 friend class StringHasher; | 5880 friend class StringHasher; |
5881 }; | 5881 }; |
5882 | 5882 |
5883 | 5883 |
5884 class TwoByteString : public AllStatic { | 5884 class TwoByteString : public AllStatic { |
5885 public: | 5885 public: |
5886 static int32_t CharAt(const String& str, intptr_t index) { | 5886 static uint16_t CharAt(const String& str, intptr_t index) { |
5887 return *CharAddr(str, index); | 5887 return *CharAddr(str, index); |
5888 } | 5888 } |
5889 | 5889 |
5890 static void SetCharAt(const String& str, intptr_t index, uint16_t ch) { | 5890 static void SetCharAt(const String& str, intptr_t index, uint16_t ch) { |
5891 *CharAddr(str, index) = ch; | 5891 *CharAddr(str, index) = ch; |
5892 } | 5892 } |
5893 | 5893 |
5894 static RawTwoByteString* EscapeSpecialCharacters(const String& str); | 5894 static RawTwoByteString* EscapeSpecialCharacters(const String& str); |
5895 | 5895 |
5896 // We use the same maximum elements for all strings. | 5896 // We use the same maximum elements for all strings. |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5976 Snapshot::Kind kind); | 5976 Snapshot::Kind kind); |
5977 | 5977 |
5978 friend class Class; | 5978 friend class Class; |
5979 friend class String; | 5979 friend class String; |
5980 friend class SnapshotReader; | 5980 friend class SnapshotReader; |
5981 }; | 5981 }; |
5982 | 5982 |
5983 | 5983 |
5984 class ExternalOneByteString : public AllStatic { | 5984 class ExternalOneByteString : public AllStatic { |
5985 public: | 5985 public: |
5986 static int32_t CharAt(const String& str, intptr_t index) { | 5986 static uint16_t CharAt(const String& str, intptr_t index) { |
5987 return *CharAddr(str, index); | 5987 return *CharAddr(str, index); |
5988 } | 5988 } |
5989 | 5989 |
5990 static void* GetPeer(const String& str) { | 5990 static void* GetPeer(const String& str) { |
5991 return raw_ptr(str)->external_data_->peer(); | 5991 return raw_ptr(str)->external_data_->peer(); |
5992 } | 5992 } |
5993 | 5993 |
5994 // We use the same maximum elements for all strings. | 5994 // We use the same maximum elements for all strings. |
5995 static const intptr_t kBytesPerElement = 1; | 5995 static const intptr_t kBytesPerElement = 1; |
5996 static const intptr_t kMaxElements = String::kMaxElements; | 5996 static const intptr_t kMaxElements = String::kMaxElements; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6053 } | 6053 } |
6054 | 6054 |
6055 friend class Class; | 6055 friend class Class; |
6056 friend class String; | 6056 friend class String; |
6057 friend class SnapshotReader; | 6057 friend class SnapshotReader; |
6058 }; | 6058 }; |
6059 | 6059 |
6060 | 6060 |
6061 class ExternalTwoByteString : public AllStatic { | 6061 class ExternalTwoByteString : public AllStatic { |
6062 public: | 6062 public: |
6063 static int32_t CharAt(const String& str, intptr_t index) { | 6063 static uint16_t CharAt(const String& str, intptr_t index) { |
6064 return *CharAddr(str, index); | 6064 return *CharAddr(str, index); |
6065 } | 6065 } |
6066 | 6066 |
6067 static void* GetPeer(const String& str) { | 6067 static void* GetPeer(const String& str) { |
6068 return raw_ptr(str)->external_data_->peer(); | 6068 return raw_ptr(str)->external_data_->peer(); |
6069 } | 6069 } |
6070 | 6070 |
6071 // We use the same maximum elements for all strings. | 6071 // We use the same maximum elements for all strings. |
6072 static const intptr_t kBytesPerElement = 2; | 6072 static const intptr_t kBytesPerElement = 2; |
6073 static const intptr_t kMaxElements = String::kMaxElements; | 6073 static const intptr_t kMaxElements = String::kMaxElements; |
(...skipping 1377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7451 | 7451 |
7452 | 7452 |
7453 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 7453 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
7454 intptr_t index) { | 7454 intptr_t index) { |
7455 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 7455 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
7456 } | 7456 } |
7457 | 7457 |
7458 } // namespace dart | 7458 } // namespace dart |
7459 | 7459 |
7460 #endif // VM_OBJECT_H_ | 7460 #endif // VM_OBJECT_H_ |
OLD | NEW |