diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-06-05 18:20:09 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-05 18:20:09 -0400 |
| commit | 43c146794aab638924d2ab838d10f8af2ebf02a7 (patch) | |
| tree | 520eed8f2ae02c6953cf2aee7c87959a0008badc /source/slang/slang-lookup.cpp | |
| parent | e3e1cf2045f14837cfecb14e252c0e1083787b93 (diff) | |
ASTNodes use MemoryArena (#1376)
* Add a ASTBuilder to a Module
Only construct on valid ASTBuilder (was being called on nullptr on occassion)
* Add nodes to ASTBuilder.
* Compiles with RefPtr removed from AST node types.
* Initialize all AST node pointer variables in headers to nullptr;
* Initialize AST node variables as nullptr.
Make ASTBuilder keep a ref on node types.
Make SyntaxParseCallback returns a NodeBase
* Don't release canonicalType on dtor (managed by ASTBuilder).
* Give ASTBuilders a name and id, to help in debugging.
For now destroy the session TypeCache, to stop it holding things released when the compile request destroys ASTBuilders.
* Moved the TypeCheckingCache over to Linkage from Session.
* NodeBase no longer derived from RefObject.
* Only add/dtor nodes that need destruction.
First pass compile on linux.
Diffstat (limited to 'source/slang/slang-lookup.cpp')
| -rw-r--r-- | source/slang/slang-lookup.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/source/slang/slang-lookup.cpp b/source/slang/slang-lookup.cpp index fae00c6a2..19cd4cafe 100644 --- a/source/slang/slang-lookup.cpp +++ b/source/slang/slang-lookup.cpp @@ -11,7 +11,7 @@ void ensureDecl(SemanticsVisitor* visitor, Decl* decl, DeclCheckState state); DeclRef<ExtensionDecl> ApplyExtensionToType( SemanticsVisitor* semantics, ExtensionDecl* extDecl, - RefPtr<Type> type); + Type* type); // @@ -268,7 +268,7 @@ LookupResult lookUpDirectAndTransparentMembers( } -static RefPtr<SubtypeWitness> _makeSubtypeWitness( +static SubtypeWitness* _makeSubtypeWitness( ASTBuilder* astBuilder, Type* subType, SubtypeWitness* subToMidWitness, @@ -277,7 +277,7 @@ static RefPtr<SubtypeWitness> _makeSubtypeWitness( { if(subToMidWitness) { - RefPtr<TransitiveSubtypeWitness> transitiveWitness = astBuilder->create<TransitiveSubtypeWitness>(); + TransitiveSubtypeWitness* transitiveWitness = astBuilder->create<TransitiveSubtypeWitness>(); transitiveWitness->subToMid = subToMidWitness; transitiveWitness->midToSup = midToSuperConstraint; transitiveWitness->sub = subType; @@ -286,7 +286,7 @@ static RefPtr<SubtypeWitness> _makeSubtypeWitness( } else { - RefPtr<DeclaredSubtypeWitness> declaredWitness = astBuilder->create<DeclaredSubtypeWitness>(); + DeclaredSubtypeWitness* declaredWitness = astBuilder->create<DeclaredSubtypeWitness>(); declaredWitness->declRef = midToSuperConstraint; declaredWitness->sub = subType; declaredWitness->sup = superType; @@ -295,7 +295,7 @@ static RefPtr<SubtypeWitness> _makeSubtypeWitness( } // Same as the above, but we are specializing a type instead of a decl-ref -static RefPtr<Type> _maybeSpecializeSuperType( +static Type* _maybeSpecializeSuperType( ASTBuilder* astBuilder, Type* superType, SubtypeWitness* subIsSuperWitness) @@ -304,7 +304,7 @@ static RefPtr<Type> _maybeSpecializeSuperType( { if (auto superInterfaceDeclRef = superDeclRefType->declRef.as<InterfaceDecl>()) { - RefPtr<ThisTypeSubstitution> thisTypeSubst = astBuilder->create<ThisTypeSubstitution>(); + ThisTypeSubstitution* thisTypeSubst = astBuilder->create<ThisTypeSubstitution>(); thisTypeSubst->interfaceDecl = superInterfaceDeclRef.getDecl(); thisTypeSubst->witness = subIsSuperWitness; thisTypeSubst->outer = superInterfaceDeclRef.substitutions.substitutions; @@ -322,7 +322,7 @@ static RefPtr<Type> _maybeSpecializeSuperType( static void _lookUpMembersInType( ASTBuilder* astBuilder, Name* name, - RefPtr<Type> type, + Type* type, LookupRequest const& request, LookupResult& ioResult, BreadcrumbInfo* breadcrumbs); @@ -584,7 +584,7 @@ static void _lookUpMembersInSuperTypeImpl( static void _lookUpMembersInType( ASTBuilder* astBuilder, Name* name, - RefPtr<Type> type, + Type* type, LookupRequest const& request, LookupResult& ioResult, BreadcrumbInfo* breadcrumbs) @@ -679,7 +679,7 @@ static void _lookUpInScopes( breadcrumb.declRef = aggTypeDeclBaseRef; breadcrumb.prev = nullptr; - RefPtr<Type> type; + Type* type = nullptr; if(auto extDeclRef = aggTypeDeclBaseRef.as<ExtensionDecl>()) { if( request.semantics ) |
