Skip to content

Commit

Permalink
Rename DevirtualizePrototypeMethods -> DevirtualizeMethods now th…
Browse files Browse the repository at this point in the history
…at static methods are also devirtualized.

The associated flag is given an alternate name so that assignments in build rules can be updated in a second step.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=249930149
  • Loading branch information
nreid260 authored and tjgq committed May 25, 2019
1 parent 05ee39f commit efb1790
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 29 deletions.
2 changes: 1 addition & 1 deletion src/com/google/javascript/jscomp/CompilationLevel.java
Expand Up @@ -203,7 +203,7 @@ private static void applyFullCompilationOptions(CompilerOptions options) {
options.setCrossChunkMethodMotion(true);

// Call optimizations
options.setDevirtualizePrototypeMethods(true);
options.setDevirtualizeMethods(true);
options.setOptimizeCalls(true);
}

Expand Down
14 changes: 7 additions & 7 deletions src/com/google/javascript/jscomp/CompilerOptions.java
Expand Up @@ -654,10 +654,10 @@ public boolean getCollapseObjectLiterals() {
}

/**
* Devirtualize prototype method by rewriting them to be static calls that
* take the this pointer as their first argument
* Devirtualize prototype method by rewriting them to be static calls that take the this pointer
* as their first argument
*/
public boolean devirtualizePrototypeMethods;
public boolean devirtualizeMethods;

