OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/profiler/strings-storage.h" | 5 #include "src/profiler/strings-storage.h" |
6 | 6 |
| 7 #include <memory> |
| 8 |
7 #include "src/base/smart-pointers.h" | 9 #include "src/base/smart-pointers.h" |
8 #include "src/objects-inl.h" | 10 #include "src/objects-inl.h" |
9 | 11 |
10 namespace v8 { | 12 namespace v8 { |
11 namespace internal { | 13 namespace internal { |
12 | 14 |
13 | 15 |
14 bool StringsStorage::StringsMatch(void* key1, void* key2) { | 16 bool StringsStorage::StringsMatch(void* key1, void* key2) { |
15 return strcmp(reinterpret_cast<char*>(key1), reinterpret_cast<char*>(key2)) == | 17 return strcmp(reinterpret_cast<char*>(key1), reinterpret_cast<char*>(key2)) == |
16 0; | 18 0; |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 } | 76 } |
75 return AddOrDisposeString(str.start(), len); | 77 return AddOrDisposeString(str.start(), len); |
76 } | 78 } |
77 | 79 |
78 | 80 |
79 const char* StringsStorage::GetName(Name* name) { | 81 const char* StringsStorage::GetName(Name* name) { |
80 if (name->IsString()) { | 82 if (name->IsString()) { |
81 String* str = String::cast(name); | 83 String* str = String::cast(name); |
82 int length = Min(kMaxNameSize, str->length()); | 84 int length = Min(kMaxNameSize, str->length()); |
83 int actual_length = 0; | 85 int actual_length = 0; |
84 base::SmartArrayPointer<char> data = str->ToCString( | 86 std::unique_ptr<char[]> data = str->ToCString( |
85 DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL, 0, length, &actual_length); | 87 DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL, 0, length, &actual_length); |
86 return AddOrDisposeString(data.Detach(), actual_length); | 88 return AddOrDisposeString(data.release(), actual_length); |
87 } else if (name->IsSymbol()) { | 89 } else if (name->IsSymbol()) { |
88 return "<symbol>"; | 90 return "<symbol>"; |
89 } | 91 } |
90 return ""; | 92 return ""; |
91 } | 93 } |
92 | 94 |
93 | 95 |
94 const char* StringsStorage::GetName(int index) { | 96 const char* StringsStorage::GetName(int index) { |
95 return GetFormatted("%d", index); | 97 return GetFormatted("%d", index); |
96 } | 98 } |
(...skipping 18 matching lines...) Expand all Loading... |
115 } | 117 } |
116 return size; | 118 return size; |
117 } | 119 } |
118 | 120 |
119 base::HashMap::Entry* StringsStorage::GetEntry(const char* str, int len) { | 121 base::HashMap::Entry* StringsStorage::GetEntry(const char* str, int len) { |
120 uint32_t hash = StringHasher::HashSequentialString(str, len, hash_seed_); | 122 uint32_t hash = StringHasher::HashSequentialString(str, len, hash_seed_); |
121 return names_.LookupOrInsert(const_cast<char*>(str), hash); | 123 return names_.LookupOrInsert(const_cast<char*>(str), hash); |
122 } | 124 } |
123 } // namespace internal | 125 } // namespace internal |
124 } // namespace v8 | 126 } // namespace v8 |
OLD | NEW |