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

Side by Side Diff: src/runtime/runtime.cc

Issue 2369963002: [base] Remove PointersMatch, making a separate std::equals hashmap (Closed)
Patch Set: Fix the other simulators Created 4 years, 2 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 | « src/profiler/strings-storage.h ('k') | src/s390/simulator-s390.h » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/runtime/runtime.h" 5 #include "src/runtime/runtime.h"
6 6
7 #include "src/assembler.h" 7 #include "src/assembler.h"
8 #include "src/base/hashmap.h" 8 #include "src/base/hashmap.h"
9 #include "src/contexts.h" 9 #include "src/contexts.h"
10 #include "src/handles-inl.h" 10 #include "src/handles-inl.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 FOR_EACH_INTRINSIC(F) 54 FOR_EACH_INTRINSIC(F)
55 FOR_EACH_INTRINSIC(I) 55 FOR_EACH_INTRINSIC(I)
56 }; 56 };
57 57
58 #undef I 58 #undef I
59 #undef F 59 #undef F
60 60
61 namespace { 61 namespace {
62 62
63 V8_DECLARE_ONCE(initialize_function_name_map_once); 63 V8_DECLARE_ONCE(initialize_function_name_map_once);
64 static const base::HashMap* kRuntimeFunctionNameMap; 64 static const base::CustomMatcherHashMap* kRuntimeFunctionNameMap;
65 65
66 struct IntrinsicFunctionIdentifier { 66 struct IntrinsicFunctionIdentifier {
67 IntrinsicFunctionIdentifier(const unsigned char* data, const int length) 67 IntrinsicFunctionIdentifier(const unsigned char* data, const int length)
68 : data_(data), length_(length) {} 68 : data_(data), length_(length) {}
69 69
70 static bool Match(void* key1, void* key2) { 70 static bool Match(void* key1, void* key2) {
71 const IntrinsicFunctionIdentifier* lhs = 71 const IntrinsicFunctionIdentifier* lhs =
72 static_cast<IntrinsicFunctionIdentifier*>(key1); 72 static_cast<IntrinsicFunctionIdentifier*>(key1);
73 const IntrinsicFunctionIdentifier* rhs = 73 const IntrinsicFunctionIdentifier* rhs =
74 static_cast<IntrinsicFunctionIdentifier*>(key2); 74 static_cast<IntrinsicFunctionIdentifier*>(key2);
75 if (lhs->length_ != rhs->length_) return false; 75 if (lhs->length_ != rhs->length_) return false;
76 return CompareCharsUnsigned(reinterpret_cast<const uint8_t*>(lhs->data_), 76 return CompareCharsUnsigned(reinterpret_cast<const uint8_t*>(lhs->data_),
77 reinterpret_cast<const uint8_t*>(rhs->data_), 77 reinterpret_cast<const uint8_t*>(rhs->data_),
78 rhs->length_) == 0; 78 rhs->length_) == 0;
79 } 79 }
80 80
81 uint32_t Hash() { 81 uint32_t Hash() {
82 return StringHasher::HashSequentialString<uint8_t>( 82 return StringHasher::HashSequentialString<uint8_t>(
83 data_, length_, v8::internal::kZeroHashSeed); 83 data_, length_, v8::internal::kZeroHashSeed);
84 } 84 }
85 85
86 const unsigned char* data_; 86 const unsigned char* data_;
87 const int length_; 87 const int length_;
88 }; 88 };
89 89
90 void InitializeIntrinsicFunctionNames() { 90 void InitializeIntrinsicFunctionNames() {
91 base::HashMap* function_name_map = 91 base::CustomMatcherHashMap* function_name_map =
92 new base::HashMap(IntrinsicFunctionIdentifier::Match); 92 new base::CustomMatcherHashMap(IntrinsicFunctionIdentifier::Match);
93 for (size_t i = 0; i < arraysize(kIntrinsicFunctions); ++i) { 93 for (size_t i = 0; i < arraysize(kIntrinsicFunctions); ++i) {
94 const Runtime::Function* function = &kIntrinsicFunctions[i]; 94 const Runtime::Function* function = &kIntrinsicFunctions[i];
95 IntrinsicFunctionIdentifier* identifier = new IntrinsicFunctionIdentifier( 95 IntrinsicFunctionIdentifier* identifier = new IntrinsicFunctionIdentifier(
96 reinterpret_cast<const unsigned char*>(function->name), 96 reinterpret_cast<const unsigned char*>(function->name),
97 static_cast<int>(strlen(function->name))); 97 static_cast<int>(strlen(function->name)));
98 base::HashMap::Entry* entry = 98 base::HashMap::Entry* entry =
99 function_name_map->InsertNew(identifier, identifier->Hash()); 99 function_name_map->InsertNew(identifier, identifier->Hash());
100 entry->value = const_cast<Runtime::Function*>(function); 100 entry->value = const_cast<Runtime::Function*>(function);
101 } 101 }
102 kRuntimeFunctionNameMap = function_name_map; 102 kRuntimeFunctionNameMap = function_name_map;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 } 158 }
159 159
160 160
161 std::ostream& operator<<(std::ostream& os, Runtime::FunctionId id) { 161 std::ostream& operator<<(std::ostream& os, Runtime::FunctionId id) {
162 return os << Runtime::FunctionForId(id)->name; 162 return os << Runtime::FunctionForId(id)->name;
163 } 163 }
164 164
165 165
166 } // namespace internal 166 } // namespace internal
167 } // namespace v8 167 } // namespace v8
OLDNEW
« no previous file with comments | « src/profiler/strings-storage.h ('k') | src/s390/simulator-s390.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698