本文整理汇总了Java中soot.jimple.ExitMonitorStmt类的典型用法代码示例。如果您正苦于以下问题:Java ExitMonitorStmt类的具体用法?Java ExitMonitorStmt怎么用?Java ExitMonitorStmt使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ExitMonitorStmt类属于soot.jimple包,在下文中一共展示了ExitMonitorStmt类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: checkSynchronizationStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
private void checkSynchronizationStmt(Stmt sootStmt)
{
if(sootStmt instanceof EnterMonitorStmt)
{
EnterMonitorStmt enterMonitorStmt = (EnterMonitorStmt)sootStmt;
lockStack.add(0, enterMonitorStmt.getOp());
expSecondExitMonitor = false;
}
else if(sootStmt instanceof ExitMonitorStmt)
{
if(!expSecondExitMonitor)
{
lockStack.remove(0);
expSecondExitMonitor = true;
} else
{
expSecondExitMonitor = false;
}
}
}
示例2: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
if (uses) {
if (stmt.getOp() instanceof Local) {
TypeVariable op = resolver.typeVariable((Local) stmt.getOp());
op.addParent(resolver.typeVariable(RefType.v("java.lang.Object")));
}
}
}
示例3: getUnitsWithMonitor
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
public Set<Unit> getUnitsWithMonitor(UnitGraph ug) {
Set<Unit> unitsWithMonitor = new HashSet<Unit>();
for (Unit head : ug.getHeads()) {
List<Unit> workList = new ArrayList<Unit>();
workList.add(head);
Set<Unit> doneSet = new HashSet<Unit>();
while (!workList.isEmpty()) {
Unit curUnit = workList.remove(0);
if (!doneSet.add(curUnit))
continue;
workList.addAll(ug.getSuccsOf(curUnit));
// If this is an "entermonitor" construct,
// we're in a monitor from now on
if (curUnit instanceof EnterMonitorStmt)
unitsWithMonitor.add(curUnit);
// If we leave a monitor, we're out now
else if (curUnit instanceof ExitMonitorStmt)
continue;
else {
for (Unit pred : ug.getPredsOf(curUnit))
if (unitsWithMonitor.contains(pred))
unitsWithMonitor.add(curUnit);
}
}
}
// Get rid of the entermonitor statements themselves
for (Iterator<Unit> it = unitsWithMonitor.iterator(); it.hasNext(); )
if (it.next() instanceof EnterMonitorStmt)
it.remove();
return unitsWithMonitor;
}
示例4: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
@Override
public void caseExitMonitorStmt(ExitMonitorStmt arg0) {
injectLabelStatements(arg0);
arg0.getOp().apply(this.valueswitch);
this.valueswitch.getExpression();
// TODO:
this.inMonitor = false;
}
示例5: analyzeUnitExitMonitor
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
private void analyzeUnitExitMonitor(SootMethod method, UnitGraph cfg,
ExitMonitorStmt unit)
{
addUnitToEmptyProduction(unit,method);
analyzeSuccessors(method,cfg,unit);
}
示例6: analyzeUnit
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
private void analyzeUnit(SootMethod method, Unit unit, UnitGraph cfg,
StackNode<EnterMonitorStmt> stack)
{
if (visited.contains(unit))
return; /* Unit already taken care of */
visited.add(unit);
if (unit instanceof EnterMonitorStmt)
stack=new StackNode<EnterMonitorStmt>(stack,(EnterMonitorStmt)unit);
else if (unit instanceof ExitMonitorStmt
&& stack != null)
{
EnterMonitorStmt enter;
enter=stack.element();
if (!exitMon.containsKey(enter))
exitMon.put(enter,new ArrayList<ExitMonitorStmt>(8));
exitMon.get(enter).add((ExitMonitorStmt)unit);
stack=stack.parent();
}
for (Unit succ: cfg.getSuccsOf(unit))
analyzeUnit(method,succ,cfg,stack);
}
示例7: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
@Override
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
throw new RuntimeException("todo");
}
示例8: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
String varName = printValueAssignment(stmt.getOp(), "monitor");
printStmt(stmt,varName);
}
示例9: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
public void caseExitMonitorStmt(ExitMonitorStmt stmt)
{
stmt.setOp(this.uv.visit(
stmt.getOp(), RefType.v("java.lang.Object"), stmt));
}
示例10: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
}
示例11: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
@Override
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
addInsn(buildMonitorInsn(stmt, Opcode.MONITOR_EXIT), stmt);
}
示例12: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
@Override
public void caseExitMonitorStmt(ExitMonitorStmt s) {
result = result.add(mgr.ILLEGAL_MONITOR_STATE_EXCEPTION);
result = result.add(mgr.NULL_POINTER_EXCEPTION);
result = result.add(mightThrow(s.getOp()));
}
示例13: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
@Override
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
throwNotImplementedException(stmt.getClass(), stmt.toString());
}
示例14: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
@Override
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
logger.fine("\n > > > Exit monitor statement identified < < <");
valueSwitch.callingStmt = stmt;
throw new NotSupportedStmtException("ExitMonitorStmt");
}
示例15: caseExitMonitorStmt
import soot.jimple.ExitMonitorStmt; //导入依赖的package包/类
@Override
public void caseExitMonitorStmt(ExitMonitorStmt stmt) {
logger.fine("\n > > > Exit monitor statement identified < < <");
throw new NotSupportedStmtException("ExitMonitorStmt");
}