diff options
| author | Yong He <yonghe@outlook.com> | 2023-07-05 14:37:48 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-05 14:37:48 -0700 |
| commit | 6c7120d684cc46caafbe348d658158c0060a7638 (patch) | |
| tree | e8ba738564b5cdceda22013900a0ed762c184bd3 /source/slang/slang-mangle.cpp | |
| parent | 6063304cb8d73d430e7ef81c62cd9822302fcc19 (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.cpp | 14 |
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) |
