Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(662)

Side by Side Diff: runtime/vm/object.cc

Issue 1873283003: Provide a mechanism for naming a hash table so that it can be used in DumpStats to identify the tab… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/hash_table_test.cc ('k') | runtime/vm/parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 2069 matching lines...) Expand 10 before | Expand all | Expand 10 after
2080 intptr_t Hash() const { return name_.Hash(); } 2080 intptr_t Hash() const { return name_.Hash(); }
2081 private: 2081 private:
2082 const String& name_; 2082 const String& name_;
2083 String* tmp_string_; 2083 String* tmp_string_;
2084 }; 2084 };
2085 2085
2086 2086
2087 // Traits for looking up Functions by name. 2087 // Traits for looking up Functions by name.
2088 class ClassFunctionsTraits { 2088 class ClassFunctionsTraits {
2089 public: 2089 public:
2090 static const char* Name() { return "ClassFunctionsTraits"; }
2091
2090 // Called when growing the table. 2092 // Called when growing the table.
2091 static bool IsMatch(const Object& a, const Object& b) { 2093 static bool IsMatch(const Object& a, const Object& b) {
2092 ASSERT(a.IsFunction() && b.IsFunction()); 2094 ASSERT(a.IsFunction() && b.IsFunction());
2093 // Function objects are always canonical. 2095 // Function objects are always canonical.
2094 return a.raw() == b.raw(); 2096 return a.raw() == b.raw();
2095 } 2097 }
2096 static bool IsMatch(const FunctionName& name, const Object& obj) { 2098 static bool IsMatch(const FunctionName& name, const Object& obj) {
2097 return name.Matches(Function::Cast(obj)); 2099 return name.Matches(Function::Cast(obj));
2098 } 2100 }
2099 static uword Hash(const Object& key) { 2101 static uword Hash(const Object& key) {
(...skipping 6203 matching lines...) Expand 10 before | Expand all | Expand 10 after
8303 const TokenStream& result = TokenStream::Handle(zone, TokenStream::New()); 8305 const TokenStream& result = TokenStream::Handle(zone, TokenStream::New());
8304 result.SetStream(stream); 8306 result.SetStream(stream);
8305 return result.raw(); 8307 return result.raw();
8306 } 8308 }
8307 8309
8308 8310
8309 // CompressedTokenMap maps String and LiteralToken keys to Smi values. 8311 // CompressedTokenMap maps String and LiteralToken keys to Smi values.
8310 // It also supports lookup by TokenDescriptor. 8312 // It also supports lookup by TokenDescriptor.
8311 class CompressedTokenTraits { 8313 class CompressedTokenTraits {
8312 public: 8314 public:
8315 static const char* Name() { return "CompressedTokenTraits"; }
8316
8313 static bool IsMatch(const Scanner::TokenDescriptor& descriptor, 8317 static bool IsMatch(const Scanner::TokenDescriptor& descriptor,
8314 const Object& key) { 8318 const Object& key) {
8315 if (!key.IsLiteralToken()) { 8319 if (!key.IsLiteralToken()) {
8316 return false; 8320 return false;
8317 } 8321 }
8318 const LiteralToken& token = LiteralToken::Cast(key); 8322 const LiteralToken& token = LiteralToken::Cast(key);
8319 return (token.literal() == descriptor.literal->raw()) && 8323 return (token.literal() == descriptor.literal->raw()) &&
8320 (token.kind() == descriptor.kind); 8324 (token.kind() == descriptor.kind);
8321 } 8325 }
8322 8326
(...skipping 909 matching lines...) Expand 10 before | Expand all | Expand 10 after
9232 // Should not be already successfully loaded or just allocated. 9236 // Should not be already successfully loaded or just allocated.
9233 ASSERT(LoadInProgress() || LoadRequested() || LoadFailed()); 9237 ASSERT(LoadInProgress() || LoadRequested() || LoadFailed());
9234 StoreNonPointer(&raw_ptr()->load_state_, RawLibrary::kLoadError); 9238 StoreNonPointer(&raw_ptr()->load_state_, RawLibrary::kLoadError);
9235 StorePointer(&raw_ptr()->load_error_, error.raw()); 9239 StorePointer(&raw_ptr()->load_error_, error.raw());
9236 } 9240 }
9237 9241
9238 9242
9239 // Traits for looking up Libraries by url in a hash set. 9243 // Traits for looking up Libraries by url in a hash set.
9240 class LibraryUrlTraits { 9244 class LibraryUrlTraits {
9241 public: 9245 public:
9246 static const char* Name() { return "LibraryUrlTraits"; }
9247
9242 // Called when growing the table. 9248 // Called when growing the table.
9243 static bool IsMatch(const Object& a, const Object& b) { 9249 static bool IsMatch(const Object& a, const Object& b) {
9244 ASSERT(a.IsLibrary() && b.IsLibrary()); 9250 ASSERT(a.IsLibrary() && b.IsLibrary());
9245 // Library objects are always canonical. 9251 // Library objects are always canonical.
9246 return a.raw() == b.raw(); 9252 return a.raw() == b.raw();
9247 } 9253 }
9248 static uword Hash(const Object& key) { 9254 static uword Hash(const Object& key) {
9249 return Library::Cast(key).UrlHash(); 9255 return Library::Cast(key).UrlHash();
9250 } 9256 }
9251 }; 9257 };
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
9522 obj = LookupImportedObject(name); 9528 obj = LookupImportedObject(name);
9523 } 9529 }
9524 } 9530 }
9525 AddToResolvedNamesCache(name, obj); 9531 AddToResolvedNamesCache(name, obj);
9526 return obj.raw(); 9532 return obj.raw();
9527 } 9533 }
9528 9534
9529 9535
9530 class StringEqualsTraits { 9536 class StringEqualsTraits {
9531 public: 9537 public:
9538 static const char* Name() { return "StringEqualsTraits"; }
9539
9532 static bool IsMatch(const Object& a, const Object& b) { 9540 static bool IsMatch(const Object& a, const Object& b) {
9533 return String::Cast(a).Equals(String::Cast(b)); 9541 return String::Cast(a).Equals(String::Cast(b));
9534 } 9542 }
9535 static uword Hash(const Object& obj) { 9543 static uword Hash(const Object& obj) {
9536 return String::Cast(obj).Hash(); 9544 return String::Cast(obj).Hash();
9537 } 9545 }
9538 }; 9546 };
9539 typedef UnorderedHashMap<StringEqualsTraits> ResolvedNamesMap; 9547 typedef UnorderedHashMap<StringEqualsTraits> ResolvedNamesMap;
9540 9548
9541 9549
(...skipping 12414 matching lines...) Expand 10 before | Expand all | Expand 10 after
21956 return UserTag::null(); 21964 return UserTag::null();
21957 } 21965 }
21958 21966
21959 21967
21960 const char* UserTag::ToCString() const { 21968 const char* UserTag::ToCString() const {
21961 const String& tag_label = String::Handle(label()); 21969 const String& tag_label = String::Handle(label());
21962 return tag_label.ToCString(); 21970 return tag_label.ToCString();
21963 } 21971 }
21964 21972
21965 } // namespace dart 21973 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/hash_table_test.cc ('k') | runtime/vm/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698