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 #include "vm/object.h" | 5 #include "vm/object.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
10 #include "vm/cpu.h" | 10 #include "vm/cpu.h" |
(...skipping 2071 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2082 private: | 2082 private: |
2083 const String& name_; | 2083 const String& name_; |
2084 String* tmp_string_; | 2084 String* tmp_string_; |
2085 }; | 2085 }; |
2086 | 2086 |
2087 | 2087 |
2088 // Traits for looking up Functions by name. | 2088 // Traits for looking up Functions by name. |
2089 class ClassFunctionsTraits { | 2089 class ClassFunctionsTraits { |
2090 public: | 2090 public: |
2091 static const char* Name() { return "ClassFunctionsTraits"; } | 2091 static const char* Name() { return "ClassFunctionsTraits"; } |
| 2092 static bool ReportStats() { return false; } |
2092 | 2093 |
2093 // Called when growing the table. | 2094 // Called when growing the table. |
2094 static bool IsMatch(const Object& a, const Object& b) { | 2095 static bool IsMatch(const Object& a, const Object& b) { |
2095 ASSERT(a.IsFunction() && b.IsFunction()); | 2096 ASSERT(a.IsFunction() && b.IsFunction()); |
2096 // Function objects are always canonical. | 2097 // Function objects are always canonical. |
2097 return a.raw() == b.raw(); | 2098 return a.raw() == b.raw(); |
2098 } | 2099 } |
2099 static bool IsMatch(const FunctionName& name, const Object& obj) { | 2100 static bool IsMatch(const FunctionName& name, const Object& obj) { |
2100 return name.Matches(Function::Cast(obj)); | 2101 return name.Matches(Function::Cast(obj)); |
2101 } | 2102 } |
(...skipping 6224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8326 result.SetStream(stream); | 8327 result.SetStream(stream); |
8327 return result.raw(); | 8328 return result.raw(); |
8328 } | 8329 } |
8329 | 8330 |
8330 | 8331 |
8331 // CompressedTokenMap maps String and LiteralToken keys to Smi values. | 8332 // CompressedTokenMap maps String and LiteralToken keys to Smi values. |
8332 // It also supports lookup by TokenDescriptor. | 8333 // It also supports lookup by TokenDescriptor. |
8333 class CompressedTokenTraits { | 8334 class CompressedTokenTraits { |
8334 public: | 8335 public: |
8335 static const char* Name() { return "CompressedTokenTraits"; } | 8336 static const char* Name() { return "CompressedTokenTraits"; } |
| 8337 static bool ReportStats() { return false; } |
8336 | 8338 |
8337 static bool IsMatch(const Scanner::TokenDescriptor& descriptor, | 8339 static bool IsMatch(const Scanner::TokenDescriptor& descriptor, |
8338 const Object& key) { | 8340 const Object& key) { |
8339 if (!key.IsLiteralToken()) { | 8341 if (!key.IsLiteralToken()) { |
8340 return false; | 8342 return false; |
8341 } | 8343 } |
8342 const LiteralToken& token = LiteralToken::Cast(key); | 8344 const LiteralToken& token = LiteralToken::Cast(key); |
8343 return (token.literal() == descriptor.literal->raw()) && | 8345 return (token.literal() == descriptor.literal->raw()) && |
8344 (token.kind() == descriptor.kind); | 8346 (token.kind() == descriptor.kind); |
8345 } | 8347 } |
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9256 ASSERT(LoadInProgress() || LoadRequested() || LoadFailed()); | 9258 ASSERT(LoadInProgress() || LoadRequested() || LoadFailed()); |
9257 StoreNonPointer(&raw_ptr()->load_state_, RawLibrary::kLoadError); | 9259 StoreNonPointer(&raw_ptr()->load_state_, RawLibrary::kLoadError); |
9258 StorePointer(&raw_ptr()->load_error_, error.raw()); | 9260 StorePointer(&raw_ptr()->load_error_, error.raw()); |
9259 } | 9261 } |
9260 | 9262 |
9261 | 9263 |
9262 // Traits for looking up Libraries by url in a hash set. | 9264 // Traits for looking up Libraries by url in a hash set. |
9263 class LibraryUrlTraits { | 9265 class LibraryUrlTraits { |
9264 public: | 9266 public: |
9265 static const char* Name() { return "LibraryUrlTraits"; } | 9267 static const char* Name() { return "LibraryUrlTraits"; } |
| 9268 static bool ReportStats() { return false; } |
9266 | 9269 |
9267 // Called when growing the table. | 9270 // Called when growing the table. |
9268 static bool IsMatch(const Object& a, const Object& b) { | 9271 static bool IsMatch(const Object& a, const Object& b) { |
9269 ASSERT(a.IsLibrary() && b.IsLibrary()); | 9272 ASSERT(a.IsLibrary() && b.IsLibrary()); |
9270 // Library objects are always canonical. | 9273 // Library objects are always canonical. |
9271 return a.raw() == b.raw(); | 9274 return a.raw() == b.raw(); |
9272 } | 9275 } |
9273 static uword Hash(const Object& key) { | 9276 static uword Hash(const Object& key) { |
9274 return Library::Cast(key).UrlHash(); | 9277 return Library::Cast(key).UrlHash(); |
9275 } | 9278 } |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9567 } | 9570 } |
9568 } | 9571 } |
9569 AddToResolvedNamesCache(name, obj); | 9572 AddToResolvedNamesCache(name, obj); |
9570 return obj.raw(); | 9573 return obj.raw(); |
9571 } | 9574 } |
9572 | 9575 |
9573 | 9576 |
9574 class StringEqualsTraits { | 9577 class StringEqualsTraits { |
9575 public: | 9578 public: |
9576 static const char* Name() { return "StringEqualsTraits"; } | 9579 static const char* Name() { return "StringEqualsTraits"; } |
| 9580 static bool ReportStats() { return false; } |
9577 | 9581 |
9578 static bool IsMatch(const Object& a, const Object& b) { | 9582 static bool IsMatch(const Object& a, const Object& b) { |
9579 return String::Cast(a).Equals(String::Cast(b)); | 9583 return String::Cast(a).Equals(String::Cast(b)); |
9580 } | 9584 } |
9581 static uword Hash(const Object& obj) { | 9585 static uword Hash(const Object& obj) { |
9582 return String::Cast(obj).Hash(); | 9586 return String::Cast(obj).Hash(); |
9583 } | 9587 } |
9584 }; | 9588 }; |
9585 typedef UnorderedHashMap<StringEqualsTraits> ResolvedNamesMap; | 9589 typedef UnorderedHashMap<StringEqualsTraits> ResolvedNamesMap; |
9586 | 9590 |
(...skipping 11352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
20939 return "_GrowableList NULL"; | 20943 return "_GrowableList NULL"; |
20940 } | 20944 } |
20941 return OS::SCreate(Thread::Current()->zone(), | 20945 return OS::SCreate(Thread::Current()->zone(), |
20942 "Instance(length:%" Pd ") of '_GrowableList'", Length()); | 20946 "Instance(length:%" Pd ") of '_GrowableList'", Length()); |
20943 } | 20947 } |
20944 | 20948 |
20945 | 20949 |
20946 // Equivalent to Dart's operator "==" and hashCode. | 20950 // Equivalent to Dart's operator "==" and hashCode. |
20947 class DefaultHashTraits { | 20951 class DefaultHashTraits { |
20948 public: | 20952 public: |
| 20953 static const char* Name() { return "DefaultHashTraits"; } |
| 20954 static bool ReportStats() { return false; } |
| 20955 |
20949 static bool IsMatch(const Object& a, const Object& b) { | 20956 static bool IsMatch(const Object& a, const Object& b) { |
20950 if (a.IsNull() || b.IsNull()) { | 20957 if (a.IsNull() || b.IsNull()) { |
20951 return (a.IsNull() && b.IsNull()); | 20958 return (a.IsNull() && b.IsNull()); |
20952 } else { | 20959 } else { |
20953 return Instance::Cast(a).OperatorEquals(Instance::Cast(b)); | 20960 return Instance::Cast(a).OperatorEquals(Instance::Cast(b)); |
20954 } | 20961 } |
20955 } | 20962 } |
20956 static uword Hash(const Object& obj) { | 20963 static uword Hash(const Object& obj) { |
20957 if (obj.IsNull()) { | 20964 if (obj.IsNull()) { |
20958 return 0; | 20965 return 0; |
(...skipping 1063 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
22022 return UserTag::null(); | 22029 return UserTag::null(); |
22023 } | 22030 } |
22024 | 22031 |
22025 | 22032 |
22026 const char* UserTag::ToCString() const { | 22033 const char* UserTag::ToCString() const { |
22027 const String& tag_label = String::Handle(label()); | 22034 const String& tag_label = String::Handle(label()); |
22028 return tag_label.ToCString(); | 22035 return tag_label.ToCString(); |
22029 } | 22036 } |
22030 | 22037 |
22031 } // namespace dart | 22038 } // namespace dart |
OLD | NEW |