本文整理汇总了Java中soot.jimple.internal.JEqExpr类的典型用法代码示例。如果您正苦于以下问题:Java JEqExpr类的具体用法?Java JEqExpr怎么用?Java JEqExpr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
JEqExpr类属于soot.jimple.internal包,在下文中一共展示了JEqExpr类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: createIfStmt
import soot.jimple.internal.JEqExpr; //导入依赖的package包/类
private void createIfStmt(Unit target, Body body) {
if (target == null) {
return;
}
JEqExpr cond = new JEqExpr(intCounter, IntConstant.v(conditionCounter++));
JIfStmt ifStmt = new JIfStmt(cond, target);
body.getUnits().add(ifStmt);
}
开发者ID:secure-software-engineering,项目名称:cheetah,代码行数:9,代码来源:AndroidEntryPointCreatorJIT.java
示例2: createIfStmt
import soot.jimple.internal.JEqExpr; //导入依赖的package包/类
private void createIfStmt(Unit target){
if(target == null){
return;
}
JEqExpr cond = new JEqExpr(intCounter, IntConstant.v(conditionCounter++));
JIfStmt ifStmt = new JIfStmt(cond, target);
body.getUnits().add(ifStmt);
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:9,代码来源:AndroidEntryPointCreator.java
示例3: handleIfStmt
import soot.jimple.internal.JEqExpr; //导入依赖的package包/类
private void handleIfStmt(JIfStmt ifStmt, AnalysisInfo in, AnalysisInfo out, AnalysisInfo outBranch) {
Value condition = ifStmt.getCondition();
if(condition instanceof JInstanceOfExpr) {
//a instanceof X ; if this succeeds, a is not null
JInstanceOfExpr expr = (JInstanceOfExpr) condition;
handleInstanceOfExpression(expr, in, out, outBranch);
} else if(condition instanceof JEqExpr || condition instanceof JNeExpr) {
//a==b or a!=b
AbstractBinopExpr eqExpr = (AbstractBinopExpr) condition;
handleEqualityOrNonEqualityCheck(eqExpr, in, out, outBranch);
}
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:13,代码来源:NullnessAnalysis.java
示例4: handleEqualityOrNonEqualityCheck
import soot.jimple.internal.JEqExpr; //导入依赖的package包/类
private void handleEqualityOrNonEqualityCheck(AbstractBinopExpr eqExpr, AnalysisInfo in,
AnalysisInfo out, AnalysisInfo outBranch) {
Value left = eqExpr.getOp1();
Value right = eqExpr.getOp2();
Value val=null;
if(left==NullConstant.v()) {
if(right!=NullConstant.v()) {
val = right;
}
} else if(right==NullConstant.v()) {
if(left!=NullConstant.v()) {
val = left;
}
}
//if we compare a local with null then process further...
if(val!=null && val instanceof Local) {
if(eqExpr instanceof JEqExpr)
//a==null
handleEquality(val, out, outBranch);
else if(eqExpr instanceof JNeExpr)
//a!=null
handleNonEquality(val, out, outBranch);
else
throw new IllegalStateException("unexpected condition: "+eqExpr.getClass());
}
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:29,代码来源:NullnessAnalysis.java
示例5: normalizeNegations
import soot.jimple.internal.JEqExpr; //导入依赖的package包/类
private Value normalizeNegations(Value v) {
if (v instanceof NegExpr) {
return ((NegExpr)v).getOp();
} else if (v instanceof BinopExpr) {
BinopExpr bo = (BinopExpr)v;
if (bo instanceof NeExpr) {
return new JEqExpr(bo.getOp1(), bo.getOp2());
}
}
return v;
}
开发者ID:SRI-CSL,项目名称:bixie,代码行数:12,代码来源:SootBodyTransformer.java
示例6: createDummyMainInternal
import soot.jimple.internal.JEqExpr; //导入依赖的package包/类
@Override
protected SootMethod createDummyMainInternal(SootMethod mainMethod) {
Map<String, Set<String>> classMap =
SootMethodRepresentationParser.v().parseClassNames(methodsToCall, false);
// create new class:
Body body = mainMethod.getActiveBody();
LocalGenerator generator = new LocalGenerator(body);
HashMap<String, Local> localVarsForClasses = new HashMap<String, Local>();
// create constructors:
for(String className : classMap.keySet()){
SootClass createdClass = Scene.v().forceResolve(className, SootClass.BODIES);
createdClass.setApplicationClass();
Local localVal = generateClassConstructor(createdClass, body);
if (localVal == null) {
logger.warn("Cannot generate constructor for class: {}", createdClass);
continue;
}
localVarsForClasses.put(className, localVal);
}
// add entrypoint calls
int conditionCounter = 0;
JNopStmt startStmt = new JNopStmt();
JNopStmt endStmt = new JNopStmt();
Value intCounter = generator.generateLocal(IntType.v());
body.getUnits().add(startStmt);
for (Entry<String, Set<String>> entry : classMap.entrySet()){
Local classLocal = localVarsForClasses.get(entry.getKey());
for (String method : entry.getValue()){
SootMethodAndClass methodAndClass =
SootMethodRepresentationParser.v().parseSootMethodString(method);
SootMethod currentMethod = findMethod(Scene.v().getSootClass(methodAndClass.getClassName()),
methodAndClass.getSubSignature());
if (currentMethod == null) {
logger.warn("Entry point not found: {}", method);
continue;
}
JEqExpr cond = new JEqExpr(intCounter, IntConstant.v(conditionCounter));
conditionCounter++;
JNopStmt thenStmt = new JNopStmt();
JIfStmt ifStmt = new JIfStmt(cond, thenStmt);
body.getUnits().add(ifStmt);
buildMethodCall(currentMethod, body, classLocal, generator);
body.getUnits().add(thenStmt);
}
}
body.getUnits().add(endStmt);
JGotoStmt gotoStart = new JGotoStmt(startStmt);
body.getUnits().add(gotoStart);
body.getUnits().add(Jimple.v().newReturnVoidStmt());
NopEliminator.v().transform(body);
eliminateSelfLoops(body);
return mainMethod;
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:60,代码来源:DefaultEntryPointCreator.java
示例7: createDummyMainInternal
import soot.jimple.internal.JEqExpr; //导入依赖的package包/类
/**
* Soot requires a main method, so we create a dummy method which calls all entry functions.
*
* @param classMap
* the methods to call (signature as String)
* @param createdClass
* the class which contains the methods
* @return list of entryPoints
*/
@Override
protected SootMethod createDummyMainInternal(List<String> methods) {
Map<String, List<String>> classMap =
SootMethodRepresentationParser.v().parseClassNames(methods, false);
// create new class:
JimpleBody body = Jimple.v().newBody();
SootMethod mainMethod = createEmptyMainMethod(body);
LocalGenerator generator = new LocalGenerator(body);
HashMap<String, Local> localVarsForClasses = new HashMap<String, Local>();
// create constructors:
for(String className : classMap.keySet()){
SootClass createdClass = Scene.v().forceResolve(className, SootClass.BODIES);
createdClass.setApplicationClass();
Local localVal = generateClassConstructor(createdClass, body);
if (localVal == null) {
logger.warn("Cannot generate constructor for class: {}", createdClass);
continue;
}
localVarsForClasses.put(className, localVal);
}
// add entrypoint calls
int conditionCounter = 0;
JNopStmt startStmt = new JNopStmt();
JNopStmt endStmt = new JNopStmt();
Value intCounter = generator.generateLocal(IntType.v());
body.getUnits().add(startStmt);
for (Entry<String, List<String>> entry : classMap.entrySet()){
Local classLocal = localVarsForClasses.get(entry.getKey());
for (String method : entry.getValue()){
SootMethodAndClass methodAndClass =
SootMethodRepresentationParser.v().parseSootMethodString(method);
SootMethod currentMethod = findMethod(Scene.v().getSootClass(methodAndClass.getClassName()),
methodAndClass.getSubSignature());
if (currentMethod == null) {
logger.warn("Entry point not found: {}", method);
continue;
}
JEqExpr cond = new JEqExpr(intCounter, IntConstant.v(conditionCounter));
conditionCounter++;
JNopStmt thenStmt = new JNopStmt();
JIfStmt ifStmt = new JIfStmt(cond, thenStmt);
body.getUnits().add(ifStmt);
buildMethodCall(currentMethod, body, classLocal, generator);
body.getUnits().add(thenStmt);
}
}
body.getUnits().add(endStmt);
JGotoStmt gotoStart = new JGotoStmt(startStmt);
body.getUnits().add(gotoStart);
body.getUnits().add(Jimple.v().newReturnVoidStmt());
return mainMethod;
}
开发者ID:0-14N,项目名称:soot-inflow,代码行数:69,代码来源:DefaultEntryPointCreator.java
注:本文中的soot.jimple.internal.JEqExpr类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论