当前位置: 首页>>代码示例>>Java>>正文


Java IR类代码示例

本文整理汇总了Java中com.ibm.wala.ssa.IR的典型用法代码示例。如果您正苦于以下问题:Java IR类的具体用法?Java IR怎么用?Java IR使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


IR类属于com.ibm.wala.ssa包,在下文中一共展示了IR类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: makeInitialFieldNumbers

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
private ObjectArrayMapping makeInitialFieldNumbers(IR ir) {
   Set fields = new LinkedHashSet();
   for(Iterator is = iterateInstructions(ir); is.hasNext(); ) {
     SSAInstruction i = (SSAInstruction)is.next();
     if (i == null) continue;

     PointerKey[] defs = fieldAccesses.getDefs(i);
     for(int f = 0; f < defs.length; f++) {
fields.add( defs[f] );
     }

     PointerKey[] uses = fieldAccesses.getUses(i);
     for(int f = 0; f < uses.length; f++) {
fields.add( uses[f] );
     }
   }

   return new ObjectArrayMapping(
     fields.toArray(new PointerKey[ fields.size() ])
   );
 }
 
开发者ID:wala,项目名称:MemSAT,代码行数:22,代码来源:FieldNameSSAConversion.java

示例2: makeValueNumbers

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
private Map makeValueNumbers(IR ir) {
   Map vns = new LinkedHashMap();
   for(Iterator is = iterateInstructions(ir); is.hasNext(); ) {
     SSAInstruction inst = (SSAInstruction)is.next();
     if (inst == null) continue;

     PointerKey[] uses = fieldAccesses.getUses(inst);
     int[] useValueNumbers = new int[ uses.length ];
     for(int j = 0; j < uses.length; j++) {
useValueNumbers[j] = getInitialFieldNumber( uses[j] );
     }
     vns.put(Pair.make(inst, USES), useValueNumbers);
     
     PointerKey[] defs = fieldAccesses.getDefs(inst);
     int[] defValueNumbers = new int[ defs.length ];
     for(int j = 0; j < defs.length; j++) {
defValueNumbers[j] = getInitialFieldNumber( defs[j] );
     }
     vns.put(Pair.make(inst, DEFS), defValueNumbers);
   }
   
   return vns;
 }
 
开发者ID:wala,项目名称:MemSAT,代码行数:24,代码来源:FieldNameSSAConversion.java

示例3: toString

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public String toString() {
  StringBuffer buf = new StringBuffer("types for " + node + "\n");
  IR ir = node.getIR();
  SymbolTable st = ir.getSymbolTable();
  for(int vn = 1; vn <= st.getMaxValueNumber(); vn++) {
    if (st.isNullConstant(vn)) {
 buf.append(vn + " --> <null constant>\n");
    }
   
    PointerKey pk = new LocalPointerKey(node, vn);
    OrdinalSet<? extends InstanceKey> types = PA.getPointsToSet( pk );

    buf.append(vn + " --> " + types + "\n");
  }

  return buf.toString();
}
 
开发者ID:wala,项目名称:MemSAT,代码行数:18,代码来源:MiniaturJavaScriptTypeData.java

示例4: getInstructions

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
protected Iterator getInstructions(final CGNode node) {
	final PDG pdg = sdg.getPDG(node);
	final IR ir = node.getIR();
	final Map indicesMap = PDG.computeInstructionIndices(ir);
	return new FilterIterator(
			node.getIR().iterateAllInstructions(), new Predicate() {
				private boolean sliceContainsInstruction(
						SSAInstruction s) {
					return slice.contains(PDG
							.ssaInstruction2Statement(node, s,
									indicesMap, ir));
				}

				public boolean test(Object o) {
					return sliceContainsInstruction((SSAInstruction) o);
				}
			});
}
 
开发者ID:wala,项目名称:MemSAT,代码行数:19,代码来源:WalaInformationImpl.java

示例5: createInstructionToIndexMap

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public static Map<SSAInstruction, Integer> createInstructionToIndexMap(IR ir) {

		Map<SSAInstruction, Integer> map = Maps.newHashMap();

		for (int i = 0; i < ir.getInstructions().length; i++) {
			SSAInstruction instruction = ir.getInstructions()[i];
			if (instruction != null) {
				Integer old = map.put(instruction, i);
				if (old != null) {
					throw new IllegalStateException("instruction was set before: actual index = " + i +
							"; old index = " + old + "; instruction = " + instruction);
				}
			}
		}

		return map;
	}
 
