Package com.strobel.decompiler.ast
Class Inlining
java.lang.Object
com.strobel.decompiler.ast.Inlining
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
private final DecompilerContext
private final Block
(package private) final StrongBox
<Expression> (package private) final Map
<Variable, MutableInteger> (package private) final Map
<Variable, List<Expression>> (package private) final Map
<Variable, MutableInteger> -
Constructor Summary
ConstructorsConstructorDescriptionInlining
(DecompilerContext context, Block method) Inlining
(DecompilerContext context, Block method, boolean aggressive) -
Method Summary
Modifier and TypeMethodDescription(package private) final void
(package private) final void
analyzeNode
(Node node) (package private) static boolean
canBeExpressionStatement
(Expression expression) private boolean
(package private) final boolean
canPerformCopyPropagation
(Expression expr, Variable copyVariable) (package private) final void
(package private) static int
count
(Map<Variable, MutableInteger> map, Variable variable) (package private) final Boolean
findLoadInNext
(Expression expression, Variable variable, Expression expressionBeingMoved, StrongBox<Expression> parent, MutableInteger position) private static Iterable
<Expression> getParents
(Expression scope, Map<Expression, Expression> parentLookup, Expression node) (package private) static boolean
hasNoSideEffect
(Expression expression) private static void
increment
(Map<Variable, MutableInteger> map, Variable variable) (package private) final boolean
inlineAllInBasicBlock
(BasicBlock basicBlock) (package private) final boolean
inlineAllInBlock
(Block block) (package private) final boolean
(package private) final boolean
inlineIfPossible
(Variable variable, Expression inlinedExpression, Node next, boolean aggressive) (package private) final boolean
inlineIfPossible
(List<Node> body, MutableInteger position) (package private) final int
inlineInto
(List<Node> body, int position, boolean aggressive) (package private) final boolean
inlineOneIfPossible
(List<Node> body, int position, boolean aggressive) (package private) static boolean
isSafeForInlineOver
(Expression expression, Expression expressionBeingMoved) private boolean
nonAggressiveInlineInto
(Expression next, Expression parent, Expression inlinedExpression) private boolean
notFromMetadata
(Variable variable)
-
Field Details
-
_context
-
_method
-
_aggressive
private final boolean _aggressive -
loadCounts
-
storeCounts
-
loads
-
_tempVariable
-
_tempExpression
-
IS_FLOAT_VARIABLE
-
-
Constructor Details
-
Inlining
-
Inlining
-
-
Method Details
-
analyzeMethod
final void analyzeMethod() -
analyzeNode
-
inlineAllVariables
final boolean inlineAllVariables() -
inlineAllInBlock
-
inlineAllInBasicBlock
-
inlineIfPossible
-
inlineInto
-
inlineIfPossible
final boolean inlineIfPossible(Variable variable, Expression inlinedExpression, Node next, boolean aggressive) -
notFromMetadata
-
nonAggressiveInlineInto
private boolean nonAggressiveInlineInto(Expression next, Expression parent, Expression inlinedExpression) -
findLoadInNext
final Boolean findLoadInNext(Expression expression, Variable variable, Expression expressionBeingMoved, StrongBox<Expression> parent, MutableInteger position) -
isSafeForInlineOver
-
inlineOneIfPossible
-
canInline
-
copyPropagation
final void copyPropagation() -
canPerformCopyPropagation
-
hasNoSideEffect
-
canBeExpressionStatement
-
count
-
increment
-
getParents
private static Iterable<Expression> getParents(Expression scope, Map<Expression, Expression> parentLookup, Expression node)
-