Class Inlining
java.lang.Object
com.strobel.decompiler.ast.Inlining
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanprivate final DecompilerContextprivate 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 voidanalyzeNode(Node node) (package private) static booleancanBeExpressionStatement(Expression expression) private boolean(package private) final booleancanPerformCopyPropagation(Expression expr, Variable copyVariable) (package private) final void(package private) static intcount(Map<Variable, MutableInteger> map, Variable variable) (package private) final BooleanfindLoadInNext(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 booleanhasNoSideEffect(Expression expression) private static voidincrement(Map<Variable, MutableInteger> map, Variable variable) (package private) final booleaninlineAllInBasicBlock(BasicBlock basicBlock) (package private) final booleaninlineAllInBlock(Block block) (package private) final boolean(package private) final booleaninlineIfPossible(Variable variable, Expression inlinedExpression, Node next, boolean aggressive) (package private) final booleaninlineIfPossible(List<Node> body, MutableInteger position) (package private) final intinlineInto(List<Node> body, int position, boolean aggressive) (package private) final booleaninlineOneIfPossible(List<Node> body, int position, boolean aggressive) (package private) static booleanisSafeForInlineOver(Expression expression, Expression expressionBeingMoved) private booleannonAggressiveInlineInto(Expression next, Expression parent, Expression inlinedExpression) private booleannotFromMetadata(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)
-