public class SharedInitializationLocalSplitter extends BodyTransformer
$u2#6 = 0;
interfaceinvoke $u5#30.($u4, $u2#6);
interfaceinvoke $u5#56.($u4, $u2#6);
since $u2#6 will be boolean as well as int. A cast from boolean to int or vice versa is not valid in Java. The local
splitter does not split the local since it would require the introduction of a new initialization statement. Therefore, we
split for each usage of a constant variable, such as:
$u2#6 = 0;
$u2#6_2 = 0;
interfaceinvoke $u5#30.($u4, $u2#6);
interfaceinvoke $u5#56.($u4, $u2#6_2);
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
omitExceptingUnitEdges |
protected ThrowAnalysis |
throwAnalysis |
| Constructor and Description |
|---|
SharedInitializationLocalSplitter(Singletons.Global g) |
SharedInitializationLocalSplitter(ThrowAnalysis ta) |
SharedInitializationLocalSplitter(ThrowAnalysis ta,
boolean omitExceptingUnitEdges) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
internalTransform(Body body,
String phaseName,
Map<String,String> options)
This method is called to perform the transformation itself.
|
static SharedInitializationLocalSplitter |
v() |
transform, transform, transformprotected ThrowAnalysis throwAnalysis
protected boolean omitExceptingUnitEdges
public SharedInitializationLocalSplitter(Singletons.Global g)
public SharedInitializationLocalSplitter(ThrowAnalysis ta)
public SharedInitializationLocalSplitter(ThrowAnalysis ta, boolean omitExceptingUnitEdges)
public static SharedInitializationLocalSplitter v()
protected void internalTransform(Body body, String phaseName, Map<String,String> options)
BodyTransformerinternalTransform in class BodyTransformerbody - the body on which to apply the transformationphaseName - the phasename for this transform; not typically used by implementations.options - the actual computed options; a combination of default options and Scene specified options.Copyright © 2024 Soot OSS. All rights reserved.