EnclosingMethodAttribute(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException { super(classFileBytes, constantPool, offset); int index = u2At(classFileBytes, 6, offset); this.enclosingClassIndex = index; IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(index); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.enclosingClassName = constantPoolEntry.getClassInfoName(); this.methodNameAndTypeIndex = u2At(classFileBytes, 8, offset); if (this.methodNameAndTypeIndex != 0) { constantPoolEntry = constantPool.decodeEntry(this.methodNameAndTypeIndex); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_NameAndType) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.methodDescriptorIndex = constantPoolEntry.getNameAndTypeInfoDescriptorIndex(); this.methodNameIndex = constantPoolEntry.getNameAndTypeInfoNameIndex(); constantPoolEntry = constantPool.decodeEntry(this.methodDescriptorIndex); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Utf8) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.methodDescriptor = constantPoolEntry.getUtf8Value(); constantPoolEntry = constantPool.decodeEntry(this.methodNameIndex); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Utf8) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.methodName = constantPoolEntry.getUtf8Value(); } } /* (non-Javadoc)
private String[] methodDescription(IConstantPoolEntry constantPoolEntry) { return new String[] { new String(constantPoolEntry.getClassName()), new String(constantPoolEntry.getMethodName()), new String(constantPoolEntry.getMethodDescriptor())}; }
/** * @see IBytecodeVisitor#_ldc2_w(int, int, IConstantPoolEntry) */ public void _ldc2_w(int pc, int index, IConstantPoolEntry constantPoolEntry) { dumpPcNumber(pc); switch (constantPoolEntry.getKind()) { case IConstantPoolConstant.CONSTANT_Long : this.buffer.append(Messages.bind(Messages.classformat_ldc2_w_long, new String[] { OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC2_W], Integer.toString(index), Long.toString(constantPoolEntry.getLongValue()) })); break; case IConstantPoolConstant.CONSTANT_Double : this.buffer.append(Messages.bind(Messages.classformat_ldc2_w_double, new String[] { OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC2_W], Integer.toString(index), Double.toString(constantPoolEntry.getDoubleValue()) })); } writeNewLine(); }
private StringBuffer appendConstantDynamic(StringBuffer s, String messageKind, int opcode, int index, IConstantPoolEntry entry) { return s.append(Messages.bind(messageKind, new String[] { OpcodeStringValues.BYTECODE_NAMES[opcode], Integer.toString(index), Integer.toString(((IConstantPoolEntry2) entry).getBootstrapMethodAttributeIndex()), new String(entry.getFieldName()), returnClassName(Signature.toCharArray(entry.getFieldDescriptor())) })); } /**
public NestHostAttribute(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException { super(classFileBytes, constantPool, offset); int index = u2At(classFileBytes, 6, offset); this.hostIndex = index; IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(index); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.hostName = constantPoolEntry.getClassInfoName(); }
new String[] { Integer.toString(i), Integer.toString(constantPoolEntry.getClassInfoNameIndex()), new String(constantPoolEntry.getClassInfoName())})); break; case IConstantPoolConstant.CONSTANT_Double : new String[] { Integer.toString(i), Double.toString(constantPoolEntry.getDoubleValue())})); break; case IConstantPoolConstant.CONSTANT_Fieldref : new String[] { Integer.toString(i), Integer.toString(constantPoolEntry.getClassIndex()), Integer.toString(constantPoolEntry.getNameAndTypeIndex()), new String(constantPoolEntry.getClassName()), new String(constantPoolEntry.getFieldName()), new String(constantPoolEntry.getFieldDescriptor()) })); break; new String[] { Integer.toString(i), Float.toString(constantPoolEntry.getFloatValue())})); break; case IConstantPoolConstant.CONSTANT_Integer :
IConstantPoolEntry constantPoolEntry = annotationComponentValue.getConstantValue(); String value = null; switch(constantPoolEntry.getKind()) { case IConstantPoolConstant.CONSTANT_Long : value = constantPoolEntry.getLongValue() + "L"; //$NON-NLS-1$ break; case IConstantPoolConstant.CONSTANT_Float : value = constantPoolEntry.getFloatValue() + "f"; //$NON-NLS-1$ break; case IConstantPoolConstant.CONSTANT_Double : value = Double.toString(constantPoolEntry.getDoubleValue()); break; case IConstantPoolConstant.CONSTANT_Integer: case IAnnotationComponentValue.CHAR_TAG : temp.append('\''); escapeChar(temp, (char) constantPoolEntry.getIntegerValue()); temp.append('\''); break; case IAnnotationComponentValue.BOOLEAN_TAG : temp.append(constantPoolEntry.getIntegerValue() == 1 ? "true" : "false");//$NON-NLS-1$//$NON-NLS-2$ break; case IAnnotationComponentValue.BYTE_TAG : temp.append("(byte) ").append(constantPoolEntry.getIntegerValue()); //$NON-NLS-1$ break; case IAnnotationComponentValue.SHORT_TAG : temp.append("(short) ").append(constantPoolEntry.getIntegerValue()); //$NON-NLS-1$ break; case IAnnotationComponentValue.INTEGER_TAG :
switch (constantPoolEntry.getKind()) { case IConstantPoolConstant.CONSTANT_Float : this.buffer.append(Messages.bind(Messages.classformat_ldc_w_float, new String[] { OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC_W], Integer.toString(index), Float.toString(constantPoolEntry.getFloatValue()) })); break; OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC_W], Integer.toString(index), Integer.toString(constantPoolEntry.getIntegerValue()) })); break; OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC_W], Integer.toString(index), Disassembler.escapeString(constantPoolEntry.getStringValue()) })); break;
SignatureAttribute(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException { super(classFileBytes, constantPool, offset); final int index = u2At(classFileBytes, 6, offset); this.signatureIndex = index; IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(index); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Utf8) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.signature = constantPoolEntry.getUtf8Value(); }
String className = new String(entry.getClassInfoName()).replace('/', '.'); className = className.indexOf(';') >= 0 ? extractFullyQualifiedTopLevelType(className) : className; packages.add(getPackage(className)); int descIndex = entry.getNameAndTypeInfoDescriptorIndex(); if (pool.getEntryKind(descIndex) == IConstantPoolConstant.CONSTANT_Utf8) { entry = pool.decodeEntry(descIndex); char[] type = entry.getUtf8Value(); if (type[0] == '(') {
private String returnConstantClassName(IConstantPoolEntry constantClass) { char[] className = constantClass.getClassInfoName(); if (className.length == 0) { return EMPTY_CLASS_NAME; } switch(className[0]) { case '[' : StringBuffer classNameBuffer = new StringBuffer(); Util.appendTypeSignature(className, 0, classNameBuffer, isCompact()); return classNameBuffer.toString(); default: return returnClassName(className); } } private String returnClassName(char[] classInfoName) {
private String returnDeclaringClassName(IConstantPoolEntry constantRef) { final char[] className = constantRef.getClassName(); return returnClassName(className); }
new String[] { Integer.toString(i), Integer.toString(constantPoolEntry.getClassInfoNameIndex()), new String(constantPoolEntry.getClassInfoName())})); break; case IConstantPoolConstant.CONSTANT_Double : new String[] { Integer.toString(i), Double.toString(constantPoolEntry.getDoubleValue())})); break; case IConstantPoolConstant.CONSTANT_Fieldref : new String[] { Integer.toString(i), Integer.toString(constantPoolEntry.getClassIndex()), Integer.toString(constantPoolEntry.getNameAndTypeIndex()), new String(constantPoolEntry.getClassName()), new String(constantPoolEntry.getFieldName()), new String(constantPoolEntry.getFieldDescriptor()) })); break; new String[] { Integer.toString(i), Float.toString(constantPoolEntry.getFloatValue())})); break; case IConstantPoolConstant.CONSTANT_Integer :
IConstantPoolEntry constantPoolEntry = annotationComponentValue.getConstantValue(); String value = null; switch(constantPoolEntry.getKind()) { case IConstantPoolConstant.CONSTANT_Long : value = constantPoolEntry.getLongValue() + "L"; //$NON-NLS-1$ break; case IConstantPoolConstant.CONSTANT_Float : value = constantPoolEntry.getFloatValue() + "f"; //$NON-NLS-1$ break; case IConstantPoolConstant.CONSTANT_Double : value = Double.toString(constantPoolEntry.getDoubleValue()); break; case IConstantPoolConstant.CONSTANT_Integer: case IAnnotationComponentValue.CHAR_TAG : temp.append('\''); escapeChar(temp, (char) constantPoolEntry.getIntegerValue()); temp.append('\''); break; case IAnnotationComponentValue.BOOLEAN_TAG : temp.append(constantPoolEntry.getIntegerValue() == 1 ? "true" : "false");//$NON-NLS-1$//$NON-NLS-2$ break; case IAnnotationComponentValue.BYTE_TAG : temp.append("(byte) ").append(constantPoolEntry.getIntegerValue()); //$NON-NLS-1$ break; case IAnnotationComponentValue.SHORT_TAG : temp.append("(short) ").append(constantPoolEntry.getIntegerValue()); //$NON-NLS-1$ break; case IAnnotationComponentValue.INTEGER_TAG :
switch (constantPoolEntry.getKind()) { case IConstantPoolConstant.CONSTANT_Float : this.buffer.append(Messages.bind(Messages.classformat_ldc_w_float, new String[] { OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC_W], Integer.toString(index), Float.toString(constantPoolEntry.getFloatValue()) })); break; OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC_W], Integer.toString(index), Integer.toString(constantPoolEntry.getIntegerValue()) })); break; OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.LDC_W], Integer.toString(index), Disassembler.escapeString(constantPoolEntry.getStringValue()) })); break;
SignatureAttribute(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException { super(classFileBytes, constantPool, offset); final int index = u2At(classFileBytes, 6, offset); this.signatureIndex = index; IConstantPoolEntry constantPoolEntry = constantPool.decodeEntry(index); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Utf8) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.signature = constantPoolEntry.getUtf8Value(); } /* (non-Javadoc)
/** * @see IBytecodeVisitor#_getfield(int, int, IConstantPoolEntry) */ public void _getfield(int pc, int index, IConstantPoolEntry constantFieldref) { dumpPcNumber(pc); this.buffer.append(Messages.bind(Messages.classformat_getfield, new String[] { OpcodeStringValues.BYTECODE_NAMES[IOpcodeMnemonics.GETFIELD], Integer.toString(index), returnDeclaringClassName(constantFieldref), new String(constantFieldref.getFieldName()), returnClassName(Signature.toCharArray(constantFieldref.getFieldDescriptor())) })); writeNewLine(); }
public NestMembersAttributeEntry(byte[] classFileBytes, IConstantPool constantPool, int offset) throws ClassFormatException { this.memberClassNameIndex = u2At(classFileBytes, 0, offset); if (this.memberClassNameIndex != 0) { IConstantPoolEntry constantPoolEntry; constantPoolEntry = constantPool.decodeEntry(this.memberClassNameIndex); if (constantPoolEntry.getKind() != IConstantPoolConstant.CONSTANT_Class) { throw new ClassFormatException(ClassFormatException.INVALID_CONSTANT_POOL_ENTRY); } this.memberClassName = constantPoolEntry.getClassInfoName(); } }
private String returnConstantClassName(IConstantPoolEntry constantClass) { char[] className = constantClass.getClassInfoName(); if (className.length == 0) { return EMPTY_CLASS_NAME; } switch(className[0]) { case '[' : StringBuffer classNameBuffer = new StringBuffer(); Util.appendTypeSignature(className, 0, classNameBuffer, isCompact()); return classNameBuffer.toString(); default: return returnClassName(className); } } private String returnClassName(char[] classInfoName) {
new String[] { Integer.toString(i), Integer.toString(constantPoolEntry.getClassInfoNameIndex()), new String(constantPoolEntry.getClassInfoName())})); break; case IConstantPoolConstant.CONSTANT_Double : new String[] { Integer.toString(i), Double.toString(constantPoolEntry.getDoubleValue())})); break; case IConstantPoolConstant.CONSTANT_Fieldref : new String[] { Integer.toString(i), Integer.toString(constantPoolEntry.getClassIndex()), Integer.toString(constantPoolEntry.getNameAndTypeIndex()), new String(constantPoolEntry.getClassName()), new String(constantPoolEntry.getFieldName()), new String(constantPoolEntry.getFieldDescriptor()) })); break; new String[] { Integer.toString(i), Float.toString(constantPoolEntry.getFloatValue())})); break; case IConstantPoolConstant.CONSTANT_Integer :