public class SynchronizerManager
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
java.util.HashMap<SootClass,SootField> |
classToClassField
Maps classes to class$ fields.
|
| Constructor and Description |
|---|
SynchronizerManager(Singletons.Global g) |
| Modifier and Type | Method and Description |
|---|---|
Local |
addStmtsToFetchClassBefore(JimpleBody jb,
Stmt target)
Adds code to fetch the static Class object to the given JimpleBody before
the target Stmt.
|
SootMethod |
createClassFetcherFor(SootClass c,
java.lang.String methodName)
Creates a method which calls java.lang.Class.forName(String).
|
SootMethod |
getClassFetcherFor(SootClass c)
Finds a method which calls java.lang.Class.forName(String).
|
void |
synchronizeStmtOn(Stmt stmt,
JimpleBody b,
Local lock)
Wraps stmt around a monitor associated with local lock.
|
static SynchronizerManager |
v() |
public static SynchronizerManager v()
public Local addStmtsToFetchClassBefore(JimpleBody jb, Stmt target)
$r3 = ;
.if $r3 != .null .goto label2;
$r3 = .staticinvoke ("quack");
= $r3;
label2:
public SootMethod getClassFetcherFor(SootClass c)
public SootMethod createClassFetcherFor(SootClass c, java.lang.String methodName)
.static java.lang.Class class$(java.lang.String)
{
java.lang.String r0, $r5;
java.lang.ClassNotFoundException r1, $r3;
java.lang.Class $r2;
java.lang.NoClassDefFoundError $r4;
r0 := @parameter0: java.lang.String;
label0:
$r2 = .staticinvoke (r0);
.return $r2;
label1:
$r3 := @caughtexception;
r1 = $r3;
$r4 = .new java.lang.NoClassDefFoundError;
$r5 = .virtualinvoke r1.();
.specialinvoke $r4.(java.lang.String)>($r5);
.throw $r4;
.catch java.lang.ClassNotFoundException .from label0 .to label1 .with label1;
}
public void synchronizeStmtOn(Stmt stmt, JimpleBody b, Local lock)