本文整理汇总了Java中org.apache.bcel.generic.IINC类的典型用法代码示例。如果您正苦于以下问题:Java IINC类的具体用法?Java IINC怎么用?Java IINC使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IINC类属于org.apache.bcel.generic包,在下文中一共展示了IINC类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: countLocalStoresLoadsAndIncrements
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
/**
* Count stores, loads, and increments of local variables in method whose
* CFG is given.
*
* @param localStoreCount
* counts of local stores (indexed by local)
* @param localLoadCount
* counts of local loads (indexed by local)
* @param localIncrementCount
* counts of local increments (indexed by local)
* @param cfg
* control flow graph (CFG) of method
*/
private void countLocalStoresLoadsAndIncrements(int[] localStoreCount, int[] localLoadCount, int[] localIncrementCount,
CFG cfg) {
for (Iterator<Location> i = cfg.locationIterator(); i.hasNext();) {
Location location = i.next();
if (location.getBasicBlock().isExceptionHandler())
continue;
boolean isStore = isStore(location);
boolean isLoad = isLoad(location);
if (!isStore && !isLoad)
continue;
IndexedInstruction ins = (IndexedInstruction) location.getHandle().getInstruction();
int local = ins.getIndex();
if (ins instanceof IINC) {
localStoreCount[local]++;
localLoadCount[local]++;
localIncrementCount[local]++;
} else if (isStore)
localStoreCount[local]++;
else
localLoadCount[local]++;
}
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:39,代码来源:FindDeadLocalStores.java
示例2: visitIINC
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
@Override
public void visitIINC(IINC obj) {
if (obj.getIncrement() == 0) {
// A no-op.
return;
}
// IINC is a special case because its input and output are not on the
// stack.
// However, we still want to use the value number cache to ensure that
// this operation is modeled consistently. (If we do nothing, we miss
// the fact that the referenced local is modified.)
int local = obj.getIndex();
ValueNumber[] input = new ValueNumber[] { getFrame().getValue(local) };
ValueNumberCache.Entry entry = new ValueNumberCache.Entry(handle, input);
ValueNumber[] output = cache.lookupOutputValues(entry);
if (output == null) {
output = new ValueNumber[] { factory.createFreshValue() };
cache.addOutputValues(entry, output);
}
getFrame().setValue(local, output[0]);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:26,代码来源:ValueNumberFrameModelingVisitor.java
示例3: countLocalStoresLoadsAndIncrements
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
/**
* Count stores, loads, and increments of local variables in method whose
* CFG is given.
*
* @param localStoreCount
* counts of local stores (indexed by local)
* @param localLoadCount
* counts of local loads (indexed by local)
* @param localIncrementCount
* counts of local increments (indexed by local)
* @param cfg
* control flow graph (CFG) of method
*/
private void countLocalStoresLoadsAndIncrements(int[] localStoreCount, int[] localLoadCount, int[] localIncrementCount,
CFG cfg) {
for (Iterator<Location> i = cfg.locationIterator(); i.hasNext();) {
Location location = i.next();
if (location.getBasicBlock().isExceptionHandler())
continue;
boolean isStore = isStore(location);
boolean isLoad = isLoad(location);
if (!isStore && !isLoad)
continue;
IndexedInstruction ins = (IndexedInstruction) location.getHandle().getInstruction();
int local = ins.getIndex();
if (ins instanceof IINC) {
localStoreCount[local]++;
localLoadCount[local]++;
localIncrementCount[local]++;
} else if (isStore)
localStoreCount[local]++;
else
localLoadCount[local]++;
}
}
开发者ID:OpenNTF,项目名称:FindBug-for-Domino-Designer,代码行数:39,代码来源:FindDeadLocalStores.java
示例4: removeUnusedLocals
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
void removeUnusedLocals(Method mOrig, MethodGen m) {
InstructionList il = m.getInstructionList();
InstructionHandle[] ins = il.getInstructionHandles();
for (int i = 0; i < ins.length; i++) {
Instruction in = ins[i].getInstruction();
if (in instanceof LocalVariableInstruction) {
LocalVariableInstruction curr = (LocalVariableInstruction) in;
if (mtab.getLocal(m, curr, ins[i].getPosition()) != null
&& curr.getIndex() < m.getMaxLocals() - 5
&& !mtab.isLocalUsedInInlet(mOrig, curr.getIndex())) {
if (curr instanceof IINC) {
ins[i].setInstruction(new NOP());
} else if (curr instanceof LSTORE || curr instanceof DSTORE) {
ins[i].setInstruction(new POP2());
} else if (curr instanceof StoreInstruction) {
ins[i].setInstruction(new POP());
} else if (curr instanceof ALOAD) {
ins[i].setInstruction(new ACONST_NULL());
} else if (curr instanceof FLOAD) {
ins[i].setInstruction(new FCONST((float) 0.0));
} else if (curr instanceof ILOAD) {
ins[i].setInstruction(new ICONST(0));
} else if (curr instanceof DLOAD) {
ins[i].setInstruction(new DCONST(0.0));
} else if (curr instanceof LLOAD) {
ins[i].setInstruction(new LCONST(0L));
} else {
System.out.println("unhandled ins in "
+ "removeUnusedLocals: " + curr);
System.exit(1);
}
}
}
}
}
开发者ID:pieterhijma,项目名称:cashmere,代码行数:37,代码来源:Cashmerec.java
示例5: createInstructionIinc
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
@SuppressWarnings("unused")
// Called using reflection
private Instruction createInstructionIinc(Element inst) {
int index = Integer.parseInt(inst.getAttributeValue("index"));
int incr = Integer.parseInt(inst.getAttributeValue("incr"));
return new IINC(index, incr);
}
开发者ID:shannah,项目名称:cn1,代码行数:8,代码来源:JavaByteCodeOutputProcess.java
示例6: visitIINC
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
@Override
public void visitIINC(IINC obj) {
// System.out.println("before iinc: " + getFrame());
int v = obj.getIndex();
int amount = obj.getIncrement();
ConstantFrame f = getFrame();
Constant c = f.getValue(v);
if (c.isConstantInteger())
f.setValue(v, new Constant(c.getConstantInt() + amount));
else
f.setValue(v, Constant.NOT_CONSTANT);
// System.out.println("after iinc: " + getFrame());
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:14,代码来源:ConstantFrameModelingVisitor.java
示例7: visitIINC
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
/** Checks if the constraints of operands of the said instruction(s) are satisfied. */
public void visitIINC(IINC o){
int idx = o.getIndex();
if (idx < 0){
constraintViolated(o, "Index '"+idx+"' must be non-negative.");
}
else{
int maxminus1 = max_locals()-1;
if (idx > maxminus1){
constraintViolated(o, "Index '"+idx+"' must not be greater than max_locals-1 '"+maxminus1+"'.");
}
}
}
开发者ID:Hu6,项目名称:VestaClient,代码行数:14,代码来源:Pass3aVerifier.java
示例8: visitLocalVariableInstruction
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
public void visitLocalVariableInstruction( LocalVariableInstruction i ) {
short opcode = i.getOpcode();
Type type = i.getType(_cp);
if (opcode == Constants.IINC) {
_out.println("il.append(new IINC(" + i.getIndex() + ", " + ((IINC) i).getIncrement()
+ "));");
} else {
String kind = (opcode < Constants.ISTORE) ? "Load" : "Store";
_out.println("il.append(_factory.create" + kind + "(" + BCELifier.printType(type)
+ ", " + i.getIndex() + "));");
}
}
开发者ID:Hu6,项目名称:VestaClient,代码行数:13,代码来源:BCELFactory.java
示例9: isStore
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
private boolean isStore(Location location) {
Instruction ins = location.getHandle().getInstruction();
return (ins instanceof StoreInstruction) || (ins instanceof IINC);
}
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:5,代码来源:FindDeadLocalStores.java
示例10: isLoad
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
private boolean isLoad(Location location) {
Instruction ins = location.getHandle().getInstruction();
return (ins instanceof LoadInstruction) || (ins instanceof IINC);
}
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:5,代码来源:FindDeadLocalStores.java
示例11: emitIINC
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
private void emitIINC(Element xml_inst, IINC inst) {
xml_inst.setAttribute("index", java.lang.String.valueOf(inst.getIndex()));
xml_inst.setAttribute("incr", java.lang.String.valueOf(inst.getIncrement()));
}
开发者ID:shannah,项目名称:cn1,代码行数:5,代码来源:ClassToXmlvmProcess.java
示例12: isStore
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
/**
* Is instruction at given location a store?
*
* @param location
* the location
* @return true if instruction at given location is a store, false if not
*/
private boolean isStore(Location location) {
Instruction ins = location.getHandle().getInstruction();
return (ins instanceof StoreInstruction) || (ins instanceof IINC);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:12,代码来源:FindDeadLocalStores.java
示例13: isLoad
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
/**
* Is instruction at given location a load?
*
* @param location
* the location
* @return true if instruction at given location is a load, false if not
*/
private boolean isLoad(Location location) {
Instruction ins = location.getHandle().getInstruction();
return (ins instanceof LoadInstruction) || (ins instanceof IINC);
}
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:12,代码来源:FindDeadLocalStores.java
示例14: isStore
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
/**
* Is instruction at given location a store?
*
* @param location
* the location
* @return true if instruction at given location is a store, false if not
*/
private boolean isStore(Location location) {
Instruction ins = location.getHandle().getInstruction();
return (ins instanceof StoreInstruction) || (ins instanceof IINC);
}
开发者ID:OpenNTF,项目名称:FindBug-for-Domino-Designer,代码行数:12,代码来源:FindDeadLocalStores.java
示例15: isLoad
import org.apache.bcel.generic.IINC; //导入依赖的package包/类
/**
* Is instruction at given location a load?
*
* @param location
* the location
* @return true if instruction at given location is a load, false if not
*/
private boolean isLoad(Location location) {
Instruction ins = location.getHandle().getInstruction();
return (ins instanceof LoadInstruction) || (ins instanceof IINC);
}
开发者ID:OpenNTF,项目名称:FindBug-for-Domino-Designer,代码行数:12,代码来源:FindDeadLocalStores.java
注:本文中的org.apache.bcel.generic.IINC类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论