/**
* Use @nosideeffects annotations, function bodies and name graph
Expand Down Expand Up @@ -1276,7 +1276,7 @@ public CompilerOptions() {
renamePrefix = null;
collapsePropertiesLevel = PropertyCollapseLevel.NONE;
collapseObjectLiterals = false;
devirtualizePrototypeMethods = false;
devirtualizeMethods = false;
disambiguateProperties = false;
ambiguateProperties = false;
anonymousFunctionNaming = AnonymousFunctionNamingPolicy.OFF;
Expand Down Expand Up @@ -2343,8 +2343,8 @@ public void setCollapseProperties(boolean fullyCollapse) {
fullyCollapse ? PropertyCollapseLevel.ALL : PropertyCollapseLevel.NONE;
}

public void setDevirtualizePrototypeMethods(boolean devirtualizePrototypeMethods) {
this.devirtualizePrototypeMethods = devirtualizePrototypeMethods;
public void setDevirtualizeMethods(boolean devirtualizeMethods) {
this.devirtualizeMethods = devirtualizeMethods;
}

public void setComputeFunctionSideEffects(boolean computeFunctionSideEffects) {
Expand Down Expand Up @@ -2890,7 +2890,7 @@ public String toString() {
.add("declaredGlobalExternsOnWindow", declaredGlobalExternsOnWindow)
.add("defineReplacements", getDefineReplacements())
.add("dependencyOptions", getDependencyOptions())
.add("devirtualizePrototypeMethods", devirtualizePrototypeMethods)
.add("devirtualizeMethods", devirtualizeMethods)
.add("devMode", devMode)
.add("disambiguatePrivateProperties", disambiguatePrivateProperties)
.add("disambiguateProperties", disambiguateProperties)
Expand Down
10 changes: 5 additions & 5 deletions src/com/google/javascript/jscomp/DefaultPassConfig.java
Expand Up @@ -685,8 +685,8 @@ protected List<PassFactory> getOptimizations() {
// optimizations based on global names (like cross module code motion
// and inline functions). Smart Name Removal does better if run before
// this pass.
if (options.devirtualizePrototypeMethods) {
passes.add(devirtualizePrototypeMethods);
if (options.devirtualizeMethods) {
passes.add(devirtualizeMethods);
}

if (options.customPasses != null) {
Expand Down Expand Up @@ -2500,14 +2500,14 @@ protected FeatureSet featureSet() {
};

/** Rewrite instance methods as static methods, to make them easier to inline. */
private final PassFactory devirtualizePrototypeMethods =
new PassFactory(PassNames.DEVIRTUALIZE_PROTOTYPE_METHODS, true) {
private final PassFactory devirtualizeMethods =
new PassFactory(PassNames.DEVIRTUALIZE_METHODS, true) {
@Override
protected CompilerPass create(AbstractCompiler compiler) {
return OptimizeCalls.builder()
.setCompiler(compiler)
.setConsiderExterns(false)
.addPass(new DevirtualizePrototypeMethods(compiler))
.addPass(new DevirtualizeMethods(compiler))
.build();
}

Expand Down
Expand Up @@ -88,12 +88,11 @@
* </pre>
*
*/
// TODO(nickreid): Change the name to something reflecting that statics are also devirtualized now.
class DevirtualizePrototypeMethods implements OptimizeCalls.CallGraphCompilerPass {
class DevirtualizeMethods implements OptimizeCalls.CallGraphCompilerPass {
private final AbstractCompiler compiler;
private ReferenceMap refMap;

DevirtualizePrototypeMethods(AbstractCompiler compiler) {
DevirtualizeMethods(AbstractCompiler compiler) {
this.compiler = compiler;
}

Expand Down
2 changes: 1 addition & 1 deletion src/com/google/javascript/jscomp/OptimizeCalls.java
Expand Up @@ -41,7 +41,7 @@
* <ul>
* <li>{@link OptimizeParameters} (remove unused and inline constant parameters)
* <li>{@link OptimizeReturns} (remove unused)
* <li>{@link DevirtualizePrototypeMethods}
* <li>{@link DevirtualizeMethods}
* </ul>
*
* @author johnlenz@google.com (John Lenz)
Expand Down
2 changes: 1 addition & 1 deletion src/com/google/javascript/jscomp/PassNames.java
Expand Up @@ -49,7 +49,7 @@ public final class PassNames {
public static final String DEAD_ASSIGNMENT_ELIMINATION = "deadAssignmentsElimination";
public static final String DECLARED_GLOBAL_EXTERNS_ON_WINDOW = "declaredGlobalExternsOnWindow";
public static final String DESERIALIZE_COMPILER_STATE = "deserializeCompilerState";
public static final String DEVIRTUALIZE_PROTOTYPE_METHODS = "devirtualizePrototypeMethods";
public static final String DEVIRTUALIZE_METHODS = "devirtualizeMethods";
public static final String DISAMBIGUATE_PRIVATE_PROPERTIES = "disambiguatePrivateProperties";
public static final String DISAMBIGUATE_PROPERTIES = "disambiguateProperties";
public static final String ES6_EXTRACT_CLASSES = "Es6ExtractClasses";
Expand Down
Expand Up @@ -507,15 +507,15 @@ public boolean isApplied(CompilerOptions options) {
}
},

DEVIRTUALIZE_PROTOTYPE_METHODS(ParamGroup.OPTIMIZATION) {
DEVIRTUALIZE_METHODS(ParamGroup.OPTIMIZATION) {
@Override
public void apply(CompilerOptions options, boolean value) {
options.setDevirtualizePrototypeMethods(value);
options.setDevirtualizeMethods(value);
}

@Override
public boolean isApplied(CompilerOptions options) {
return options.devirtualizePrototypeMethods;
return options.devirtualizeMethods;
}
},

Expand Down
Expand Up @@ -30,15 +30,15 @@
import org.junit.runners.JUnit4;

/**
* Tests for {@link DevirtualizePrototypeMethods}
* Tests for {@link DevirtualizeMethods}
*
*/
@RunWith(JUnit4.class)
public final class DevirtualizePrototypeMethodsTest extends CompilerTestCase {
public final class DevirtualizeMethodsTest extends CompilerTestCase {
private static final String EXTERNAL_SYMBOLS =
DEFAULT_EXTERNS + "var extern;extern.externalMethod";

public DevirtualizePrototypeMethodsTest() {
public DevirtualizeMethodsTest() {
super(EXTERNAL_SYMBOLS);
}

Expand Down Expand Up @@ -1257,7 +1257,7 @@ protected CompilerPass getProcessor(Compiler compiler) {
return OptimizeCalls.builder()
.setCompiler(compiler)
.setConsiderExterns(false)
.addPass(new DevirtualizePrototypeMethods(compiler))
.addPass(new DevirtualizeMethods(compiler))
.build();
}
}
8 changes: 4 additions & 4 deletions test/com/google/javascript/jscomp/IntegrationTest.java
Expand Up @@ -2457,9 +2457,9 @@ public void testExtraAnnotationNames() {
}

@Test
public void testDevirtualizePrototypeMethods() {
public void testDevirtualizeMethods() {
CompilerOptions options = createCompilerOptions();
options.setDevirtualizePrototypeMethods(true);
options.setDevirtualizeMethods(true);
test(
options,
"/** @constructor */ var Foo = function() {}; "
Expand Down Expand Up @@ -3477,7 +3477,7 @@ public void testExtractPrototypeMemberDeclarations() {
@Test
public void testDevirtualizationAndExtractPrototypeMemberDeclarations() {
CompilerOptions options = createCompilerOptions();
options.setDevirtualizePrototypeMethods(true);
options.setDevirtualizeMethods(true);
options.setCollapseAnonymousFunctions(true);
options.setExtractPrototypeMemberDeclarations(true);
options.setVariableRenaming(VariableRenamingPolicy.ALL);
Expand Down Expand Up @@ -6603,7 +6603,7 @@ public void testNoDevirtualization_whenSingleDefinitionInSource_ifNameCollidesWi

CompilerOptions options = createCompilerOptions();
options.checkTypes = true;
options.devirtualizePrototypeMethods = true;
options.devirtualizeMethods = true;

ImmutableList.Builder<SourceFile> externsList = ImmutableList.builder();
externsList.addAll(externs);
Expand Down

0 comments on commit efb1790

Please sign in to comment.