本文整理汇总了Java中org.apache.bcel.generic.MONITOREXIT类的典型用法代码示例。如果您正苦于以下问题:Java MONITOREXIT类的具体用法?Java MONITOREXIT怎么用?Java MONITOREXIT使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MONITOREXIT类属于org.apache.bcel.generic包,在下文中一共展示了MONITOREXIT类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: isPEI
import org.apache.bcel.generic.MONITOREXIT; //导入依赖的package包/类
/**
* Return whether or not the given instruction can throw exceptions.
*
* @param handle
* the instruction
* @return true if the instruction can throw an exception, false otherwise
*/
private boolean isPEI(InstructionHandle handle) {
Instruction ins = handle.getInstruction();
if (!(ins instanceof ExceptionThrower))
return false;
if (ins instanceof NEW)
return false;
// if (ins instanceof ATHROW) return false;
if (ins instanceof GETSTATIC)
return false;
if (ins instanceof PUTSTATIC)
return false;
if (ins instanceof ReturnInstruction)
return false;
if (ins instanceof INSTANCEOF)
return false;
if (ins instanceof MONITOREXIT)
return false;
if (ins instanceof LDC)
return false;
return true;
}
示例2: getDelta
import org.apache.bcel.generic.MONITOREXIT; //导入依赖的package包/类
public int getDelta(Instruction ins, ValueNumberFrame frame) throws DataflowAnalysisException {
int delta = 0;
if (ins instanceof MONITORENTER) {
if (frame == null || !isThisValue(frame.getTopValue()))
++delta;
} else if (ins instanceof MONITOREXIT) {
if (frame == null || !isThisValue(frame.getTopValue()))
--delta;
}
return delta;
}
示例3: getDelta
import org.apache.bcel.generic.MONITOREXIT; //导入依赖的package包/类
public int getDelta(Instruction ins, ValueNumberFrame frame) throws DataflowAnalysisException {
int delta = 0;
if (ins instanceof MONITORENTER)
++delta;
else if (ins instanceof MONITOREXIT)
--delta;
return delta;
}
示例4: scan
import org.apache.bcel.generic.MONITOREXIT; //导入依赖的package包/类
/**
* Scan a method for self call sites.
*
* @param node
* the CallGraphNode for the method to be scanned
*/
private void scan(CallGraphNode node) throws CFGBuilderException {
Method method = node.getMethod();
CFG cfg = classContext.getCFG(method);
if (method.isSynchronized())
hasSynchronization = true;
Iterator<BasicBlock> i = cfg.blockIterator();
while (i.hasNext()) {
BasicBlock block = i.next();
Iterator<InstructionHandle> j = block.instructionIterator();
while (j.hasNext()) {
InstructionHandle handle = j.next();
Instruction ins = handle.getInstruction();
if (ins instanceof InvokeInstruction) {
InvokeInstruction inv = (InvokeInstruction) ins;
Method called = isSelfCall(inv);
if (called != null) {
// Add edge to call graph
CallSite callSite = new CallSite(method, block, handle);
callGraph.createEdge(node, callGraph.getNodeForMethod(called), callSite);
// Add to called method set
calledMethodSet.add(called);
}
} else if (ins instanceof MONITORENTER || ins instanceof MONITOREXIT) {
hasSynchronization = true;
}
}
}
}