本文整理汇总了Java中soot.jimple.internal.JAssignStmt类的典型用法代码示例。如果您正苦于以下问题:Java JAssignStmt类的具体用法?Java JAssignStmt怎么用?Java JAssignStmt使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
JAssignStmt类属于soot.jimple.internal包,在下文中一共展示了JAssignStmt类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: jimplify
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void jimplify (DexBody body) {
// if (local != null && expr != null)
// throw new RuntimeException("Both local and expr are set to move.");
int dest = ((OneRegisterInstruction)instruction).getRegisterA();
// if (local != null)
// assign = Jimple.v().newAssignStmt(body.getRegisterLocal(dest), local);
// else if (expr != null)
// assign = Jimple.v().newAssignStmt(body.getRegisterLocal(dest), expr);
// else
// throw new RuntimeException("Neither local and expr are set to move.");
assign = Jimple.v().newAssignStmt(body.getRegisterLocal(dest), body.getStoreResultLocal());
setUnit(assign);
addTags(assign);
if (tag != null)
assign.addTag(tag);
body.add(assign);
if (IDalvikTyper.ENABLE_DVKTYPER) {
Debug.printDbg(IDalvikTyper.DEBUG, "constraint: "+ assign);
int op = (int)instruction.getOpcode().value;
JAssignStmt jassign = (JAssignStmt)assign;
DalvikTyper.v().addConstraint(assign.getLeftOpBox(), assign.getRightOpBox());
}
}
示例2: jimplify
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void jimplify (DexBody body) {
if(!(instruction instanceof Instruction12x))
throw new IllegalArgumentException("Expected Instruction12x but got: "+instruction.getClass());
Instruction12x cmpInstr = (Instruction12x)instruction;
int dest = cmpInstr.getRegisterA();
Local source = body.getRegisterLocal(cmpInstr.getRegisterB());
Value expr = getExpression(source);
assign = Jimple.v().newAssignStmt(body.getRegisterLocal(dest), expr);
setUnit(assign);
addTags(assign);
body.add(assign);
if (IDalvikTyper.ENABLE_DVKTYPER) {
Debug.printDbg(IDalvikTyper.DEBUG, "constraint: "+ assign);
int op = (int)instruction.getOpcode().value;
//DalvikTyper.v().captureAssign((JAssignStmt)assign, op);
JAssignStmt jass = (JAssignStmt)assign;
DalvikTyper.v().setType((expr instanceof JCastExpr) ? ((JCastExpr) expr).getOpBox() : ((UnopExpr) expr).getOpBox(), opUnType[op - 0x7b], true);
DalvikTyper.v().setType(jass.leftBox, resUnType[op - 0x7b], false);
}
}
示例3: h2t
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
Type h2t(Unit h) {
if(h instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)h;
if(SootUtilities.isNewStmt(j)){
NewExpr ne = (NewExpr)j.rightBox.getValue();
return ne.getType();
}else if(SootUtilities.isNewArrayStmt(j)){
NewArrayExpr nae = (NewArrayExpr)j.rightBox.getValue();
return nae.getType();
}else if(SootUtilities.isNewMultiArrayStmt(j)){
JNewMultiArrayExpr jnmae = (JNewMultiArrayExpr)j.rightBox.getValue();
return jnmae.getType();
}
}
return null;
}
示例4: h2t
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
Type h2t(Unit h) {
if(h instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)h;
if(SootUtilities.isNewStmt(j)){
NewExpr ne = (NewExpr)j.rightBox.getValue();
return ne.getType();
}else if(SootUtilities.isNewArrayStmt(j)){
NewArrayExpr nae = (NewArrayExpr)j.rightBox.getValue();
return nae.getType();
}else if(SootUtilities.isNewMultiArrayStmt(j)){
JNewMultiArrayExpr jnmae = (JNewMultiArrayExpr)j.rightBox.getValue();
return jnmae.getType();
}
}
return null;
}
示例5: getType
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public static Type getType(Unit u) {
Type t=null;
if(u instanceof JAssignStmt){
JAssignStmt as = (JAssignStmt) u;
Value right=as.rightBox.getValue();
if (SootUtilities.isNewStmt(as))
t = ((JNewExpr)right).getType();
else if (SootUtilities.isNewArrayStmt(as))
t = ((JNewArrayExpr)right).getType();
else if (SootUtilities.isNewMultiArrayStmt(as))
t = ((JNewMultiArrayExpr)right).getType();
}
else {
assert (SootUtilities.isInvoke(u));
t = null;
}
return t;
}
示例6: fill
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
@Override
public void fill() {
DomI domI = (DomI) doms[0];
DomV domV = (DomV) doms[2];
int numI = domI.size();
for (int iIdx = 0; iIdx < numI; iIdx++) {
Unit u = (Unit) domI.get(iIdx);
Local v = null;
if (u instanceof JAssignStmt) v = (Local)((JAssignStmt)u).leftBox.getValue();
if (v != null) {
if (v.getType() instanceof RefLikeType) {
int vIdx = domV.indexOf(v);
assert (vIdx >= 0);
add(iIdx, 0, vIdx);
}
}
}
}
示例7: fill
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void fill() {
DomE domE = (DomE) doms[0];
DomF domF = (DomF) doms[1];
int numE = domE.size();
for (int eIdx = 0; eIdx < numE; eIdx++) {
Unit e = (Unit)domE.get(eIdx);
//jq_Field f = e.getField();
if(e instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)e;
if(j.containsFieldRef()){
SootField f = j.getFieldRef().getField();
int fIdx = domF.indexOf(f);
assert (fIdx >= 0);
add(eIdx, fIdx);
}
else if(SootUtilities.isLoadInst(j) || SootUtilities.isStoreInst(j)){
add(eIdx, 0);
}
}
}
}
示例8: visitHeapInst
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
@Override
public void visitHeapInst(Unit u) {
if (u instanceof JAssignStmt){
JAssignStmt as = (JAssignStmt) u;
if (SootUtilities.isFieldLoad(as)) {
if(as.rightBox.getValue() instanceof InstanceFieldRef)
if (!(((InstanceFieldRef)as.rightBox.getValue()).getBase() instanceof Local))
return;
}
if (SootUtilities.isFieldStore(as)) {
if(as.rightBox.getValue() instanceof InstanceFieldRef)
if (!(((InstanceFieldRef)as.leftBox.getValue()).getBase() instanceof Local))
return;
}
}
add(u);
}
示例9: checkInvoke
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
/**
* Check whether current instruction is an instruction after a method invoke
*
* @param wpe
*/
private void checkInvoke(IWrappedPE<Edge, Edge> wpe) {
if (wpe.getWSE() != null) { // if wse!=null, wpe is a path edge
// immediately after a method call
IWrappedPE<Edge, Edge> cwpe = wpe.getWPE();
Unit inst = cwpe.getInst();
// TODO: Verify Empty basic block case
/*if (inst instanceof Block) { // an empty basic block
assert ((Block) inst).getHead() == null;
return;
}*/
Unit q = (Unit) inst;
if (iterAnalysis.isThreadStart(q))
return;
soot.Value ro = null;
if(q instanceof JAssignStmt){
ro = ((JAssignStmt)q).leftBox.getValue();
}
retIdx = -1;
if (ro != null && ro.getType() instanceof RefLikeType) {
retIdx = iterAnalysis.getDomVIdx((Local)ro);
}
callStack.push(cwpe);
}
}
示例10: fill
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
@Override
public void fill() {
ProgramRel relCheckExcludedE = (ProgramRel) ClassicProject.g().getTrgt("checkExcludedE");
relCheckExcludedE.load();
DomE domE = (DomE) doms[0];
for (Unit q : domE) {
if(q instanceof JAssignStmt){
JAssignStmt jas = (JAssignStmt)q;
if(SootUtilities.isStaticGet(jas) || SootUtilities.isStaticPut(jas))
continue;
}
if (!relCheckExcludedE.contains(q))
add(q);
}
relCheckExcludedE.close();
}
示例11: visitHeapInst
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void visitHeapInst(Unit q) {
if(q instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)q;
if(SootUtilities.isStaticPut(j)){
SootField f = j.getFieldRef().getField();
if(j.leftBox.getValue().getType() instanceof RefLikeType){
if (j.rightBox.getValue() instanceof Local) {
Local r = (Local)j.rightBox.getValue();
int mIdx = domM.indexOf(ctnrMethod);
assert (mIdx >= 0);
int rIdx = domV.indexOf(r);
assert (rIdx >= 0);
int fIdx = domF.indexOf(f);
assert (fIdx >= 0);
add(mIdx, fIdx, rIdx);
}
}
}
}
}
示例12: visitHeapInst
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void visitHeapInst(Unit q) {
if(q instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)q;
if(SootUtilities.isStaticPut(j)){
SootField f = j.getFieldRef().getField();
if(j.leftBox.getValue().getType() instanceof RefLikeType &&
j.rightBox.getValue() instanceof Local){
Local r = (Local)j.rightBox.getValue();
int pIdx = domP.indexOf(q);
assert (pIdx >= 0);
int rIdx = domV.indexOf(r);
assert (rIdx >= 0);
int fIdx = domF.indexOf(f);
assert (fIdx >= 0);
add(pIdx, fIdx, rIdx);
}
}
}
}
示例13: visitHeapInst
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void visitHeapInst(Unit q) {
if(q instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)q;
if(SootUtilities.isStaticGet(j) &&
j.rightBox.getValue().getType() instanceof RefLikeType){
SootField f = j.getFieldRef().getField();
Local l = (Local)j.leftBox.getValue();
int pIdx = domP.indexOf(q);
assert (pIdx >= 0);
int lIdx = domV.indexOf(l);
assert (lIdx >= 0);
int fIdx = domF.indexOf(f);
assert (fIdx >= 0);
add(pIdx, lIdx, fIdx);
}
}
}
示例14: visitHeapInst
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void visitHeapInst(Unit q) {
if(q instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)q;
Type right = j.rightBox.getValue().getType();
if(SootUtilities.isStaticGet(j) && !(right instanceof PrimType)){
SootField f = j.getFieldRef().getField();
Local l = (Local)j.leftBox.getValue();
int mIdx = domM.indexOf(ctnrMethod);
assert (mIdx >= 0);
int lIdx = domV.indexOf(l);
assert (lIdx >= 0);
int fIdx = domF.indexOf(f);
assert (fIdx >= 0);
add(mIdx, lIdx, fIdx);
}
}
}
示例15: fill
import soot.jimple.internal.JAssignStmt; //导入依赖的package包/类
public void fill() {
DomP domP = (DomP) doms[0];
DomV domV = (DomV) doms[1];
DomH domH = (DomH) doms[2];
int numH = domH.size();
for (int hIdx = 1; hIdx < numH; hIdx++) {
Unit h = (Unit) domH.get(hIdx);
int pIdx = domP.indexOf(h);
assert (pIdx >= 0);
if(h instanceof JAssignStmt){
JAssignStmt j = (JAssignStmt)h;
if(SootUtilities.isNewStmt(j) || SootUtilities.isNewArrayStmt(j)){
Local v = (Local)j.leftBox.getValue();
int vIdx = domV.indexOf(v);
assert (vIdx >= 0);
add(pIdx, vIdx, hIdx);
}
}
}
}