| // Copyright 2019 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. |
| |
| #ifndef V8_TOOLS_DEBUG_HELPER_HEAP_CONSTANTS_H_ |
| #define V8_TOOLS_DEBUG_HELPER_HEAP_CONSTANTS_H_ |
| |
| #include <cstdint> |
| #include <string> |
| #include <vector> |
| |
| #include "debug-helper.h" |
| #include "src/objects/instance-type.h" |
| |
| namespace d = v8::debug_helper; |
| |
| namespace v8 { |
| namespace internal { |
| namespace debug_helper_internal { |
| |
| // ===== Functions generated by gen-heap-constants.py: ========================= |
| |
| // Returns the name of a known object, given its offset within the first page of |
| // the space, or empty string on failure. |
| std::string FindKnownObjectInOldSpace(uintptr_t offset); |
| std::string FindKnownObjectInReadOnlySpace(uintptr_t offset); |
| std::string FindKnownObjectInMapSpace(uintptr_t offset); |
| |
| // In builds with pointer compression enabled, sets the *_first_page members in |
| // the HeapAddresses object. In other builds, does nothing. |
| void FillInUnknownHeapAddresses(d::HeapAddresses* heap_addresses, |
| uintptr_t any_uncompressed_ptr); |
| |
| // Returns the instance type for the known Map, given its offset within the |
| // first page of the space, or empty string on failure. |
| int FindKnownMapInstanceTypeInMapSpace(uintptr_t offset); |
| int FindKnownMapInstanceTypeInReadOnlySpace(uintptr_t offset); |
| |
| // ===== End of generated functions. =========================================== |
| |
| // Returns a descriptive string if the given address matches a known object, or |
| // an empty string otherwise. |
| std::string FindKnownObject(uintptr_t address, |
| const d::HeapAddresses& heap_addresses); |
| |
| struct KnownInstanceType { |
| enum class Confidence { |
| kLow, |
| kHigh, |
| }; |
| KnownInstanceType() : confidence(Confidence::kLow) {} |
| KnownInstanceType(int type) : KnownInstanceType() { |
| if (type >= 0) { |
| confidence = Confidence::kHigh; |
| types.push_back(static_cast<v8::internal::InstanceType>(type)); |
| } |
| } |
| Confidence confidence; |
| std::vector<v8::internal::InstanceType> types; |
| }; |
| |
| // Returns information about the instance type of the Map at the given address, |
| // based on the list of known Maps. |
| KnownInstanceType FindKnownMapInstanceTypes( |
| uintptr_t address, const d::HeapAddresses& heap_addresses); |
| |
| } // namespace debug_helper_internal |
| } // namespace internal |
| } // namespace v8 |
| |
| #endif |