• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java JEqExpr类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java LogLevel类代码示例发布时间:2022-05-22
下一篇:
Java GeometrySnapper类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap