1631 {
1633 Zone* zone = thread->zone();
1634
1635 ProcessedSample* processed_sample = new (zone) ProcessedSample();
1636
1637
1638 processed_sample->set_timestamp(sample->timestamp());
1639 processed_sample->set_tid(sample->tid());
1640 processed_sample->set_vm_tag(sample->vm_tag());
1641 processed_sample->set_user_tag(sample->user_tag());
1642 if (sample->is_allocation_sample()) {
1643 processed_sample->set_allocation_cid(sample->allocation_cid());
1644 processed_sample->set_allocation_identity_hash(
1645 sample->allocation_identity_hash());
1646 }
1647 processed_sample->set_first_frame_executing(!sample->exit_frame_sample());
1648
1649
1650 bool truncated = false;
1651 Sample* current = sample;
1652 while (current != nullptr) {
1654 if (current->At(i) == 0) {
1655 break;
1656 }
1657 processed_sample->Add(current->At(i));
1658 }
1659
1660 truncated = truncated || current->truncated_trace();
1661 current =
Next(current);
1662 }
1663
1664 if (!sample->exit_frame_sample()) {
1665 processed_sample->FixupCaller(clt, 0,
1666 sample->GetStackBuffer());
1667 }
1668
1669 processed_sample->set_truncated(truncated);
1670 return processed_sample;
1671}
Sample * Next(Sample *sample)
static constexpr int kPCArraySizeInWords
static Thread * Current()