Skip to content

Commit dbf6183

Browse files
committed
Remove extraneous pass (#49797)
This removes the storeSettings pass where nodes in the AST could store information they needed out of CompilerSettings for use during later passes. CompilerSettings is part of ScriptRoot which is available during the analysis pass making the storeSettings pass redundant.
1 parent ce2ca3b commit dbf6183

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+9
-501
lines changed

modules/lang-painless/src/main/java/org/elasticsearch/painless/Compiler.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,7 @@ Constructor<?> compile(Loader loader, Set<String> extractedVariables, String nam
211211
ScriptClassInfo scriptClassInfo = new ScriptClassInfo(painlessLookup, scriptClass);
212212
SClass root = Walker.buildPainlessTree(scriptClassInfo, name, source, settings, painlessLookup, null);
213213
root.extractVariables(extractedVariables);
214-
root.storeSettings(settings);
215-
root.analyze(painlessLookup);
214+
root.analyze(painlessLookup, settings);
216215
Map<String, Object> statics = root.write();
217216

218217
try {
@@ -243,8 +242,7 @@ byte[] compile(String name, String source, CompilerSettings settings, Printer de
243242
SClass root = Walker.buildPainlessTree(scriptClassInfo, name, source, settings, painlessLookup,
244243
debugStream);
245244
root.extractVariables(new HashSet<>());
246-
root.storeSettings(settings);
247-
root.analyze(painlessLookup);
245+
root.analyze(painlessLookup, settings);
248246
root.write();
249247

250248
return root.getBytes();

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ANode.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -56,11 +55,6 @@ public abstract class ANode {
5655
this.location = Objects.requireNonNull(location);
5756
}
5857

59-
/**
60-
* Store settings required for future compiler passes.
61-
*/
62-
abstract void storeSettings(CompilerSettings settings);
63-
6458
/**
6559
* Adds all variable names referenced to the variable set.
6660
* <p>

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EAssignment.java

-10
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
import org.elasticsearch.painless.AnalyzerCaster;
2424
import org.elasticsearch.painless.ClassWriter;
25-
import org.elasticsearch.painless.CompilerSettings;
2625
import org.elasticsearch.painless.DefBootstrap;
2726
import org.elasticsearch.painless.Globals;
2827
import org.elasticsearch.painless.Locals;
@@ -65,15 +64,6 @@ public EAssignment(Location location, AExpression lhs, AExpression rhs, boolean
6564
this.operation = operation;
6665
}
6766

68-
@Override
69-
void storeSettings(CompilerSettings settings) {
70-
lhs.storeSettings(settings);
71-
72-
if (rhs != null) {
73-
rhs.storeSettings(settings);
74-
}
75-
}
76-
7767
@Override
7868
void extractVariables(Set<String> variables) {
7969
lhs.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBinary.java

-7
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.elasticsearch.painless.AnalyzerCaster;
2323
import org.elasticsearch.painless.ClassWriter;
24-
import org.elasticsearch.painless.CompilerSettings;
2524
import org.elasticsearch.painless.DefBootstrap;
2625
import org.elasticsearch.painless.Globals;
2726
import org.elasticsearch.painless.Locals;
@@ -60,12 +59,6 @@ public EBinary(Location location, Operation operation, AExpression left, AExpres
6059
this.right = Objects.requireNonNull(right);
6160
}
6261

63-
@Override
64-
void storeSettings(CompilerSettings settings) {
65-
left.storeSettings(settings);
66-
right.storeSettings(settings);
67-
}
68-
6962
@Override
7063
void extractVariables(Set<String> variables) {
7164
left.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBool.java

-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -50,12 +49,6 @@ public EBool(Location location, Operation operation, AExpression left, AExpressi
5049
this.right = Objects.requireNonNull(right);
5150
}
5251

53-
@Override
54-
void storeSettings(CompilerSettings settings) {
55-
left.storeSettings(settings);
56-
right.storeSettings(settings);
57-
}
58-
5952
@Override
6053
void extractVariables(Set<String> variables) {
6154
left.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EBoolean.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -40,11 +39,6 @@ public EBoolean(Location location, boolean constant) {
4039
this.constant = constant;
4140
}
4241

43-
@Override
44-
void storeSettings(CompilerSettings settings) {
45-
// Do nothing.
46-
}
47-
4842
@Override
4943
void extractVariables(Set<String> variables) {
5044
// Do nothing.

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECallLocal.java

-8
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -64,13 +63,6 @@ public ECallLocal(Location location, String name, List<AExpression> arguments) {
6463
this.arguments = Objects.requireNonNull(arguments);
6564
}
6665

67-
@Override
68-
void storeSettings(CompilerSettings settings) {
69-
for (AExpression argument : arguments) {
70-
argument.storeSettings(settings);
71-
}
72-
}
73-
7466
@Override
7567
void extractVariables(Set<String> variables) {
7668
for (AExpression argument : arguments) {

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECapturingFunctionRef.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.DefBootstrap;
2524
import org.elasticsearch.painless.FunctionRef;
2625
import org.elasticsearch.painless.Globals;
@@ -55,11 +54,6 @@ public ECapturingFunctionRef(Location location, String variable, String call) {
5554
this.call = Objects.requireNonNull(call);
5655
}
5756

58-
@Override
59-
void storeSettings(CompilerSettings settings) {
60-
// Do nothing.
61-
}
62-
6357
@Override
6458
void extractVariables(Set<String> variables) {
6559
variables.add(variable);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECast.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -47,11 +46,6 @@ final class ECast extends AExpression {
4746
this.cast = Objects.requireNonNull(cast);
4847
}
4948

50-
@Override
51-
void storeSettings(CompilerSettings settings) {
52-
throw createError(new IllegalStateException("illegal tree structure"));
53-
}
54-
5549
@Override
5650
void extractVariables(Set<String> variables) {
5751
throw createError(new IllegalStateException("Illegal tree structure."));

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EComp.java

-7
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.elasticsearch.painless.AnalyzerCaster;
2323
import org.elasticsearch.painless.ClassWriter;
24-
import org.elasticsearch.painless.CompilerSettings;
2524
import org.elasticsearch.painless.DefBootstrap;
2625
import org.elasticsearch.painless.Globals;
2726
import org.elasticsearch.painless.Locals;
@@ -59,12 +58,6 @@ public EComp(Location location, Operation operation, AExpression left, AExpressi
5958
this.right = Objects.requireNonNull(right);
6059
}
6160

62-
@Override
63-
void storeSettings(CompilerSettings settings) {
64-
left.storeSettings(settings);
65-
right.storeSettings(settings);
66-
}
67-
6861
@Override
6962
void extractVariables(Set<String> variables) {
7063
left.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConditional.java

-8
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.elasticsearch.painless.AnalyzerCaster;
2323
import org.elasticsearch.painless.ClassWriter;
24-
import org.elasticsearch.painless.CompilerSettings;
2524
import org.elasticsearch.painless.Globals;
2625
import org.elasticsearch.painless.Locals;
2726
import org.elasticsearch.painless.Location;
@@ -50,13 +49,6 @@ public EConditional(Location location, AExpression condition, AExpression left,
5049
this.right = Objects.requireNonNull(right);
5150
}
5251

53-
@Override
54-
void storeSettings(CompilerSettings settings) {
55-
condition.storeSettings(settings);
56-
left.storeSettings(settings);
57-
right.storeSettings(settings);
58-
}
59-
6052
@Override
6153
void extractVariables(Set<String> variables) {
6254
condition.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EConstant.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -41,11 +40,6 @@ final class EConstant extends AExpression {
4140
this.constant = constant;
4241
}
4342

44-
@Override
45-
void storeSettings(CompilerSettings settings) {
46-
throw new IllegalStateException("illegal tree structure");
47-
}
48-
4943
@Override
5044
void extractVariables(Set<String> variables) {
5145
throw new IllegalStateException("Illegal tree structure.");

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EDecimal.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -43,11 +42,6 @@ public EDecimal(Location location, String value) {
4342
this.value = Objects.requireNonNull(value);
4443
}
4544

46-
@Override
47-
void storeSettings(CompilerSettings settings) {
48-
// Do nothing.
49-
}
50-
5145
@Override
5246
void extractVariables(Set<String> variables) {
5347
// Do nothing.

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EElvis.java

-7
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.elasticsearch.painless.AnalyzerCaster;
2323
import org.elasticsearch.painless.ClassWriter;
24-
import org.elasticsearch.painless.CompilerSettings;
2524
import org.elasticsearch.painless.Globals;
2625
import org.elasticsearch.painless.Locals;
2726
import org.elasticsearch.painless.Location;
@@ -48,12 +47,6 @@ public EElvis(Location location, AExpression lhs, AExpression rhs) {
4847
this.rhs = requireNonNull(rhs);
4948
}
5049

51-
@Override
52-
void storeSettings(CompilerSettings settings) {
53-
lhs.storeSettings(settings);
54-
rhs.storeSettings(settings);
55-
}
56-
5750
@Override
5851
void extractVariables(Set<String> variables) {
5952
lhs.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EExplicit.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -45,11 +44,6 @@ public EExplicit(Location location, String type, AExpression child) {
4544
this.child = Objects.requireNonNull(child);
4645
}
4746

48-
@Override
49-
void storeSettings(CompilerSettings settings) {
50-
child.storeSettings(settings);
51-
}
52-
5347
@Override
5448
void extractVariables(Set<String> variables) {
5549
child.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EFunctionRef.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.FunctionRef;
2524
import org.elasticsearch.painless.Globals;
2625
import org.elasticsearch.painless.Locals;
@@ -49,11 +48,6 @@ public EFunctionRef(Location location, String type, String call) {
4948
this.call = Objects.requireNonNull(call);
5049
}
5150

52-
@Override
53-
void storeSettings(CompilerSettings settings) {
54-
// do nothing
55-
}
56-
5751
@Override
5852
void extractVariables(Set<String> variables) {
5953
// do nothing

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/EInstanceof.java

-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.Globals;
2524
import org.elasticsearch.painless.Locals;
2625
import org.elasticsearch.painless.Location;
@@ -50,11 +49,6 @@ public EInstanceof(Location location, AExpression expression, String type) {
5049
this.type = Objects.requireNonNull(type);
5150
}
5251

53-
@Override
54-
void storeSettings(CompilerSettings settings) {
55-
expression.storeSettings(settings);
56-
}
57-
5852
@Override
5953
void extractVariables(Set<String> variables) {
6054
expression.extractVariables(variables);

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ELambda.java

+1-14
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
package org.elasticsearch.painless.node;
2121

2222
import org.elasticsearch.painless.ClassWriter;
23-
import org.elasticsearch.painless.CompilerSettings;
2423
import org.elasticsearch.painless.FunctionRef;
2524
import org.elasticsearch.painless.Globals;
2625
import org.elasticsearch.painless.Locals;
@@ -68,8 +67,6 @@ public final class ELambda extends AExpression implements ILambda {
6867
private final List<String> paramNameStrs;
6968
private final List<AStatement> statements;
7069

71-
private CompilerSettings settings;
72-
7370
// extracted variables required to determine captures
7471
private final Set<String> extractedVariables;
7572
// desugared synthetic method (lambda body)
@@ -92,15 +89,6 @@ public ELambda(Location location,
9289
this.extractedVariables = new HashSet<>();
9390
}
9491

95-
@Override
96-
void storeSettings(CompilerSettings settings) {
97-
for (AStatement statement : statements) {
98-
statement.storeSettings(settings);
99-
}
100-
101-
this.settings = settings;
102-
}
103-
10492
@Override
10593
void extractVariables(Set<String> variables) {
10694
for (AStatement statement : statements) {
@@ -180,10 +168,9 @@ void analyze(ScriptRoot scriptRoot, Locals locals) {
180168
desugared = new SFunction(
181169
location, PainlessLookupUtility.typeToCanonicalTypeName(returnType), name, paramTypes, paramNames,
182170
new SBlock(location, statements), true);
183-
desugared.storeSettings(settings);
184171
desugared.generateSignature(scriptRoot.getPainlessLookup());
185172
desugared.analyze(scriptRoot, Locals.newLambdaScope(locals.getProgramScope(), desugared.name, returnType,
186-
desugared.parameters, captures.size(), settings.getMaxLoopCounter()));
173+
desugared.parameters, captures.size(), scriptRoot.getCompilerSettings().getMaxLoopCounter()));
187174
scriptRoot.getFunctionTable().addFunction(desugared.name, desugared.returnType, desugared.typeParameters, true);
188175
scriptRoot.getClassNode().addFunction(desugared);
189176

0 commit comments

Comments
 (0)