• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java LocalVariableTable类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



LocalVariableTable类属于org.apache.bcel.classfile包,在下文中一共展示了LocalVariableTable类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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;
}
 
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:21,代码来源:LVTHelper.java


示例2: pushByLocalObjectLoad

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
private void pushByLocalObjectLoad(DismantleBytecode dbc, int register) {
Method m = dbc.getMethod();
LocalVariableTable lvt = m.getLocalVariableTable();
if (lvt != null) {
	LocalVariable lv = LVTHelper.getLocalVariableAtPC(lvt, register, dbc.getPC());
	if (lv != null) {
		String signature = lv.getSignature();
		pushByLocalLoad(signature, register);
		return;
	}
}
pushBySignature("");
}
 
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:14,代码来源:OpcodeStack.java


示例3: visitLocalVariableTable

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
 * @see org.apache.bcel.classfile.Visitor
 */
public void visitLocalVariableTable(LocalVariableTable aTable)
{
    for (Iterator iter = mVisitors.iterator(); iter.hasNext();) {
        IDeepVisitor visitor = (IDeepVisitor) iter.next();
        Visitor v = visitor.getClassFileVisitor();
        aTable.accept(v);
    }
}
 
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:12,代码来源:VisitorSet.java


示例4: getLocalTable

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
private static LocalVariableTable getLocalTable(Method m) {
LocalVariableTable lt = m.getLocalVariableTable();

if (lt == null) {
    System.err.println("Could not get local variable table, did you "
	    + "compile with the '-g' option?");
    System.exit(1);
}

return lt;
   }
 
开发者ID:pieterhijma,项目名称:cashmere,代码行数:12,代码来源:MethodTable.java


示例5: 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);
}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:8,代码来源:PreorderVisitor.java


示例6: 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;
}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:25,代码来源:LVTHelper.java


示例7: 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);
    }
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:31,代码来源:LocalVariableAnnotation.java


示例8: checkLocalVariableName

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
 * Get the name of given local variable (if possible) and store it in the
 * HeuristicPropertySet.
 * 
 * @param lvt
 *            the LocalVariableTable
 * @param local
 *            index of the local
 * @param pc
 *            program counter value of the instruction
 */
private void checkLocalVariableName(LocalVariableTable lvt, int local, int pc,
        WarningPropertySet<DeadLocalStoreProperty> propertySet) {
    if (lvt != null) {
        LocalVariable lv = lvt.getLocalVariable(local, pc);
        if (lv != null) {
            String localName = lv.getName();
            propertySet.setProperty(DeadLocalStoreProperty.LOCAL_NAME, localName);
        }
    }

}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:23,代码来源:FindDeadLocalStores.java


示例9: visit

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
@Override
public void visit(Code obj) {

    if (!getMethod().isPublic() && !getMethod().isProtected())
        return;
    SignatureParser p = new SignatureParser(getMethodSig());
    LocalVariableTable t = obj.getLocalVariableTable();

    if (t == null)
        return;
    ParameterProperty property = new ParameterProperty();

    int index = getMethod().isStatic() ? 0 : 1;
    int parameterNumber = 0;
    for (Iterator<String> i = p.parameterSignatureIterator(); i.hasNext();) {
        String s = i.next();
        LocalVariable localVariable = t.getLocalVariable(index, 0);
        if (localVariable != null) {
            String name = localVariable.getName();
            if (s.equals("J") && (name.toLowerCase().indexOf("instant") >= 0 || name.startsWith("date"))) {

                // System.out.println(getFullyQualifiedMethodName() + " " + s + " " + index + " " + name);
                property.setParamWithProperty(parameterNumber, true);
            }
        }
        if (s.equals("J") || s.equals("D"))
            index += 2;
        else
            index += 1;
        parameterNumber++;
    }
    if (!property.isEmpty()) {
        // System.out.println(getFullyQualifiedMethodName() + " " + property);
        database.setProperty(getMethodDescriptor(), property);
    }
}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:37,代码来源:TrainLongInstantfParams.java


示例10: 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);
}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:32,代码来源:FindMaskedFields.java


示例11: pushByLocalObjectLoad

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
private void pushByLocalObjectLoad(DismantleBytecode dbc, int register) {
    Method m = dbc.getMethod();
    LocalVariableTable lvt = m.getLocalVariableTable();
    if (lvt != null) {
        LocalVariable lv = LVTHelper.getLocalVariableAtPC(lvt, register, dbc.getPC());
        if (lv != null) {
            String signature = lv.getSignature();
            pushByLocalLoad(signature, register);
            return;
        }
    }
    pushByLocalLoad("Ljava/lang/Object;", register);
}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:14,代码来源:OpcodeStack.java


示例12: checkLocalVariableName

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
 * Get the name of given local variable (if possible) and store it in the
 * HeuristicPropertySet.
 *
 * @param lvt
 *            the LocalVariableTable
 * @param local
 *            index of the local
 * @param pc
 *            program counter value of the instruction
 */
private void checkLocalVariableName(LocalVariableTable lvt, int local, int pc,
        WarningPropertySet<DeadLocalStoreProperty> propertySet) {
    if (lvt != null) {
        LocalVariable lv = lvt.getLocalVariable(local, pc);
        if (lv != null) {
            String localName = lv.getName();
            propertySet.setProperty(DeadLocalStoreProperty.LOCAL_NAME, localName);
        }
    }

}
 
