mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #85911 from augusto2112/factor-context-descriptor-symbol
[RemoteInspection] Factor out buildContextDescriptorManglingForSymbol
This commit is contained in:
@@ -2643,6 +2643,26 @@ private:
|
||||
return resultAddress;
|
||||
}
|
||||
|
||||
Demangle::NodePointer
|
||||
buildContextDescriptorManglingForSymbol(llvm::StringRef symbol,
|
||||
Demangler &dem) {
|
||||
if (auto demangledSymbol = buildContextManglingForSymbol(symbol, dem)) {
|
||||
// Look through Type nodes since we're building up a mangling here.
|
||||
if (demangledSymbol->getKind() == Demangle::Node::Kind::Type) {
|
||||
demangledSymbol = demangledSymbol->getChild(0);
|
||||
}
|
||||
return demangledSymbol;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Demangle::NodePointer
|
||||
buildContextDescriptorManglingForSymbol(const std::string &symbol,
|
||||
Demangler &dem) {
|
||||
return buildContextDescriptorManglingForSymbol(dem.copyString(symbol), dem);
|
||||
}
|
||||
|
||||
Demangle::NodePointer
|
||||
buildContextDescriptorMangling(const ParentContextDescriptorRef &descriptor,
|
||||
Demangler &dem, int recursion_limit) {
|
||||
@@ -2656,15 +2676,7 @@ private:
|
||||
|
||||
// Try to demangle the symbol name to figure out what context it would
|
||||
// point to.
|
||||
auto demangledSymbol = buildContextManglingForSymbol(descriptor.getSymbol(),
|
||||
dem);
|
||||
if (!demangledSymbol)
|
||||
return nullptr;
|
||||
// Look through Type notes since we're building up a mangling here.
|
||||
if (demangledSymbol->getKind() == Demangle::Node::Kind::Type){
|
||||
demangledSymbol = demangledSymbol->getChild(0);
|
||||
}
|
||||
return demangledSymbol;
|
||||
return buildContextDescriptorManglingForSymbol(descriptor.getSymbol(), dem);
|
||||
}
|
||||
|
||||
Demangle::NodePointer
|
||||
@@ -2680,7 +2692,7 @@ private:
|
||||
Reader->resolvePointerAsSymbol(descriptor.getRemoteAddress())) {
|
||||
auto symbol = remoteAbsolutePointer->getSymbol();
|
||||
if (!symbol.empty()) {
|
||||
if (auto demangledSymbol = buildContextManglingForSymbol(symbol, dem)) {
|
||||
if (auto demangledSymbol = buildContextDescriptorManglingForSymbol(symbol, dem)) {
|
||||
return demangledSymbol;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user