public final class DefaultPassConfig extends PassConfig
Modifier and Type | Class and Description |
---|---|
(package private) class |
DefaultPassConfig.ClearTypedScope
A compiler pass that clears the global scope.
|
(package private) class |
DefaultPassConfig.GlobalTypeResolver
A compiler pass that resolves types in the global scope.
|
PassConfig.PassConfigDelegate, PassConfig.State
Modifier and Type | Field and Description |
---|---|
private PassFactory |
aliasStrings
Alias string literals with global variables, to avoid creating lots of
transient objects.
|
private PassFactory |
ambiguateProperties
Renames properties so that the two properties that never appear on
the same object get the same name.
|
private PassFactory.HotSwapPassFactory |
analyzerChecks |
private PassFactory.HotSwapPassFactory |
angularPass
Process AngularJS-specific annotations.
|
private VariableMap |
anonymousFunctionNameMap
The naming map for anonymous functions
|
(package private) static DiagnosticType |
CANNOT_USE_PROTOTYPE_AND_VAR |
private PassFactory |
chainCalls
Chain calls to functions that return this.
|
private PassFactory.HotSwapPassFactory |
checkAccessControls
Checks access controls.
|
private PassFactory |
checkConformance |
private PassFactory |
checkConstParams
Checks that the arguments are constants
|
private PassFactory |
checkConsts
Checks that all constants are not modified
|
private PassFactory.HotSwapPassFactory |
checkControlFlow
Checks possible execution paths of the program for problems: missing return
statements and dead code.
|
private PassFactory |
checkEventfulObjectDisposal
Check memory bloat patterns
|
private PassFactory |
checkGlobalNames
Checks global name usage.
|
private PassFactory.HotSwapPassFactory |
checkJsDoc
Verifies JSDoc annotations are used properly.
|
private PassFactory.HotSwapPassFactory |
checkProvides
Makes sure @constructor is paired with goog.provides().
|
private PassFactory |
checkRegExp
Checks for RegExp references.
|
private PassFactory.HotSwapPassFactory |
checkRequires
Checks that all constructed classes are goog.require()d.
|
private PassFactory.HotSwapPassFactory |
checkRequiresAndProvidesSorted |
private PassFactory.HotSwapPassFactory |
checkSideEffects
Checks for code that is probably wrong (such as stray expressions).
|
private PassFactory |
checkStrictMode
Checks that the code is ES5 strict compliant.
|
private PassFactory.HotSwapPassFactory |
checkTypes
Checks type usage
|
private PassFactory.HotSwapPassFactory |
checkVariableReferences
Checks that references to variables look reasonable.
|
private PassFactory.HotSwapPassFactory |
checkVars
Checks that all variables are defined.
|
private PassFactory |
clearTypedScopePass
Clears the typed scope when we're done.
|
private static java.lang.String |
CLOSURE_LOCALE_CONSTANT_NAME |
private PassFactory |
closureCheckGetCssName
Checks that CSS class names are wrapped in goog.getCssName
|
private PassFactory.HotSwapPassFactory |
closureCheckModule
Checks of correct usage of goog.module
|
private PassFactory |
closureCodeRemoval
Remove variables set to goog.abstractMethod.
|
private PassFactory.HotSwapPassFactory |
closureGoogScopeAliases
Applies aliases and inlines goog.scope.
|
private PassFactory |
closureOptimizePrimitives
Special case optimizations for closure functions.
|
private PassFactory.HotSwapPassFactory |
closurePrimitives
Closure pre-processing pass.
|
private PassFactory |
closureReplaceGetCssName
Processes goog.getCssName.
|
private PassFactory.HotSwapPassFactory |
closureRewriteClass
Rewrites goog.defineClass
|
private PassFactory.HotSwapPassFactory |
closureRewriteModule
Rewrites goog.module
|
private PassFactory |
coalesceVariableNames
Uses register-allocation algorithms to use fewer variables.
|
private PassFactory |
collapseAnonymousFunctions
Collapses functions to not use the VAR keyword.
|
private PassFactory |
collapseObjectLiterals
Rewrite properties as variables.
|
private PassFactory |
collapseProperties
Collapses names in the global scope.
|
private PassFactory |
collapseVariableDeclarations
Some simple, local collapses (e.g.,
var x; var y; becomes
var x,y; . |
private static java.lang.String |
COMPILED_CONSTANT_NAME |
private PassFactory |
computeFunctionNames
Computes the names of functions for later analysis.
|
(package private) PassFactory.HotSwapPassFactory |
convertEs6TypedToEs6
Desugars ES6_TYPED features into ES6 code.
|
private PassFactory |
convertStaticInheritance |
private PassFactory |
convertToDottedProperties
Convert bracket access to dot access
|
private PassFactory |
convertToTypedES6 |
private PassFactory |
createSyntheticBlocks
Creates synthetic blocks to prevent FoldConstants from moving code
past markers in the source.
|
private PassFactory |
crossModuleCodeMotion
Move global symbols to a deeper common module
|
private CrossModuleMethodMotion.IdGenerator |
crossModuleIdGenerator
Ids for cross-module method stubbing, so that each method has
a unique id.
|
private PassFactory |
crossModuleMethodMotion
Move methods to a deeper common module
|
private java.util.Map<java.lang.String,java.lang.Integer> |
cssNames
Keys are arguments passed to getCssName() found during compilation; values
are the number of times the key appeared as an argument to getCssName().
|
private PassFactory.HotSwapPassFactory |
dartSuperAccessorsPass
Rewrites the super accessors calls to support Dart Dev Compiler output.
|
private PassFactory |
deadAssignmentsElimination
Kills dead assignments.
|
private PassFactory |
declaredGlobalExternsOnWindow
Applies aliases and inlines goog.scope.
|
private PassFactory |
denormalize
Denormalize the AST for code generation.
|
private PassFactory |
devirtualizePrototypeMethods
Rewrite instance methods as static methods, to make them easier
to inline.
|
private PassFactory |
disambiguatePrivateProperties
Disambiguate property names based on the coding convention.
|
private PassFactory |
disambiguateProperties
Disambiguate property names based on type information.
|
private PassFactory |
earlyInlineVariables |
private PassFactory |
earlyPeepholeOptimizations |
private PassFactory |
es6ExternsCheck |
private PassFactory |
es6RuntimeLibrary |
private PassFactory |
exploitAssign
Some simple, local collapses (e.g.,
var x; var y; becomes
var x,y; . |
private java.util.Set<java.lang.String> |
exportedNames
Names exported by goog.exportSymbol.
|
private PassFactory |
exportTestFunctions
Generates exports for functions associated with JsUnit.
|
private PassFactory |
extractPrototypeMemberDeclarations
Extracts common sub-expressions.
|
private PassFactory |
extraSmartNamePass
Process smart name processing - removes unused classes and does referencing
starting with minimum set of names.
|
private PassFactory |
flowSensitiveInlineVariables
A data-flow based variable inliner.
|
private FunctionNames |
functionNames
Fully qualified function names and globally unique ids
|
(package private) PassFactory |
garbageCollectChecks
Release references to data that is only needed during checks.
|
private PassFactory |
gatherExternProperties
Extern property names gathering pass.
|
private PassFactory |
gatherRawExports
Raw exports processing pass.
|
private static DiagnosticType |
GENERATE_EXPORTS_ERROR |
private PassFactory |
generateExports
Generates exports for @export annotations.
|
private static Pattern |
GLOBAL_SYMBOL_NAMESPACE_PATTERN |
private java.lang.String |
idGeneratorMap
Id generator map
|
private PassFactory |
inferConsts
Infers constants.
|
private PassFactory.HotSwapPassFactory |
inferJsDocInfo |
(package private) PassFactory.HotSwapPassFactory |
inferTypes
Runs type inference.
|
private PassFactory |
initNameAnalyzeReport |
private PassFactory |
inlineConstants
Inlines variables that are marked as constants.
|
private PassFactory |
inlineFunctions
Inlines function calls.
|
private PassFactory |
inlineProperties
Inlines constant properties.
|
private PassFactory |
inlineSimpleMethods
Inlines simple methods, like getters
|
private PassFactory |
inlineTypeAliases |
private PassFactory |
inlineVariables
Inlines variables heuristically.
|
private PassFactory |
instrumentForCodeCoverage |
private PassFactory |
instrumentFunctions
Adds instrumentations according to an instrumentation template.
|
private PassFactory |
invertContextualRenaming
Inverting name normalization.
|
private PassFactory |
j2clPass
Rewrites J2CL constructs to be more optimizable.
|
private PassFactory |
j2clPropertyInlinerPass
Rewrites J2CL constructs to be more optimizable.
|
private PassFactory |
jqueryAliases
Expand jQuery Primitives and Aliases pass.
|
private PassFactory |
latePeepholeOptimizations
Same as peepholeOptimizations but aggressively merges code together
|
private PassFactory.HotSwapPassFactory |
lintChecks |
private PassFactory |
markNoSideEffectCalls
Look for function calls that have no side effects, and annotate them
that way.
|
private PassFactory |
markPureFunctions
Look for function calls that are pure, and annotate them
that way.
|
private PassFactory |
markTranspilationDone |
private PassFactory |
markUnnormalized
Mark the point at which the normalized AST assumptions no longer hold.
|
private PassFactory |
minimizeExitPoints
Perform local control flow optimizations.
|
private PassFactory |
moveFunctionDeclarations
Moves function declarations to the top, to simulate actual hoisting.
|
private static DiagnosticType |
NAME_REF_GRAPH_FILE_ERROR |
private static DiagnosticType |
NAME_REF_REPORT_FILE_ERROR |
private PassFactory |
nameMappedAnonymousFunctions |
private GlobalNamespace |
namespaceForChecks
A global namespace to share across checking passes.
|
private PassFactory |
nameUnmappedAnonymousFunctions |
private PassFactory |
newTypeInference |
private PassFactory |
objectLitAssignmentShortening |
private PassFactory |
objectPropertyStringPostprocess
Handling for the ObjectPropertyString primitive.
|
private PassFactory |
objectPropertyStringPreprocess
Pre-process goog.testing.ObjectPropertyString.
|
private PassFactory |
optimizeArgumentsArray
Optimizes the "arguments" array.
|
private PassFactory |
optimizeCalls
Optimizes unused function arguments, unused return values, and inlines
constant parameters.
|
private PassFactory |
optimizeToEs6
Optimizations that output ES6 features.
|
private PassFactory |
peepholeOptimizations
Various peephole optimizations.
|
private PassFactory.HotSwapPassFactory |
polymerPass
Rewrites Polymer({})
|
private PreprocessorSymbolTable |
preprocessorSymbolTable
A symbol table for registering references that get removed during
preprocessing.
|
private PassFactory |
printNameReferenceGraph |
private PassFactory |
printNameReferenceReport |
private PassFactory |
processDefines
Override @define-annotated constants.
|
private PassFactory |
processTweaks
Process goog.tweak.getTweak() calls.
|
private VariableMap |
propertyMap
The property renaming map
|
private boolean |
protectHiddenSideEffects
Whether to protect "hidden" side-effects.
|
private PassFactory |
removeUnreachableCode
Use data flow analysis to remove dead branches.
|
private PassFactory |
removeUnusedClassProperties
Remove prototype properties that do not appear to be used.
|
private PassFactory |
removeUnusedPrototypeProperties
Remove prototype properties that do not appear to be used.
|
private PassFactory |
renameLabels
Renames labels
|
private PassFactory |
renameProperties
Renames properties.
|
private PassFactory |
renameVars
Renames variables.
|
private PassFactory |
replaceIdGenerators
Generates unique ids.
|
private PassFactory |
replaceMessages
The default i18n pass.
|
private PassFactory |
replaceMessagesForChrome |
private PassFactory |
replaceStrings
Replace strings.
|
private PassFactory |
rescopeGlobalSymbols
Puts global symbols into a single object.
|
(package private) PassFactory.HotSwapPassFactory |
resolveTypes
Creates a typed scope and adds types to the type registry.
|
private PassFactory |
rewriteBindThis |
private PassFactory |
rewriteFunctionExpressions
Rewrites common function definitions to be more compact.
|
private PassFactory |
runtimeTypeCheck
Inserts run-time type assertions for debugging.
|
private PassFactory |
sanityCheckAst
Checks that all variables are defined.
|
private PassFactory |
sanityCheckVars
Checks that all variables are defined.
|
private PassFactory |
smartNamePass |
private PassFactory |
smartNamePass2 |
private VariableMap |
stringMap
String replacement map
|
private PassFactory |
stripSideEffectProtection
Removes the "protector" functions that were added by CheckSideEffects.
|
private PassFactory.HotSwapPassFactory |
suspiciousCode
Checks for code that is probably wrong (such as stray expressions).
|
private PassFactory |
symbolTableForNewTypeInference |
private VariableMap |
variableMap
The variable renaming map
|
options, topScope
Constructor and Description |
---|
DefaultPassConfig(CompilerOptions options) |
Modifier and Type | Method and Description |
---|---|
private static void |
assertAllLoopablePasses(java.util.List<PassFactory> passes)
Verify that all the passes are multi-run passes.
|
private static void |
assertAllOneTimePasses(java.util.List<PassFactory> passes)
Verify that all the passes are one-time passes.
|
private void |
assertValidOrder(java.util.List<PassFactory> checks)
Certain checks need to run in a particular order.
|
private static HotSwapCompilerPass |
combineChecks(AbstractCompiler compiler,
java.util.List<NodeTraversal.Callback> callbacks)
Executes the given callbacks with a
CombinedCompilerPass . |
(package private) static java.util.Map<java.lang.String,Node> |
getAdditionalReplacements(CompilerOptions options) |
protected java.util.List<PassFactory> |
getChecks()
Gets the checking passes to run.
|
private java.util.List<PassFactory> |
getCodeRemovingPasses()
Creates several passes aimed at removing code.
|
private PassFactory |
getCustomPasses(CustomPassExecutionTime executionTime)
Runs custom passes that are designated to run at a particular time.
|
(package private) GlobalNamespace |
getGlobalNamespace() |
protected PassConfig.State |
getIntermediateState()
Get intermediate state for a running pass config, so it can
be paused and started again later.
|
private java.util.List<PassFactory> |
getMainOptimizationLoop()
Creates the passes for the main optimization loop.
|
protected java.util.List<PassFactory> |
getOptimizations()
Gets the optimization passes to run.
|
(package private) PreprocessorSymbolTable |
getPreprocessorSymbolTable() |
private PassFactory |
getRemoveUnusedVars(java.lang.String name,
boolean modifyCallSites) |
(package private) void |
maybeInitializePreprocessorSymbolTable(AbstractCompiler compiler) |
private static CompilerPass |
runInSerial(java.util.Collection<CompilerPass> passes)
Create a compiler pass that runs the given passes in serial.
|
private VariableMap |
runVariableRenaming(AbstractCompiler compiler,
VariableMap prevVariableMap,
Node externs,
Node root) |
addPassFactoryBefore, clearTypedScope, getBasePassConfig, getPassGraph, getTopScope, getTypedScopeCreator, makeInferJsDocInfo, makeTypeCheck, makeTypeInference, patchGlobalTypedScope, regenerateGlobalTypedScope, replacePassFactory
private static final java.lang.String COMPILED_CONSTANT_NAME
private static final java.lang.String CLOSURE_LOCALE_CONSTANT_NAME
static final DiagnosticType CANNOT_USE_PROTOTYPE_AND_VAR
private static final DiagnosticType NAME_REF_GRAPH_FILE_ERROR
private static final DiagnosticType NAME_REF_REPORT_FILE_ERROR
private static final Pattern GLOBAL_SYMBOL_NAMESPACE_PATTERN
private GlobalNamespace namespaceForChecks
private PreprocessorSymbolTable preprocessorSymbolTable
private java.util.Set<java.lang.String> exportedNames
private CrossModuleMethodMotion.IdGenerator crossModuleIdGenerator
private java.util.Map<java.lang.String,java.lang.Integer> cssNames
private VariableMap variableMap
private VariableMap propertyMap
private VariableMap anonymousFunctionNameMap
private FunctionNames functionNames
private VariableMap stringMap
private java.lang.String idGeneratorMap
private final boolean protectHiddenSideEffects
CheckSideEffects
private final PassFactory.HotSwapPassFactory checkSideEffects
private final PassFactory stripSideEffectProtection
private final PassFactory.HotSwapPassFactory suspiciousCode
private final PassFactory.HotSwapPassFactory checkRequires
private final PassFactory.HotSwapPassFactory checkProvides
private static final DiagnosticType GENERATE_EXPORTS_ERROR
private final PassFactory.HotSwapPassFactory checkJsDoc
private final PassFactory generateExports
private final PassFactory exportTestFunctions
private final PassFactory gatherRawExports
private final PassFactory.HotSwapPassFactory closurePrimitives
private final PassFactory jqueryAliases
private final PassFactory.HotSwapPassFactory angularPass
private final PassFactory replaceMessages
private final PassFactory replaceMessagesForChrome
private final PassFactory.HotSwapPassFactory closureGoogScopeAliases
private final PassFactory es6RuntimeLibrary
private final PassFactory es6ExternsCheck
final PassFactory.HotSwapPassFactory convertEs6TypedToEs6
private final PassFactory convertStaticInheritance
private final PassFactory inlineTypeAliases
private final PassFactory convertToTypedES6
private final PassFactory markTranspilationDone
private final PassFactory declaredGlobalExternsOnWindow
private final PassFactory.HotSwapPassFactory closureRewriteClass
private final PassFactory.HotSwapPassFactory closureCheckModule
private final PassFactory.HotSwapPassFactory closureRewriteModule
private final PassFactory closureCheckGetCssName
private final PassFactory closureReplaceGetCssName
private final PassFactory createSyntheticBlocks
private final PassFactory earlyPeepholeOptimizations
private final PassFactory earlyInlineVariables
private final PassFactory peepholeOptimizations
private final PassFactory latePeepholeOptimizations
private final PassFactory.HotSwapPassFactory checkVars
private final PassFactory inferConsts
private final PassFactory checkRegExp
private final PassFactory.HotSwapPassFactory checkVariableReferences
private final PassFactory objectPropertyStringPreprocess
final PassFactory.HotSwapPassFactory resolveTypes
private final PassFactory clearTypedScopePass
final PassFactory.HotSwapPassFactory inferTypes
private final PassFactory symbolTableForNewTypeInference
private final PassFactory newTypeInference
private final PassFactory.HotSwapPassFactory inferJsDocInfo
private final PassFactory.HotSwapPassFactory checkTypes
private final PassFactory.HotSwapPassFactory checkControlFlow
private final PassFactory.HotSwapPassFactory checkAccessControls
private final PassFactory.HotSwapPassFactory lintChecks
private final PassFactory.HotSwapPassFactory analyzerChecks
private final PassFactory.HotSwapPassFactory checkRequiresAndProvidesSorted
private final PassFactory checkGlobalNames
private final PassFactory checkStrictMode
private final PassFactory processTweaks
private final PassFactory processDefines
final PassFactory garbageCollectChecks
private final PassFactory checkConsts
private final PassFactory checkConstParams
private final PassFactory checkEventfulObjectDisposal
private final PassFactory computeFunctionNames
private final PassFactory runtimeTypeCheck
private final PassFactory replaceIdGenerators
private final PassFactory replaceStrings
private final PassFactory optimizeArgumentsArray
private final PassFactory closureCodeRemoval
private final PassFactory closureOptimizePrimitives
private final PassFactory rescopeGlobalSymbols
private final PassFactory collapseProperties
private final PassFactory collapseObjectLiterals
private final PassFactory disambiguatePrivateProperties
private final PassFactory disambiguateProperties
private final PassFactory chainCalls
private final PassFactory devirtualizePrototypeMethods
private final PassFactory optimizeCalls
private final PassFactory markPureFunctions
private final PassFactory markNoSideEffectCalls
private final PassFactory inlineVariables
private final PassFactory inlineConstants
private final PassFactory minimizeExitPoints
private final PassFactory removeUnreachableCode
private final PassFactory removeUnusedPrototypeProperties
private final PassFactory removeUnusedClassProperties
private final PassFactory initNameAnalyzeReport
private final PassFactory extraSmartNamePass
private final PassFactory smartNamePass
private final PassFactory smartNamePass2
private final PassFactory inlineSimpleMethods
private final PassFactory deadAssignmentsElimination
private final PassFactory inlineFunctions
private final PassFactory inlineProperties
private final PassFactory crossModuleCodeMotion
private final PassFactory crossModuleMethodMotion
private final PassFactory flowSensitiveInlineVariables
private final PassFactory coalesceVariableNames
private final PassFactory exploitAssign
var x; var y;
becomes
var x,y;
.private final PassFactory collapseVariableDeclarations
var x; var y;
becomes
var x,y;
.private final PassFactory extractPrototypeMemberDeclarations
private final PassFactory rewriteFunctionExpressions
private final PassFactory collapseAnonymousFunctions
private final PassFactory moveFunctionDeclarations
private final PassFactory nameUnmappedAnonymousFunctions
private final PassFactory nameMappedAnonymousFunctions
private final PassFactory aliasStrings
private final PassFactory objectPropertyStringPostprocess
private final PassFactory ambiguateProperties
private final PassFactory markUnnormalized
private final PassFactory denormalize
private final PassFactory invertContextualRenaming
private final PassFactory renameProperties
private final PassFactory renameVars
private final PassFactory renameLabels
private final PassFactory convertToDottedProperties
private final PassFactory sanityCheckAst
private final PassFactory sanityCheckVars
private final PassFactory instrumentFunctions
private final PassFactory instrumentForCodeCoverage
private final PassFactory gatherExternProperties
private final PassFactory printNameReferenceGraph
private final PassFactory printNameReferenceReport
private final PassFactory.HotSwapPassFactory polymerPass
private final PassFactory.HotSwapPassFactory dartSuperAccessorsPass
private final PassFactory j2clPass
private final PassFactory j2clPropertyInlinerPass
private final PassFactory checkConformance
private final PassFactory optimizeToEs6
private final PassFactory objectLitAssignmentShortening
private final PassFactory rewriteBindThis
public DefaultPassConfig(CompilerOptions options)
protected PassConfig.State getIntermediateState()
PassConfig
getIntermediateState
in class PassConfig
GlobalNamespace getGlobalNamespace()
PreprocessorSymbolTable getPreprocessorSymbolTable()
void maybeInitializePreprocessorSymbolTable(AbstractCompiler compiler)
protected java.util.List<PassFactory> getChecks()
PassConfig
getChecks
in class PassConfig
protected java.util.List<PassFactory> getOptimizations()
PassConfig
getOptimizations
in class PassConfig
private java.util.List<PassFactory> getMainOptimizationLoop()
private java.util.List<PassFactory> getCodeRemovingPasses()
private static void assertAllOneTimePasses(java.util.List<PassFactory> passes)
private static void assertAllLoopablePasses(java.util.List<PassFactory> passes)
private void assertValidOrder(java.util.List<PassFactory> checks)
checks
- The list of check passesprivate static HotSwapCompilerPass combineChecks(AbstractCompiler compiler, java.util.List<NodeTraversal.Callback> callbacks)
CombinedCompilerPass
.private PassFactory getRemoveUnusedVars(java.lang.String name, boolean modifyCallSites)
private VariableMap runVariableRenaming(AbstractCompiler compiler, VariableMap prevVariableMap, Node externs, Node root)
private PassFactory getCustomPasses(CustomPassExecutionTime executionTime)
private static CompilerPass runInSerial(java.util.Collection<CompilerPass> passes)
static java.util.Map<java.lang.String,Node> getAdditionalReplacements(CompilerOptions options)