本文整理汇总了Java中org.apache.bcel.classfile.LocalVariableTable.getLocalVariableTable方法的典型用法代码示例。如果您正苦于以下问题:Java LocalVariableTable.getLocalVariableTable方法的具体用法?Java LocalVariableTable.getLocalVariableTable怎么用?Java LocalVariableTable.getLocalVariableTable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.bcel.classfile.LocalVariableTable
的用法示例。
在下文中一共展示了LocalVariableTable.getLocalVariableTable方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getLocalVariableAtPC
import org.apache.bcel.classfile.LocalVariableTable; //导入方法依赖的package包/类
/**
* returns the local variable at an index int the scope of PC
*
* @param index the variable index
* @param PC the PC where the variable is used
*/
public static LocalVariable getLocalVariableAtPC(LocalVariableTable lvt, int index, int pc) {
int length = lvt.getTableLength();
LocalVariable[] lvs = lvt.getLocalVariableTable();
for(int i = 0; i < length; i++) {
if (lvs[i].getIndex() == index) {
int startPC = lvs[i].getStartPC();
if ((pc >= startPC) && (pc < (startPC + lvs[i].getLength())))
return lvs[i];
}
}
return null;
}
示例2: visitLocalVariableTable
import org.apache.bcel.classfile.LocalVariableTable; //导入方法依赖的package包/类
@Override
public void visitLocalVariableTable(LocalVariableTable obj) {
super.visitLocalVariableTable(obj);
LocalVariable[] local_variable_table = obj.getLocalVariableTable();
for (LocalVariable aLocal_variable_table : local_variable_table)
aLocal_variable_table.accept(this);
}
示例3: getLocalVariableAtPC
import org.apache.bcel.classfile.LocalVariableTable; //导入方法依赖的package包/类
/**
* returns the local variable at an index int the scope of PC
*
* @param lvt
* the local variable table
* @param index
* the variable index
* @param pc
* the PC where the variable is used
*/
public static LocalVariable getLocalVariableAtPC(@Nonnull LocalVariableTable lvt, int index, int pc) {
int length = lvt.getTableLength();
LocalVariable[] lvs = lvt.getLocalVariableTable();
for (int i = 0; i < length; i++) {
if (lvs[i].getIndex() == index) {
int startPC = lvs[i].getStartPC();
if ((pc >= startPC) && (pc < (startPC + lvs[i].getLength())))
return lvs[i];
}
}
return null;
}
示例4: getLocalVariableAnnotation
import org.apache.bcel.classfile.LocalVariableTable; //导入方法依赖的package包/类
public static LocalVariableAnnotation getLocalVariableAnnotation(Method method, int local, int position1, int position2) {
LocalVariableTable localVariableTable = method.getLocalVariableTable();
String localName = "?";
if (localVariableTable != null) {
LocalVariable lv1 = localVariableTable.getLocalVariable(local, position1);
if (lv1 == null) {
lv1 = localVariableTable.getLocalVariable(local, position2);
position1 = position2;
}
if (lv1 != null)
localName = lv1.getName();
else
for (LocalVariable lv : localVariableTable.getLocalVariableTable()) {
if (lv.getIndex() == local) {
if (!localName.equals("?") && !localName.equals(lv.getName())) {
// not a single consistent name
localName = "?";
break;
}
localName = lv.getName();
}
}
}
LineNumberTable lineNumbers = method.getLineNumberTable();
if (lineNumbers == null)
return new LocalVariableAnnotation(localName, local, position1);
int line = lineNumbers.getSourceLine(position1);
return new LocalVariableAnnotation(localName, local, position1, line);
}
示例5: visit
import org.apache.bcel.classfile.LocalVariableTable; //导入方法依赖的package包/类
@Override
public void visit(LocalVariableTable obj) {
if (ENABLE_LOCALS) {
if (staticMethod)
return;
LocalVariable[] vars = obj.getLocalVariableTable();
// System.out.println("Num params = " + numParms);
for (LocalVariable var : vars) {
if (var.getIndex() < numParms)
continue;
String varName = var.getName();
if (varName.equals("serialVersionUID"))
continue;
Field f = classFields.get(varName);
// System.out.println("Checking " + varName);
// System.out.println(" got " + f);
// TODO: we could distinguish between obscuring a field in the
// same class
// vs. obscuring a field in a superclass. Not sure how important
// that is.
if (f != null) {
FieldAnnotation fa = FieldAnnotation.fromBCELField(getDottedClassName(), f);
if (true || var.getStartPC() > 0)
bugReporter.reportBug(new BugInstance(this, "MF_METHOD_MASKS_FIELD", LOW_PRIORITY)
.addClassAndMethod(this).addField(fa).addSourceLine(this, var.getStartPC() - 1));
}
}
}
super.visit(obj);
}