class StatementFusion extends AbstractPeepholeOptimization
PeepholeMinimizeConditions
.Modifier and Type | Field and Description |
---|---|
private boolean |
favorsCommaOverSemiColon |
static boolean |
SHOULD_FAVOR_COMMA_OVER_SEMI_COLON |
Constructor and Description |
---|
StatementFusion() |
StatementFusion(boolean favorsCommaOverSemiColon) |
Modifier and Type | Method and Description |
---|---|
private boolean |
canFuseIntoOneStatement(Node block) |
private static void |
fuseExpressionIntoControlFlowStatement(Node before,
Node control) |
protected static Node |
fuseExpressionIntoExpression(Node exp1,
Node exp2) |
protected static void |
fuseExpresssonIntoFirstChild(Node exp,
Node stmt) |
protected static void |
fuseExpresssonIntoSecondChild(Node exp,
Node stmt) |
private static Node |
fuseIntoOneStatement(Node parent,
Node first,
Node last)
Given a block, fuse a list of statements with comma's.
|
private boolean |
isFusableControlStatement(Node n) |
(package private) Node |
optimizeSubtree(Node n)
Given a node to optimize and a traversal, optimize the node.
|
(package private) Node |
tryFuseStatements(Node n) |
(package private) Node |
tryFuseStatementsAggressively(Node n) |
areDeclaredGlobalExternsOnWindow, areNodesEqualForInlining, beginTraversal, endTraversal, getCodingConvention, isASTNormalized, isEcmaScript5OrGreater, mayEffectMutableState, mayHaveSideEffects, nodeTypeMayHaveSideEffects, report, reportCodeChange
public static final boolean SHOULD_FAVOR_COMMA_OVER_SEMI_COLON
private final boolean favorsCommaOverSemiColon
public StatementFusion()
public StatementFusion(boolean favorsCommaOverSemiColon)
Node optimizeSubtree(Node n)
AbstractPeepholeOptimization
optimizeSubtree
in class AbstractPeepholeOptimization
n
- The subtree that will be optimized.subtree
.private boolean canFuseIntoOneStatement(Node block)
private boolean isFusableControlStatement(Node n)
private static Node fuseIntoOneStatement(Node parent, Node first, Node last)
parent
- The parent that contains the statements.first
- The first statement to fuse (inclusive)last
- The last statement to fuse (exclusive)private static void fuseExpressionIntoControlFlowStatement(Node before, Node control)
protected static Node fuseExpressionIntoExpression(Node exp1, Node exp2)
protected static void fuseExpresssonIntoFirstChild(Node exp, Node stmt)