开发者ID:wondee,项目名称:faststring,代码行数:18,代码来源:IRUtil.java

示例6: getSSACFG

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public static SSACFG getSSACFG(String methodSignature, CallGraph cg) {
	logger.debug("Retrieve SSACFG for " + methodSignature);

	IR ir = getIR(methodSignature, cg);
	if (ir == null && !methodSignature.startsWith(WALA_FAKE_ROOT_CLASS))
		logger.warn("Could not retrieve IR for " + methodSignature);		
	
	return ir == null? null : ir.getControlFlowGraph();
}
 
开发者ID:reddr,项目名称:LibScout,代码行数:10,代码来源:WalaUtils.java

示例7: getExprForCondition

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public static Expr getExprForCondition(ValidityChecker vc, BasicBlock basicBlock, IR entryIR) {
    // According to WALA documentation these blocks contain exactly one instruction
    SSAConditionalBranchInstruction inst = (SSAConditionalBranchInstruction) basicBlock.getLastInstruction();
    int var = inst.getUse(0); // This Instruction contains exactly two uses (0, 1) and use 1 is always 0.
    Expr expr = getExprForInstruction(vc, var, entryIR, null);

    return expr;
}
 
开发者ID:logicalhacking,项目名称:DASCA,代码行数:9,代码来源:SMTChecker.java

示例8: getExprForConditionalBranchInstruction

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public static Expr getExprForConditionalBranchInstruction(ValidityChecker vc, SSAInstruction inst, IR entryIR) {
    // According to WALA documentation these blocks contain exactly one instruction
    SSAConditionalBranchInstruction condInst = (SSAConditionalBranchInstruction) inst;
    int var = condInst.getUse(0); // This Instruction contains exactly two uses (0, 1) and use 1 is always 0.
    Expr expr = getExprForInstruction(vc, var, entryIR, BinaryOpInstruction.Operator.AND); // The AND operator identifies the expression as a boolean type

    return expr;
}
 
开发者ID:logicalhacking,项目名称:DASCA,代码行数:9,代码来源:SMTChecker.java

示例9: printSSA

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
/**
 * Display different values from Nodes maybe interesting for further
 * Analyzing
 *
 * @param nodes
 *            A collection of nodes from a callgraph
 */
public static ArrayList<String> printSSA(Collection<CGNode> nodes) {
    ArrayList<String> liste = new ArrayList<String>();
    for (CGNode cgNode : nodes) {
        // get intermediate representation
        IR ir = cgNode.getIR();

        liste.add("Instruction: " + (ir.getInstructions().toString()));
        System.out.println("Instruction: " + ir.getInstructions());
        liste.add("Methode: " + ir.getMethod());
        System.out.println("Methode: " + ir.getMethod());

        // System.out.println("Flow Graph of Node="+ir.getControlFlowGraph());
        SSACFG cfg = ir.getControlFlowGraph();

        // Iterate over the Basic Blocks of CFG
        Iterator<ISSABasicBlock> cfgIt = cfg.iterator();
        SSAInstruction ssaInstr = null;
        while (cfgIt.hasNext()) {
            ISSABasicBlock ssaBb = cfgIt.next();

            // Iterate over SSA Instructions for a Basic Block
            Iterator<SSAInstruction> ssaIt = ssaBb.iterator();

            while (ssaIt.hasNext()) {
                ssaInstr = ssaIt.next();

                printSSAInstruction(ssaInstr);
                liste.add("  " + ssaInstr.toString() + " |Count Defs="
                          + ssaInstr.getNumberOfDefs() + " |count uses="
                          + ssaInstr.getNumberOfUses());
                System.out.println("  " + ssaInstr.toString()
                                   + " |Count Defs=" + ssaInstr.getNumberOfDefs()
                                   + " |count uses=" + ssaInstr.getNumberOfUses());

            }
        }
    }
    return liste;
}
 
开发者ID:logicalhacking,项目名称:DASCA,代码行数:47,代码来源:Main.java

