summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-mangle.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-07-05 14:37:48 -0700
committerGitHub <noreply@github.com>2023-07-05 14:37:48 -0700
commit6c7120d684cc46caafbe348d658158c0060a7638 (patch)
treee8ba738564b5cdceda22013900a0ed762c184bd3 /source/slang/slang-mangle.cpp
parent6063304cb8d73d430e7ef81c62cd9822302fcc19 (diff)
Bottleneck DeclRef creation through ASTBuilder. (#2689)
* Bottleneck DeclRef creation through ASTBuilder. * Fix clang error. * Fix. * Fix. * More fix. * Rebase on top of tree. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-mangle.cpp')
-rw-r--r--source/slang/slang-mangle.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/source/slang/slang-mangle.cpp b/source/slang/slang-mangle.cpp
index 3b0d12da8..ee34358ab 100644
--- a/source/slang/slang-mangle.cpp
+++ b/source/slang/slang-mangle.cpp
@@ -355,7 +355,7 @@ namespace Slang
ManglingContext* context,
DeclRef<Decl> declRef)
{
- auto parentDeclRef = declRef.getParent();
+ auto parentDeclRef = declRef.getParent(context->astBuilder);
auto parentGenericDeclRef = parentDeclRef.as<GenericDecl>();
if( parentDeclRef )
{
@@ -441,7 +441,7 @@ namespace Slang
// information about the parameters of the generic here.
emitRaw(context, "g");
UInt genericParameterCount = 0;
- for( auto mm : getMembers(parentGenericDeclRef) )
+ for( auto mm : getMembers(context->astBuilder, parentGenericDeclRef) )
{
if(mm.is<GenericTypeParamDecl>())
{
@@ -463,7 +463,7 @@ namespace Slang
emit(context, genericParameterCount);
OrderedDictionary<GenericTypeParamDecl*, List<Type*>> genericConstraints;
- for (auto mm : getMembers(parentGenericDeclRef))
+ for (auto mm : getMembers(context->astBuilder, parentGenericDeclRef))
{
if (auto genericTypeParamDecl = mm.as<GenericTypeParamDecl>())
{
@@ -478,13 +478,13 @@ namespace Slang
{}
}
- auto canonicalizedConstraints = getCanonicalGenericConstraints(parentGenericDeclRef);
+ auto canonicalizedConstraints = getCanonicalGenericConstraints(context->astBuilder, parentGenericDeclRef);
for (auto& constraint : canonicalizedConstraints)
{
for (auto type : constraint.value)
{
emitRaw(context, "C");
- emitQualifiedName(context, DeclRef<Decl>(constraint.key, nullptr));
+ emitQualifiedName(context, context->astBuilder->getSpecializedDeclRef(constraint.key, nullptr));
emitType(context, type);
}
}
@@ -501,7 +501,7 @@ namespace Slang
//
if( auto callableDeclRef = declRef.as<CallableDecl>())
{
- auto parameters = getParameters(callableDeclRef);
+ auto parameters = getParameters(context->astBuilder, callableDeclRef);
UInt parameterCount = parameters.getCount();
emitRaw(context, "p");
@@ -598,7 +598,7 @@ namespace Slang
String getMangledName(ASTBuilder* astBuilder, DeclRefBase const & declRef)
{
return getMangledName(astBuilder,
- DeclRef<Decl>(declRef.decl, declRef.substitutions));
+ astBuilder->getSpecializedDeclRef<Decl>(declRef.decl, declRef.substitutions));
}
String getMangledName(ASTBuilder* astBuilder, Decl* decl)