Skip to content

Commit 14eac71

Browse files
rahul-kamatcopybara-github
authored andcommitted
Introduce mechanism for running a subset of JSC transpilation and optimization passes
PiperOrigin-RevId: 716405590
1 parent ce66d9f commit 14eac71

6 files changed

+22
-9
lines changed

src/com/google/javascript/jscomp/CheckExtraRequiresPassConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ protected PassListBuilder getChecks() {
4646
}
4747

4848
@Override
49-
protected PassListBuilder getOptimizations() {
49+
protected PassListBuilder getOptimizations(OptimizationPasses optimizationPasses) {
5050
return new PassListBuilder(options);
5151
}
5252
}

src/com/google/javascript/jscomp/Compiler.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import com.google.javascript.jscomp.JSChunkGraph.ChunkDependenceException;
4747
import com.google.javascript.jscomp.JSChunkGraph.MissingChunkException;
4848
import com.google.javascript.jscomp.NodeTraversal.AbstractPreOrderCallback;
49+
import com.google.javascript.jscomp.PassConfig.OptimizationPasses;
4950
import com.google.javascript.jscomp.SortingErrorManager.ErrorReportGenerator;
5051
import com.google.javascript.jscomp.base.format.SimpleFormat;
5152
import com.google.javascript.jscomp.colors.ColorRegistry;
@@ -3003,7 +3004,8 @@ boolean endsWith(String suffix) {
30033004
void performTranspilationAndOptimizations() {
30043005
checkState(options.shouldOptimize());
30053006
// getOptimizations() also includes transpilation passes
3006-
ImmutableList<PassFactory> optimizations = getPassConfig().getOptimizations().build();
3007+
ImmutableList<PassFactory> optimizations =
3008+
getPassConfig().getOptimizations(OptimizationPasses.ALL).build();
30073009
if (optimizations.isEmpty()) {
30083010
return;
30093011
}

src/com/google/javascript/jscomp/ConformancePassConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ protected PassListBuilder getChecks() {
4343
}
4444

4545
@Override
46-
protected PassListBuilder getOptimizations() {
46+
protected PassListBuilder getOptimizations(OptimizationPasses optimizationPasses) {
4747
return new PassListBuilder(options);
4848
}
4949
}

src/com/google/javascript/jscomp/DefaultPassConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ protected PassListBuilder getChecks() {
498498
}
499499

500500
@Override
501-
protected PassListBuilder getOptimizations() {
501+
protected PassListBuilder getOptimizations(OptimizationPasses optimizationPasses) {
502502
PassListBuilder passes = new PassListBuilder(options);
503503
// At this point all checks have been done.
504504
if (options.exportTestFunctions) {

src/com/google/javascript/jscomp/LintPassConfig.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ protected PassListBuilder getChecks() {
6060
}
6161

6262
@Override
63-
protected PassListBuilder getOptimizations() {
63+
protected PassListBuilder getOptimizations(OptimizationPasses optimizationPasses) {
6464
return new PassListBuilder(options);
6565
}
6666

src/com/google/javascript/jscomp/PassConfig.java

+15-4
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,18 @@ protected PassListBuilder getTranspileOnlyPasses() {
6161
* <p>Optimization passes revolve around producing smaller and faster code. They should always run
6262
* after checking passes.
6363
*/
64-
protected abstract PassListBuilder getOptimizations();
64+
protected abstract PassListBuilder getOptimizations(OptimizationPasses optimizationPasses);
65+
66+
/**
67+
* Different ways to split optimization passes. Passing one of these enum options to
68+
* getOptimizations() to tell to configure which list of stage 2 passes to return.
69+
*/
70+
public enum OptimizationPasses {
71+
ALL,
72+
// TODO(user): Enable these in a follow-up CL.
73+
// FIRST_HALF, // Passes from beginning of stage 2 until before the early optimization loop.
74+
// SECOND_HALF, // Passes from the early optimization loop until the end of stage 2.
75+
}
6576

6677
/**
6778
* Gets the finalization passes to run.
@@ -75,7 +86,7 @@ protected PassListBuilder getTranspileOnlyPasses() {
7586
GraphvizGraph getPassGraph() {
7687
LinkedDirectedGraph<String, String> graph = LinkedDirectedGraph.createWithoutAnnotations();
7788
Iterable<PassFactory> allPasses =
78-
Iterables.concat(getChecks().build(), getOptimizations().build());
89+
Iterables.concat(getChecks().build(), getOptimizations(OptimizationPasses.ALL).build());
7990
String lastPass = null;
8091
String loopStart = null;
8192
for (PassFactory pass : allPasses) {
@@ -131,8 +142,8 @@ protected PassListBuilder getChecks() {
131142
}
132143

133144
@Override
134-
protected PassListBuilder getOptimizations() {
135-
return delegate.getOptimizations();
145+
protected PassListBuilder getOptimizations(OptimizationPasses optimizationPasses) {
146+
return delegate.getOptimizations(optimizationPasses);
136147
}
137148

138149
@Override

0 commit comments

Comments
 (0)