Lines Matching full:probe

1 //===- lib/MC/MCPseudoProbe.cpp - Pseudo probe encoding support ----------===//
55 "Last probe should not be null for non-sentinel probes");
64 assert(Type <= 0xF && "Probe type too big to encode, exceeding 15");
69 "Probe attributes too big to encode, exceeding 7");
87 // Emit the GUID of the split function that the sentinel probe represents.
96 dbgs() << "Probe: " << Index << "\n";
101 const MCPseudoProbe &Probe, const MCPseudoProbeInlineStack &InlineStack) {
106 // Probe: GUID of C, ...
108 // which means, Function A inlines function B at call site with a probe id of
109 // 88, and B inlines C at probe 66. The tri-tree expects a tree path like {[0,
110 // A], [88, B], [66, C]} to locate the tree node where the probe should be
115 // An empty inline stack means the function that the probe originates from
119 Top = InlineSite(Probe.getGuid(), 0);
127 // point to the node that the probe originates from.
133 // Make an edge by using the previous probe id and current GUID.
137 Cur = Cur->getOrAddNode(InlineSite(Probe.getGuid(), Index));
140 Cur->Probes.push_back(Probe);
159 // Emit number of probes in this node, including a sentinel probe for
164 "Starting probe of a top-level function should be a sentinel probe");
165 // The main body of a split function doesn't need a sentinel probe.
173 // Emit sentinel probe for top-level functions
178 for (const auto &Probe : Probes) {
179 Probe.emit(MCOS, LastProbe);
180 LastProbe = &Probe;
192 // Emit probe index
237 // Emit the group guarded by a sentinel probe.
243 const MCPseudoProbe *Probe = &SentinelProbe;
244 Inlinee.second->emit(MCOS, Probe);
251 // This emits the pseudo probe tables.
265 // Put out the probe.
273 "Probe function must exist for a valid GUID");
288 // Note that it won't include the probe's belonging function(leaf location)
496 // For sentinel probe, the addr field actually stores the GUID of the
501 // For now we assume all probe encoding should be either based on
502 // leading probe address or function start address.
549 OS << "Pseudo Probe Desc:\n";
562 for (auto &Probe : It->second) {
563 OS << " [Probe]:\t";
564 Probe.print(OS, GUID2FuncDescMap, true);
589 for (const auto &Probe : Probes) {
590 if (Probe.isCall()) {
591 // Disabling the assert and returning first call probe seen so far.
601 // "There should be only one call probe corresponding to address "
603 CallProbe = &Probe;
618 const MCDecodedPseudoProbe *Probe,
621 Probe->getInlineContext(InlineContextStack, GUID2FuncDescMap);
624 // Note that the context from probe doesn't include leaf frame,
626 const auto *FuncDesc = getFuncDescForGUID(Probe->getGuid());
628 MCPseudoProbeFrameLocation(FuncDesc->FuncName, Probe->getIndex()));
632 const MCDecodedPseudoProbe *Probe) const {
633 MCDecodedPseudoProbeInlineTree *InlinerNode = Probe->getInlineTreeNode();