1 // Copyright 2016 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "src/base/debug/stack_trace.h" 6 7 #include <string.h> 8 9 #include <algorithm> 10 #include <sstream> 11 12 #include "src/base/macros.h" 13 14 namespace v8 { 15 namespace base { 16 namespace debug { 17 StackTrace(const void * const * trace,size_t count)18StackTrace::StackTrace(const void* const* trace, size_t count) { 19 count = std::min(count, arraysize(trace_)); 20 if (count) memcpy(trace_, trace, count * sizeof(trace_[0])); 21 count_ = count; 22 } 23 24 StackTrace::~StackTrace() = default; 25 Addresses(size_t * count) const26const void* const* StackTrace::Addresses(size_t* count) const { 27 *count = count_; 28 if (count_) return trace_; 29 return nullptr; 30 } 31 ToString() const32std::string StackTrace::ToString() const { 33 std::stringstream stream; 34 OutputToStream(&stream); 35 return stream.str(); 36 } 37 38 } // namespace debug 39 } // namespace base 40 } // namespace v8 41