| // Copyright 2025 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "src/objects/number-string-cache.h" |
| |
| #include "src/objects/number-string-cache-inl.h" |
| #include "src/utils/ostreams.h" |
| |
| namespace v8::internal { |
| |
| uint32_t SmiStringCache::GetUsedEntriesCount() { |
| uint32_t count = 0; |
| for (auto entry : InternalIndex::Range(capacity())) { |
| uint32_t entry_index = entry.as_uint32() * kEntrySize; |
| Tagged<Object> key = get(entry_index + kEntryKeyIndex); |
| if (key != kEmptySentinel) { |
| ++count; |
| } |
| } |
| return count; |
| } |
| |
| void SmiStringCache::Print(const char* comment) { |
| #ifdef OBJECT_PRINT |
| StdoutStream os; |
| os << comment; |
| for (auto entry : InternalIndex::Range(capacity())) { |
| uint32_t entry_index = entry.as_uint32() * kEntrySize; |
| Tagged<Object> key = get(entry_index + kEntryKeyIndex); |
| if (key != kEmptySentinel) { |
| os << "\n - " << Brief(key); |
| } |
| } |
| os << "\n"; |
| #endif |
| } |
| |
| uint32_t DoubleStringCache::GetUsedEntriesCount() { |
| uint32_t count = 0; |
| for (auto& entry : *this) { |
| if (entry.value_.load() != kEmptySentinel) { |
| ++count; |
| } |
| } |
| return count; |
| } |
| |
| void DoubleStringCache::Print(const char* comment) { |
| #ifdef OBJECT_PRINT |
| StdoutStream os; |
| os << comment << "\n"; |
| DoubleStringCachePrint(os); |
| #endif |
| } |
| |
| } // namespace v8::internal |