Class Fragment
java.lang.Object
sootup.interceptors.invokedynamic.Fragment
Code replacing one statement: a sequence of statements with forward jumps to
Fragment.Labels. A
label bound after the last statement continues with the replaced statement's successor. All
statements get the replaced statement's position and exceptional flows.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classA jump target,boundto the next statement emitted. -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidbind(@NonNull Fragment.Label label) labeldenotes the next statement emitted (or the successor, if none follows).@NonNull ClassType@NonNull IdentifierFactoryfactory()voidifGoto(@NonNull AbstractConditionExpr condition, @NonNull Fragment.Label target) @NonNull AbstractInvokeExprinstanceCall(@NonNull Local base, @NonNull ClassType declaringType, @NonNull String name, @NonNull Type returnType, @NonNull List<Type> parameterTypes, @NonNull List<Immediate> args) base.name(args): an interface or virtual invoke, asdeclaringTypedemands.voidinvoke(@NonNull AbstractInvokeExpr call) voidjump(@NonNull Fragment.Label target) @NonNull Fragment.LabelnewLabel()@NonNull LocalA fresh local; added to the body if this fragment is used.static @NonNull Fragmentof(@NonNull View view, @NonNull LocalGenerator localGenerator, @NonNull StmtPositionInfo pos) An empty fragment for a statement atpos; locals come fromlocalGenerator.voidreplace(@NonNull Body.BodyBuilder builder, @NonNull Stmt replaced) Puts this fragment in place ofreplaced, a statement with exactly one successor, and adds its locals tobuilder.@NonNull JSpecialInvokeExprspecialCall(@NonNull Local base, @NonNull ClassType declaringType, @NonNull String name, @NonNull Type returnType, @NonNull List<Type> parameterTypes, @NonNull List<Immediate> args) @NonNull JStaticInvokeExprstaticCall(@NonNull ClassType declaringType, @NonNull String name, @NonNull Type returnType, @NonNull List<Type> parameterTypes, @NonNull List<Immediate> args)
-
Method Details
-
of
public static @NonNull Fragment of(@NonNull View view, @NonNull LocalGenerator localGenerator, @NonNull StmtPositionInfo pos) An empty fragment for a statement atpos; locals come fromlocalGenerator. -
factory
-
classType
-
newLocal
A fresh local; added to the body if this fragment is used. -
assign
-
invoke
-
newLabel
-
bind
labeldenotes the next statement emitted (or the successor, if none follows). -
ifGoto
-
jump
-
instanceCall
public @NonNull AbstractInvokeExpr instanceCall(@NonNull Local base, @NonNull ClassType declaringType, @NonNull String name, @NonNull Type returnType, @NonNull List<Type> parameterTypes, @NonNull List<Immediate> args) base.name(args): an interface or virtual invoke, asdeclaringTypedemands. -
specialCall
-
staticCall
-
replace
Puts this fragment in place ofreplaced, a statement with exactly one successor, and adds its locals tobuilder.
-