25 const auto& code_array =
31 memmove(pc_offset_array.DataAddr(0), pc_offset_list.
data(),
39 intptr_t skip_frames = 1) {
49 code_array.Add(
frame.code);
50 pc_offset_array.
Add(
frame.pc_offset);
76 if (!
frame->IsDartFrame()) {
79 if (skip_frames > 0) {
85 const intptr_t pc_offset =
frame->pc() -
code.PayloadStart();
87 pc_offset_list->
Add(pc_offset);
111 return frame !=
nullptr;
static ArrayPtr MakeFixedLength(const GrowableObjectArray &growable_array, bool unique=false)
void Add(const Object &value, Heap::Space space=Heap::kNew) const
static GrowableObjectArrayPtr New(Heap::Space space=Heap::kNew)
static Object & ZoneHandle()
@ kNoCrossThreadIteration
static void CollectFrames(Thread *thread, int skip_frames, const std::function< void(const Frame &)> &handle_frame, bool *has_async_catch_error=nullptr)
static StackTracePtr New(const Array &code_array, const TypedData &pc_offset_array, Heap::Space space=Heap::kNew)
static Thread * Current()
static TypedDataPtr New(intptr_t class_id, intptr_t len, Heap::Space space=Heap::kNew)
StackTracePtr GetStackTraceForException()
static void AppendFrames(const GrowableObjectArray &code_list, GrowableArray< uword > *pc_offset_list, int skip_frames)
static constexpr intptr_t kDefaultStackAllocation
static StackTracePtr CurrentStackTrace(Thread *thread, intptr_t skip_frames=1)
DEFINE_NATIVE_ENTRY(List_allocate, 0, 2)
constexpr intptr_t kWordSize
const StackTrace & GetCurrentStackTrace(int skip_frames)
static StackTracePtr CreateStackTraceObject(Zone *zone, const GrowableObjectArray &code_list, const GrowableArray< uword > &pc_offset_list)
DECLARE_FLAG(bool, show_invisible_frames)