@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); } }
/** * 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; } }
for (Attribute ca : ((Code) a).getAttributes()) { if (ca.getTag() == org.apache.bcel.Const.ATTR_LOCAL_VARIABLE_TABLE) { for (LocalVariable l : ((LocalVariableTable) ca).getLocalVariableTable()) { printLocal(out, fout, l, v, defs, refs); for (Attribute ca : ((Code) a).getAttributes()) { if (ca.getTag() == org.apache.bcel.Const.ATTR_LOCAL_VARIABLE_TABLE) { locals.add(((LocalVariableTable) ca).getLocalVariableTable());
LocalVariable[] vars = obj.getLocalVariableTable();
@Override public void visitLocalVariableTable(final LocalVariableTable table) { stack.push(table); table.accept(visitor); final LocalVariable[] vars = table.getLocalVariableTable(); for (final LocalVariable var : vars) { var.accept(this); } stack.pop(); }
public void visitLocalVariableTable(LocalVariableTable table) { stack.push(table); table.accept(visitor); LocalVariable[] vars = table.getLocalVariableTable(); for(int i=0; i < vars.length; i++) vars[i].accept(this); stack.pop(); }
@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); } }
/** * Initialize from another object. Note that both objects use the same * references (shallow copy). Use copy() for a physical copy. */ public LocalVariableTable(final LocalVariableTable c) { this(c.getNameIndex(), c.getLength(), c.getLocalVariableTable(), c.getConstantPool()); }
/** * Initialize from another object. Note that both objects use the same * references (shallow copy). Use copy() for a physical copy. */ public LocalVariableTable(LocalVariableTable c) { this(c.getNameIndex(), c.getLength(), c.getLocalVariableTable(), c.getConstantPool()); }
/** * 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; } }
LocalVariable[] lv=lvt.getLocalVariableTable(); for(LocalVariable l : lv)
private void adjustLocalVariableTypeTable(final LocalVariableTable lvt) { final LocalVariable[] lv = lvt.getLocalVariableTable(); final LocalVariable[] lvg = local_variable_type_table.getLocalVariableTypeTable(); for (final LocalVariable element : lvg) { for (final LocalVariable l : lv) { if (element.getName().equals(l.getName()) && element.getIndex() == l.getOrigIndex()) { element.setLength(l.getLength()); element.setStartPC(l.getStartPC()); element.setIndex(l.getIndex()); break; } } } }
public static String getLocalVariableName(Method method, int slot, int pc) { if (method.getLocalVariableTable() != null) { LocalVariable[] table= method.getLocalVariableTable().getLocalVariableTable(); LocalVariable lvar= null; for (int i= 0; i < table.length; i++) { lvar= table[i]; if (lvar.getIndex() == slot && lvar.getStartPC() <= pc && pc <= lvar.getStartPC() + lvar.getLength()) { String name2= lvar.getName(); if (name2.equals("in")) name2= "in_"; if (isSuperpositionDetected(table, lvar)) throw new UnhandledCompilerProblemException(); return name2; } } } return "l" + slot; }
localName = lv1.getName(); } else { for (LocalVariable lv : localVariableTable.getLocalVariableTable()) { if (lv.getIndex() == local) { if (!"?".equals(localName) && !localName.equals(lv.getName())) {
LocalVariable[] vars = obj.getLocalVariableTable();
LocalVariableTable lvt = obj.getLocalVariableTable(); if (lvt != null) { LocalVariable[] lvs = lvt.getLocalVariableTable(); if (lvs != null) { for (LocalVariable lv : lvs) {
LocalVariableTable lvt = obj.getLocalVariableTable(); if (lvt != null) { LocalVariable[] lvs = lvt.getLocalVariableTable(); if (lvs != null) { for (LocalVariable lv : lvs) {
/** * overrides the visitor to look for local variables where the name has 'Map', 'Set', 'List' in it but the type of that field isn't that. note that this * only is useful if compiled with debug labels. * * @param obj * the currently parsed method */ @Override public void visitMethod(Method obj) { LocalVariableTable lvt = obj.getLocalVariableTable(); if (lvt != null) { LocalVariable[] lvs = lvt.getLocalVariableTable(); for (LocalVariable lv : lvs) { if (checkConfusedName(lv.getName(), lv.getSignature())) { bugReporter.reportBug(new BugInstance(this, BugType.CNC_COLLECTION_NAMING_CONFUSION.name(), NORMAL_PRIORITY).addClass(this) .addString(lv.getName()).addSourceLine(this.clsContext, this, lv.getStartPC())); } } } }
/** * overrides the visitor to look for local variables where the name has 'Map', 'Set', 'List' in it but the type of that field isn't that. note that this * only is useful if compiled with debug labels. * * @param obj * the currently parsed method */ @Override public void visitMethod(Method obj) { LocalVariableTable lvt = obj.getLocalVariableTable(); if (lvt != null) { LocalVariable[] lvs = lvt.getLocalVariableTable(); for (LocalVariable lv : lvs) { if (checkConfusedName(lv.getName(), lv.getSignature())) { bugReporter.reportBug(new BugInstance(this, BugType.CNC_COLLECTION_NAMING_CONFUSION.name(), NORMAL_PRIORITY).addClass(this) .addString(lv.getName()).addSourceLine(this.clsContext, this, lv.getStartPC())); } } } }
private void updateLocalVariableTable(final LocalVariableTable a) { final LocalVariable[] lv = a.getLocalVariableTable(); removeLocalVariables(); for (final LocalVariable l : lv) { InstructionHandle start = il.findHandle(l.getStartPC()); final InstructionHandle end = il.findHandle(l.getStartPC() + l.getLength()); // Repair malformed handles if (null == start) { start = il.getStart(); } // end == null => live to end of method // Since we are recreating the LocalVaraible, we must // propagate the orig_index to new copy. addLocalVariable(l.getName(), Type.getType(l.getSignature()), l .getIndex(), start, end, l.getOrigIndex()); } }