开发者ID:OpenNTF,项目名称:FindBug-for-Domino-Designer,代码行数:23,代码来源:FindDeadLocalStores.java


示例13: getLocalVariableTable

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
 * @return `LocalVariableTable' attribute of all the local variables of this method.
 */
public LocalVariableTable getLocalVariableTable( ConstantPoolGen cp ) {
    LocalVariableGen[] lg = getLocalVariables();
    int size = lg.length;
    LocalVariable[] lv = new LocalVariable[size];
    for (int i = 0; i < size; i++) {
        lv[i] = lg[i].getLocalVariable(cp);
    }
    return new LocalVariableTable(cp.addUtf8("LocalVariableTable"), 2 + lv.length * 10, lv, cp
            .getConstantPool());
}
 
开发者ID:Hu6,项目名称:VestaClient,代码行数:14,代码来源:MethodGen.java


示例14: visit

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visit(LocalVariableTable obj) {
    visit((Attribute) obj);
}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:4,代码来源:BetterVisitor.java


示例15: visitLocalVariableTable

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable obj) {
    visit(obj);
}
 
开发者ID:ytus,项目名称:findbugs-all-the-bugs,代码行数:4,代码来源:BetterVisitor.java


示例16: getMethod

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
/**
 * Get method object. Never forget to call setMaxStack() or setMaxStack(max), respectively,
 * before calling this method (the same applies for max locals).
 *
 * @return method object
 */
public Method getMethod() {
    String signature = getSignature();
    int name_index = cp.addUtf8(name);
    int signature_index = cp.addUtf8(signature);
    /* Also updates positions of instructions, i.e., their indices
     */
    byte[] byte_code = null;
    if (il != null) {
        byte_code = il.getByteCode();
    }
    LineNumberTable lnt = null;
    LocalVariableTable lvt = null;
    /* Create LocalVariableTable and LineNumberTable attributes (for debuggers, e.g.)
     */
    if ((variable_vec.size() > 0) && !strip_attributes) {
        addCodeAttribute(lvt = getLocalVariableTable(cp));
    }
    if ((line_number_vec.size() > 0) && !strip_attributes) {
        addCodeAttribute(lnt = getLineNumberTable(cp));
    }
    Attribute[] code_attrs = getCodeAttributes();
    /* Each attribute causes 6 additional header bytes
     */
    int attrs_len = 0;
    for (int i = 0; i < code_attrs.length; i++) {
        attrs_len += (code_attrs[i].getLength() + 6);
    }
    CodeException[] c_exc = getCodeExceptions();
    int exc_len = c_exc.length * 8; // Every entry takes 8 bytes
    Code code = null;
    if ((il != null) && !isAbstract() && !isNative()) {
        // Remove any stale code attribute
        Attribute[] attributes = getAttributes();
        for (int i = 0; i < attributes.length; i++) {
            Attribute a = attributes[i];
            if (a instanceof Code) {
                removeAttribute(a);
            }
        }
        code = new Code(cp.addUtf8("Code"), 8 + byte_code.length + // prologue byte code
                2 + exc_len + // exceptions
                2 + attrs_len, // attributes
                max_stack, max_locals, byte_code, c_exc, code_attrs, cp.getConstantPool());
        addAttribute(code);
    }
    ExceptionTable et = null;
    if (throws_vec.size() > 0) {
        addAttribute(et = getExceptionTable(cp));
        // Add `Exceptions' if there are "throws" clauses
    }
    Method m = new Method(access_flags, name_index, signature_index, getAttributes(), cp
            .getConstantPool());
    // Undo effects of adding attributes
    if (lvt != null) {
        removeCodeAttribute(lvt);
    }
    if (lnt != null) {
        removeCodeAttribute(lnt);
    }
    if (code != null) {
        removeAttribute(code);
    }
    if (et != null) {
        removeAttribute(et);
    }
    return m;
}
 
开发者ID:Hu6,项目名称:VestaClient,代码行数:74,代码来源:MethodGen.java


示例17: visitLocalVariableTable

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable obj){//vmspec2 4.7.9
	//In JustIce,this check is partially delayed to Pass 3a.
	//The other part can be found in the visitCode(Code) method.
}
 
开发者ID:Hu6,项目名称:VestaClient,代码行数:5,代码来源:Pass2Verifier.java


示例18: visitLocalVariableTable

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable obj) {
    tostring = "<LocalVariableTable: " + toString(obj) + ">";
}
 
开发者ID:Hu6,项目名称:VestaClient,代码行数:4,代码来源:StringRepresentation.java


示例19: visitLocalVariableTable

import org.apache.bcel.classfile.LocalVariableTable; //导入依赖的package包/类
public void visitLocalVariableTable(LocalVariableTable aTable)
{

  
}
 
开发者ID:parabuild-ci,项目名称:parabuild-ci,代码行数:6,代码来源:UnreadVariableCheck.java



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java ByteArrayDataSource类代码示例发布时间:2022-05-22
下一篇:
Java XSComponent类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap