From 81299a905e543f419686751423e3f3f9567eefbe Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 13 Feb 2025 19:24:52 -0800 Subject: [PATCH 1/5] Pool some more nodes in test profile --- internal/ast/ast.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/ast/ast.go b/internal/ast/ast.go index a62799a981..ff2dad8753 100644 --- a/internal/ast/ast.go +++ b/internal/ast/ast.go @@ -56,8 +56,10 @@ type NodeFactory struct { jsdocTextPool core.Pool[JSDocText] keywordTypeNodePool core.Pool[KeywordTypeNode] literalTypeNodePool core.Pool[LiteralTypeNode] + methodSignatureDeclarationPool core.Pool[MethodSignatureDeclaration] modifierListPool core.Pool[ModifierList] nodeListPool core.Pool[NodeList] + numericLiteralPool core.Pool[NumericLiteral] parameterDeclarationPool core.Pool[ParameterDeclaration] parenthesizedExpressionPool core.Pool[ParenthesizedExpression] propertyAccessExpressionPool core.Pool[PropertyAccessExpression] @@ -67,6 +69,7 @@ type NodeFactory struct { stringLiteralPool core.Pool[StringLiteral] tokenPool core.Pool[Token] typeReferenceNodePool core.Pool[TypeReferenceNode] + unionTypeNodePool core.Pool[UnionTypeNode] variableDeclarationListPool core.Pool[VariableDeclarationList] variableDeclarationPool core.Pool[VariableDeclaration] variableStatementPool core.Pool[VariableStatement] @@ -3924,7 +3927,7 @@ type MethodSignatureDeclaration struct { } func (f *NodeFactory) NewMethodSignatureDeclaration(modifiers *ModifierList, name *PropertyName, postfixToken *TokenNode, typeParameters *NodeList, parameters *NodeList, returnType *TypeNode) *Node { - data := &MethodSignatureDeclaration{} + data := f.methodSignatureDeclarationPool.New() data.modifiers = modifiers data.name = name data.PostfixToken = postfixToken @@ -4194,7 +4197,7 @@ type NumericLiteral struct { } func (f *NodeFactory) NewNumericLiteral(text string) *Node { - data := &NumericLiteral{} + data := f.numericLiteralPool.New() data.Text = text return newNode(KindNumericLiteral, data) } @@ -5349,7 +5352,7 @@ func (f *NodeFactory) UpdateUnionTypeNode(node *UnionTypeNode, types *TypeList) } func (f *NodeFactory) NewUnionTypeNode(types *NodeList) *Node { - data := &UnionTypeNode{} + data := f.unionTypeNodePool.New() data.Types = types return newNode(KindUnionType, data) } From f62b247b5ee4a31c82a9323ef80189208016a2be Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 13 Feb 2025 19:29:44 -0800 Subject: [PATCH 2/5] Prealloc space for symbol in bindFunctionOrConstructorType --- internal/binder/binder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/binder/binder.go b/internal/binder/binder.go index 93d8fb9b9d..82eb3f1a5c 100644 --- a/internal/binder/binder.go +++ b/internal/binder/binder.go @@ -938,7 +938,7 @@ func (b *Binder) bindFunctionOrConstructorType(node *ast.Node) { b.addDeclarationToSymbol(symbol, node, ast.SymbolFlagsSignature) typeLiteralSymbol := b.newSymbol(ast.SymbolFlagsTypeLiteral, ast.InternalSymbolNameType) b.addDeclarationToSymbol(typeLiteralSymbol, node, ast.SymbolFlagsTypeLiteral) - typeLiteralSymbol.Members = make(ast.SymbolTable) + typeLiteralSymbol.Members = make(ast.SymbolTable, 1) typeLiteralSymbol.Members[symbol.Name] = symbol } From caac4d240c1439d94888dadab8d7d69a9ee7ad82 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 13 Feb 2025 20:20:48 -0800 Subject: [PATCH 3/5] Revert "Prealloc space for symbol in bindFunctionOrConstructorType" This reverts commit f62b247b5ee4a31c82a9323ef80189208016a2be. --- internal/binder/binder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/binder/binder.go b/internal/binder/binder.go index 82eb3f1a5c..93d8fb9b9d 100644 --- a/internal/binder/binder.go +++ b/internal/binder/binder.go @@ -938,7 +938,7 @@ func (b *Binder) bindFunctionOrConstructorType(node *ast.Node) { b.addDeclarationToSymbol(symbol, node, ast.SymbolFlagsSignature) typeLiteralSymbol := b.newSymbol(ast.SymbolFlagsTypeLiteral, ast.InternalSymbolNameType) b.addDeclarationToSymbol(typeLiteralSymbol, node, ast.SymbolFlagsTypeLiteral) - typeLiteralSymbol.Members = make(ast.SymbolTable, 1) + typeLiteralSymbol.Members = make(ast.SymbolTable) typeLiteralSymbol.Members[symbol.Name] = symbol } From 7f4d28727280d635f8b86aa4ac3e3cfa994c1429 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:39:31 -0800 Subject: [PATCH 4/5] InterfaceDeclaration --- internal/ast/ast.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/ast/ast.go b/internal/ast/ast.go index ff2dad8753..0780d8dda0 100644 --- a/internal/ast/ast.go +++ b/internal/ast/ast.go @@ -52,6 +52,7 @@ type NodeFactory struct { expressionStatementPool core.Pool[ExpressionStatement] identifierPool core.Pool[Identifier] ifStatementPool core.Pool[IfStatement] + interfaceDeclarationPool core.Pool[InterfaceDeclaration] jsdocPool core.Pool[JSDoc] jsdocTextPool core.Pool[JSDocText] keywordTypeNodePool core.Pool[KeywordTypeNode] @@ -2936,7 +2937,7 @@ type InterfaceDeclaration struct { } func (f *NodeFactory) NewInterfaceDeclaration(modifiers *ModifierList, name *IdentifierNode, typeParameters *NodeList, heritageClauses *NodeList, members *NodeList) *Node { - data := &InterfaceDeclaration{} + data := f.interfaceDeclarationPool.New() data.modifiers = modifiers data.name = name data.TypeParameters = typeParameters From 358a48d528c166674cbe6f05665bef8b1511f33c Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:42:57 -0800 Subject: [PATCH 5/5] KeywordExpression --- internal/ast/ast.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/ast/ast.go b/internal/ast/ast.go index 0780d8dda0..b4a7dffe3a 100644 --- a/internal/ast/ast.go +++ b/internal/ast/ast.go @@ -55,6 +55,7 @@ type NodeFactory struct { interfaceDeclarationPool core.Pool[InterfaceDeclaration] jsdocPool core.Pool[JSDoc] jsdocTextPool core.Pool[JSDocText] + keywordExpressionPool core.Pool[KeywordExpression] keywordTypeNodePool core.Pool[KeywordTypeNode] literalTypeNodePool core.Pool[LiteralTypeNode] methodSignatureDeclarationPool core.Pool[MethodSignatureDeclaration] @@ -4161,7 +4162,7 @@ type KeywordExpression struct { } func (f *NodeFactory) NewKeywordExpression(kind Kind) *Node { - return newNode(kind, &KeywordExpression{}) + return newNode(kind, f.keywordExpressionPool.New()) } // LiteralLikeBase