// Copyright 2016 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/base/debug/stack_trace.h" #include <string.h> #include <algorithm> #include <sstream> #include "src/base/macros.h" namespace v8 { namespace base { namespace debug { StackTrace::StackTrace(const void* const* trace, size_t count) { count = std::min(count, arraysize(trace_)); if (count) memcpy(trace_, trace, count * sizeof(trace_[0])); count_ = count; } StackTrace::~StackTrace() = default; const void* const* StackTrace::Addresses(size_t* count) const { *count = count_; if (count_) return trace_; return nullptr; } std::string StackTrace::ToString() const { std::stringstream stream; OutputToStream(&stream); return stream.str(); } } // namespace debug } // namespace base } // namespace v8