// Copyright 2020 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_HEAP_BASE_STACK_H_ #define V8_HEAP_BASE_STACK_H_ #include <map> #include <vector> #include "src/base/macros.h" #include "src/base/platform/platform.h" namespace heap::base { class StackVisitor { … }; #if defined(__has_feature) #if __has_feature(safe_stack) #define V8_USE_SAFE_STACK … #endif // __has_feature(safe_stack) #endif // defined(__has_feature) // Abstraction over the stack. Supports handling of: // - native stack; // - ASAN/MSAN; // - SafeStack: https://releases.llvm.org/10.0.0/tools/clang/docs/SafeStack.html // // Stacks grow down, so throughout this class "start" refers the highest // address of the stack, and top/marker the lowest. // // TODO(chromium:1056170): Consider adding a component that keeps track // of relevant GC stack regions where interesting pointers can be found. class V8_EXPORT_PRIVATE Stack final { … }; } // namespace heap::base #endif // V8_HEAP_BASE_STACK_H_