Skip to content

Commit e7bc5f9

Browse files
committed
Move seldom used fields to separate object to reduce polymorphism
1 parent 62cef9d commit e7bc5f9

File tree

3 files changed

+910
-360
lines changed

3 files changed

+910
-360
lines changed

src/compiler/factory/nodeFactory.ts

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,6 @@ namespace ts {
581581
);
582582
node.parameters = createNodeArray(parameters);
583583
node.type = type;
584-
node.jsDoc = undefined; // extraneous node set by parser
585584
node.transformFlags |=
586585
propagateChildrenFlags(node.parameters) |
587586
propagateChildFlags(node.type);
@@ -643,7 +642,6 @@ namespace ts {
643642
typeParameters
644643
);
645644
node.heritageClauses = asNodeArray(heritageClauses);
646-
node.jsDoc = undefined; // extraneous node set by parser
647645
node.transformFlags |= propagateChildrenFlags(node.heritageClauses);
648646
return node;
649647
}
@@ -719,8 +717,6 @@ namespace ts {
719717
) {
720718
const node = createBaseToken(kind);
721719
node.text = text;
722-
node.hasExtendedUnicodeEscape = undefined;
723-
node.isUnterminated = undefined;
724720
return node;
725721
}
726722

@@ -927,9 +923,6 @@ namespace ts {
927923
// 'this' indicates a lexical 'this'
928924
transformFlags = TransformFlags.ContainsLexicalThis;
929925
break;
930-
case SyntaxKind.EndOfFileToken:
931-
(node as EndOfFileToken).jsDoc = undefined; // extraneous node set by parser
932-
break;
933926
}
934927
if (transformFlags) {
935928
node.transformFlags |= transformFlags;
@@ -1048,7 +1041,6 @@ namespace ts {
10481041
node.constraint = constraint;
10491042
node.default = defaultType;
10501043
node.transformFlags = TransformFlags.ContainsTypeScript;
1051-
node.expression = undefined; // extraneous node set by parser.
10521044
return node;
10531045
}
10541046

@@ -1081,7 +1073,6 @@ namespace ts {
10811073
);
10821074
node.dotDotDotToken = dotDotDotToken;
10831075
node.questionToken = questionToken;
1084-
node.jsDoc = undefined; // extraneous node set by parser
10851076
if (isThisIdentifier(node.name)) {
10861077
node.transformFlags = TransformFlags.ContainsTypeScript;
10871078
}
@@ -1155,8 +1146,6 @@ namespace ts {
11551146
);
11561147
node.type = type;
11571148
node.questionToken = questionToken;
1158-
node.initializer = undefined; // extraneous node set by parser.
1159-
node.jsDoc = undefined; // extraneous node set by parser
11601149
node.transformFlags = TransformFlags.ContainsTypeScript;
11611150
return node;
11621151
}
@@ -1196,7 +1185,6 @@ namespace ts {
11961185
);
11971186
node.questionToken = questionOrExclamationToken && isQuestionToken(questionOrExclamationToken) ? questionOrExclamationToken : undefined;
11981187
node.exclamationToken = questionOrExclamationToken && isExclamationToken(questionOrExclamationToken) ? questionOrExclamationToken : undefined;
1199-
node.jsDoc = undefined; // extraneous node set by parser
12001188
node.transformFlags |=
12011189
propagateChildFlags(node.questionToken) |
12021190
propagateChildFlags(node.exclamationToken) |
@@ -1298,7 +1286,6 @@ namespace ts {
12981286
);
12991287
node.asteriskToken = asteriskToken;
13001288
node.questionToken = questionToken;
1301-
node.exclamationToken = undefined; // extraneous node set by parser.
13021289
node.transformFlags |=
13031290
propagateChildFlags(node.asteriskToken) |
13041291
propagateChildFlags(node.questionToken) |
@@ -2027,9 +2014,6 @@ namespace ts {
20272014
function createBaseExpression<T extends Expression>(kind: T["kind"]) {
20282015
const node = createBaseNode(kind);
20292016
// the following properties are commonly set by the checker/binder
2030-
node.contextualType = undefined;
2031-
node.inferenceContext = undefined;
2032-
node.flowNode = undefined;
20332017
return node;
20342018
}
20352019

@@ -2275,7 +2259,6 @@ namespace ts {
22752259
function createTaggedTemplateExpression(tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral) {
22762260
const node = createBaseExpression<TaggedTemplateExpression>(SyntaxKind.TaggedTemplateExpression);
22772261
node.tag = parenthesizerRules().parenthesizeLeftSideOfAccess(tag);
2278-
node.questionDotToken = undefined; // extraneous node set by parser.
22792262
node.typeArguments = asNodeArray(typeArguments);
22802263
node.template = template;
22812264
node.transformFlags |=
@@ -2326,7 +2309,6 @@ namespace ts {
23262309
const node = createBaseExpression<ParenthesizedExpression>(SyntaxKind.ParenthesizedExpression);
23272310
node.expression = expression;
23282311
node.transformFlags = propagateChildFlags(node.expression);
2329-
node.jsDoc = undefined; // extraneous node set by parser
23302312
return node;
23312313
}
23322314

@@ -2945,7 +2927,6 @@ namespace ts {
29452927
function createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]) {
29462928
const node = createBaseDeclaration<VariableStatement>(SyntaxKind.VariableStatement, /*decorators*/ undefined, modifiers);
29472929
node.declarationList = isArray(declarationList) ? createVariableDeclarationList(declarationList) : declarationList;
2948-
node.jsDoc = undefined; // extraneous node set by parser
29492930
node.transformFlags |=
29502931
propagateChildFlags(node.declarationList);
29512932
if (modifiersToFlags(node.modifiers) & ModifierFlags.Ambient) {
@@ -2971,7 +2952,6 @@ namespace ts {
29712952
function createExpressionStatement(expression: Expression): ExpressionStatement {
29722953
const node = createBaseNode<ExpressionStatement>(SyntaxKind.ExpressionStatement);
29732954
node.expression = parenthesizerRules().parenthesizeExpressionOfExpressionStatement(expression);
2974-
node.jsDoc = undefined; // extraneous node set by parser
29752955
node.transformFlags |= propagateChildFlags(node.expression);
29762956
return node;
29772957
}
@@ -3213,7 +3193,6 @@ namespace ts {
32133193
const node = createBaseNode<LabeledStatement>(SyntaxKind.LabeledStatement);
32143194
node.label = asName(label);
32153195
node.statement = asEmbeddedStatement(statement);
3216-
node.jsDoc = undefined; // extraneous node set by parser
32173196
node.transformFlags |=
32183197
propagateChildFlags(node.label) |
32193198
propagateChildFlags(node.statement);
@@ -3497,7 +3476,6 @@ namespace ts {
34973476
typeParameters
34983477
);
34993478
node.type = type;
3500-
node.jsDoc = undefined; // extraneous node set by parser
35013479
node.transformFlags = TransformFlags.ContainsTypeScript;
35023480
return node;
35033481
}
@@ -3534,7 +3512,6 @@ namespace ts {
35343512
name
35353513
);
35363514
node.members = createNodeArray(members);
3537-
node.jsDoc = undefined; // extraneous node set by parser
35383515
node.transformFlags |=
35393516
propagateChildrenFlags(node.members) |
35403517
TransformFlags.ContainsTypeScript;
@@ -3572,7 +3549,6 @@ namespace ts {
35723549
node.flags |= flags & (NodeFlags.Namespace | NodeFlags.NestedNamespace | NodeFlags.GlobalAugmentation);
35733550
node.name = name;
35743551
node.body = body;
3575-
node.jsDoc = undefined; // extraneous node set by parser
35763552
if (modifiersToFlags(node.modifiers) & ModifierFlags.Ambient) {
35773553
node.transformFlags = TransformFlags.ContainsTypeScript;
35783554
}
@@ -3639,7 +3615,6 @@ namespace ts {
36393615
/*modifiers*/ undefined,
36403616
name
36413617
);
3642-
node.jsDoc = undefined; // extraneous node set by parser
36433618
node.transformFlags = TransformFlags.ContainsTypeScript;
36443619
return node;
36453620
}
@@ -3665,7 +3640,6 @@ namespace ts {
36653640
name
36663641
);
36673642
node.moduleReference = moduleReference;
3668-
node.jsDoc = undefined; // extraneous node set by parser
36693643
node.transformFlags |= propagateChildFlags(node.moduleReference);
36703644
if (!isExternalModuleReference(node.moduleReference)) node.transformFlags |= TransformFlags.ContainsTypeScript;
36713645
return node;
@@ -3701,7 +3675,6 @@ namespace ts {
37013675
);
37023676
node.importClause = importClause;
37033677
node.moduleSpecifier = moduleSpecifier;
3704-
node.jsDoc = undefined; // extraneous node set by parser
37053678
node.transformFlags |=
37063679
propagateChildFlags(node.importClause) |
37073680
propagateChildFlags(node.moduleSpecifier);
@@ -3830,7 +3803,6 @@ namespace ts {
38303803
node.expression = isExportEquals
38313804
? parenthesizerRules().parenthesizeRightSideOfBinary(SyntaxKind.EqualsToken, /*leftSide*/ undefined, expression)
38323805
: parenthesizerRules().parenthesizeExpressionOfExportDefault(expression);
3833-
node.jsDoc = undefined; // extraneous node set by parser
38343806
node.transformFlags |= propagateChildFlags(node.expression);
38353807
return node;
38363808
}
@@ -3865,7 +3837,6 @@ namespace ts {
38653837
node.isTypeOnly = isTypeOnly;
38663838
node.exportClause = exportClause;
38673839
node.moduleSpecifier = moduleSpecifier;
3868-
node.jsDoc = undefined; // extraneous node set by parser
38693840
node.transformFlags |=
38703841
propagateChildFlags(node.exportClause) |
38713842
propagateChildFlags(node.moduleSpecifier);
@@ -4652,10 +4623,7 @@ namespace ts {
46524623
/*modifiers*/ undefined,
46534624
name
46544625
);
4655-
node.questionToken = undefined; // extraneous node set by parser.
4656-
node.exclamationToken = undefined; // extraneous node set by parser.
46574626
node.initializer = parenthesizerRules().parenthesizeExpressionForDisallowedComma(initializer);
4658-
node.jsDoc = undefined; // extraneous node set by parser
46594627
node.transformFlags |=
46604628
propagateChildFlags(node.name) |
46614629
propagateChildFlags(node.initializer);
@@ -4687,11 +4655,7 @@ namespace ts {
46874655
/*modifiers*/ undefined,
46884656
name
46894657
);
4690-
node.equalsToken = undefined; // extraneous node set by parser.
46914658
node.objectAssignmentInitializer = objectAssignmentInitializer && parenthesizerRules().parenthesizeExpressionForDisallowedComma(objectAssignmentInitializer);
4692-
node.questionToken = undefined; // extraneous node set by parser.
4693-
node.exclamationToken = undefined; // extraneous node set by parser.
4694-
node.jsDoc = undefined; // extraneous node set by parser
46954659
node.transformFlags |=
46964660
propagateChildFlags(node.objectAssignmentInitializer) |
46974661
TransformFlags.ContainsES2015;
@@ -4720,7 +4684,6 @@ namespace ts {
47204684
function createSpreadAssignment(expression: Expression) {
47214685
const node = createBaseNode<SpreadAssignment>(SyntaxKind.SpreadAssignment);
47224686
node.expression = parenthesizerRules().parenthesizeExpressionForDisallowedComma(expression);
4723-
node.jsDoc = undefined; // extraneous node set by parser
47244687
node.transformFlags |=
47254688
propagateChildFlags(node.expression) |
47264689
TransformFlags.ContainsES2018 |
@@ -4780,8 +4743,6 @@ namespace ts {
47804743
node.scriptKind = 0;
47814744
node.isDeclarationFile = false;
47824745
node.hasNoDefaultLib = false;
4783-
node.externalModuleIndicator = undefined;
4784-
node.commonJsModuleIndicator = undefined;
47854746
node.transformFlags |=
47864747
propagateChildrenFlags(node.statements) |
47874748
propagateChildFlags(node.endOfFileToken);
@@ -4860,15 +4821,8 @@ namespace ts {
48604821
node.texts = texts;
48614822
node.fileName = "";
48624823
node.text = "";
4863-
node.helpers = undefined;
48644824
node.referencedFiles = emptyArray;
4865-
node.typeReferenceDirectives = undefined;
48664825
node.libReferenceDirectives = emptyArray;
4867-
node.hasNoDefaultLib = undefined;
4868-
node.sourceMapPath = undefined;
4869-
node.sourceMapText = undefined;
4870-
node.oldFileOfCurrentEmit = undefined;
4871-
node.parsedSourceMap = undefined;
48724826
node.getLineAndCharacterOfPosition = pos => getLineAndCharacterOfPosition(node, pos);
48734827
return node;
48744828
}
@@ -4907,17 +4861,8 @@ namespace ts {
49074861
// @api
49084862
function createInputFiles(): InputFiles {
49094863
const node = createBaseNode<InputFiles>(SyntaxKind.InputFiles);
4910-
node.javascriptPath = undefined;
49114864
node.javascriptText = "";
4912-
node.javascriptMapPath = undefined;
4913-
node.javascriptMapText = undefined;
4914-
node.declarationPath = undefined;
49154865
node.declarationText = "";
4916-
node.declarationMapPath = undefined;
4917-
node.declarationMapText = undefined;
4918-
node.buildInfoPath = undefined;
4919-
node.buildInfo = undefined;
4920-
node.oldFileOfCurrentEmit = undefined;
49214866
return node;
49224867
}
49234868

0 commit comments

Comments
 (0)