package week567_miniJVM.attr; import week567_miniJVM.clz.ClassFile; import week567_miniJVM.constant.ConstantPool; import week567_miniJVM.loader.ByteCodeIterator; public class CodeAttr extends AttributeInfo { private int maxStack ; private int maxLocals ; private int codeLen ; private String code; public String getCode() { return code; } public CodeAttr(int attrNameIndex, int attrLen, int maxStack, int maxLocals, int codeLen,String code /*ByteCodeCommand[] cmds*/) { super(attrNameIndex, attrLen,AttributeInfo.CODE); this.maxStack = maxStack; this.maxLocals = maxLocals; this.codeLen = codeLen; this.code = code; } public LineNumberTable getLineNumberTable() { for(int i=0;i<attrs.size();i++){ if(attrs.get(i).getAttrName().equals(AttributeInfo.LINE_NUM_TABLE)){ return (LineNumberTable)(attrs.get(i)); } } return null; } public LocalVariableTable getLocalVariableTable() { for(int i=0;i<attrs.size();i++){ if(attrs.get(i).getAttrName().equals(AttributeInfo.LOCAL_VAR_TABLE)){ return (LocalVariableTable)(attrs.get(i)); } } return null; } public StackMapTable getStackMapTable() { for(int i=0;i<attrs.size();i++){ if(attrs.get(i).getAttrName().equals(AttributeInfo.STACK_MAP_TABLE)){ return (StackMapTable)(attrs.get(i)); } } return null; } }