示例10: createIR

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public Map<IMethod, IR> createIR() throws java.io.IOException {
   Map<IMethod, IR> result = new HashMap<IMethod, IR>();
   
   engine.buildAnalysisScope();

   IClassHierarchy cha = engine.getClassHierarchy();

   SSAOptions options = new SSAOptions();
   IRFactory<IMethod> F = AstIRFactory.makeDefaultFactory();
   
   for(Iterator<IClass> clss = cha.iterator(); clss.hasNext(); ) {
     IClass cls = clss.next();
     ClassLoaderReference clr = cls.getClassLoader().getReference(); 
     if ( !(clr.equals(ClassLoaderReference.Primordial)  
                    || 
     clr.equals(ClassLoaderReference.Extension)))
     {		
for (Iterator<IMethod> ms = cls.getDeclaredMethods().iterator(); 
     ms.hasNext(); ) 
{
  IMethod m = ms.next();
  IR ir = F.makeIR(m, Everywhere.EVERYWHERE, options);
  result.put(m, ir);
}
     }
   }
   
   return result;
 }
 
开发者ID:wala,项目名称:MemSAT,代码行数:30,代码来源:IRCreation.java

示例11: FieldNameSSAConversion

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public FieldNameSSAConversion(IR ir, FieldAccesses fieldAccesses) {
  super(ir, new SSAOptions());
  this.ir = ir;
  this.fieldAccesses = fieldAccesses;
  fieldPhiSet = new LinkedHashSet();
  fieldPhiNodes = new LinkedHashMap();
  initialFieldNumbers = makeInitialFieldNumbers(ir);
  valueNumbers = makeValueNumbers(ir);
  nextFreeNumber = getMaxValueNumber() + 1;
}
 
开发者ID:wala,项目名称:MemSAT,代码行数:11,代码来源:FieldNameSSAConversion.java

示例12: evaluate

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public byte evaluate(IVariable lhs, IVariable rhs) {
     FieldAccessesVariable lv = (FieldAccessesVariable)lhs;
     FieldAccessesVariable rv = (FieldAccessesVariable)rhs;

     IR ir = node.getIR();
     Set localReads = new HashSet();
     Set localWrites = new HashSet();
     if (ir != null) {
   	FieldAccesses accesses = localAccesses.get(node);
for(Iterator insts = getInstructions(node); insts.hasNext();) {
  SSAInstruction inst = (SSAInstruction) insts.next();

  PointerKey[] defs = accesses.getDefs(inst);
  for(int f = 0; f < defs.length; f++) {
    localWrites.add( defs[f] );
  }

  PointerKey[] uses = accesses.getUses(inst);
  for(int f = 0; f < uses.length; f++) {
    localReads.add( uses[f] );
  }
}
     }

     boolean changed = false;
     changed |= lv.addReads( rv.readReferences );
     changed |= lv.addReads( localReads );
     changed |= lv.addWrites( rv.writeReferences );
     changed |= lv.addWrites( localWrites );
     if (changed)
return CHANGED;
     else
return NOT_CHANGED;      
   }
 
开发者ID:wala,项目名称:MemSAT,代码行数:35,代码来源:IPFieldAccessAnalysis.java

示例13: TranslationWarning

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
/**
 * Constructs a new warning for the given ir, instruction and reason.
 */
TranslationWarning(IR ir, SSAInstruction inst, String reason) {
	super(CLIENT_MODERATE);
	this.ir = ir;
	this.inst = inst;
	this.reason = reason;
}
 
开发者ID:wala,项目名称:MemSAT,代码行数:10,代码来源:TranslationWarning.java

示例14: AnalyzedMethod

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public AnalyzedMethod(IR ir, DefUse defUse) {
	Preconditions.checkNotNull(ir, "ir is null");
	Preconditions.checkNotNull(defUse, "defUse is null");

	this.ir = ir;
	this.defUse = defUse;
}
 
开发者ID:wondee,项目名称:faststring,代码行数:8,代码来源:AnalyzedMethod.java

示例15: findIRForMethod

import com.ibm.wala.ssa.IR; //导入依赖的package包/类
public IR findIRForMethod(IMethod m) {
	try {
		IInstruction[] instructions = ((IBytecodeMethod) m).getInstructions();
		if (instructions != null) {
			return cache.getSSACache().findOrCreateIR(m, Everywhere.EVERYWHERE,
				options.getSSAOptions());
		}
	} catch (InvalidClassFileException e) {
		e.printStackTrace();
	}
	return null;
}
 
开发者ID:wondee,项目名称:faststring,代码行数:13,代码来源:TargetApplication.java


注:本文中的com.ibm.wala.ssa.IR类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。