@Override public MethodReference lookupMethod(final int token) { final ConstantPool.Entry entry = _constantPool.getEntry(token); final ConstantPool.ReferenceEntry reference; if (entry instanceof ConstantPool.MethodHandleEntry) { final ConstantPool.MethodHandleEntry methodHandle = (ConstantPool.MethodHandleEntry) entry; reference = _constantPool.getEntry(methodHandle.referenceIndex); } else { reference = (ConstantPool.ReferenceEntry) entry; } return lookupMethod(reference.typeInfoIndex, reference.nameAndTypeDescriptorIndex); }
@Override @SuppressWarnings("unchecked") public <T> T lookupConstant(final int token) { final ConstantPool.Entry entry = _constantPool.get(token); if (entry.getTag() == ConstantPool.Tag.TypeInfo) { return (T) lookupType(token); } return _constantPool.lookupConstant(token); }
NameAndTypeDescriptorEntry getNameAndTypeDescriptor(final String name, final String typeDescriptor) { final Utf8StringConstantEntry utf8Name = getUtf8StringConstant(name); final Utf8StringConstantEntry utf8Descriptor = getUtf8StringConstant(typeDescriptor); _lookupKey.set(Tag.NameAndTypeDescriptor, utf8Name.index, utf8Descriptor.index); Entry entry = _entryMap.get(_lookupKey); if (entry == null) { if (isFrozen()) { return null; } entry = new NameAndTypeDescriptorEntry(this, utf8Name.index, utf8Descriptor.index); } _lookupKey.clear(); return (NameAndTypeDescriptorEntry) entry; }
public InterfaceMethodReferenceEntry getInterfaceMethodReference(final MethodReference method) { final TypeInfoEntry typeInfo = getTypeInfo(method.getDeclaringType()); final NameAndTypeDescriptorEntry nameAndDescriptor = getNameAndTypeDescriptor( method.getName(), method.getErasedSignature() ); _lookupKey.set(Tag.InterfaceMethodReference, typeInfo.index, nameAndDescriptor.index); Entry entry = _entryMap.get(_lookupKey); if (entry == null) { if (isFrozen()) { return null; } entry = new InterfaceMethodReferenceEntry(this, typeInfo.index, nameAndDescriptor.index); } _lookupKey.clear(); return (InterfaceMethodReferenceEntry) entry; }
private static String getInternalNameFromClassFile(final Buffer b) { final long magic = b.readInt() & 0xFFFFFFFFL; if (magic != 0xCAFEBABEL) { throw new IllegalStateException("Bad magic number: 0x" + Long.toHexString(magic)); } b.readUnsignedShort(); // minor version b.readUnsignedShort(); // major version final ConstantPool constantPool = ConstantPool.read(b); b.readUnsignedShort(); // access flags final ConstantPool.TypeInfoEntry thisClass = constantPool.getEntry(b.readUnsignedShort()); b.position(0); return thisClass.getName(); } }
final int majorVersion = b.readUnsignedShort(); final ConstantPool constantPool = ConstantPool.read(b); final ConstantPool.TypeInfoEntry thisClass = (ConstantPool.TypeInfoEntry) constantPool.get(b.readUnsignedShort(), ConstantPool.Tag.TypeInfo); final ConstantPool.TypeInfoEntry baseClass; baseClass = constantPool.getEntry(baseClassToken); interfaces[i] = (ConstantPool.TypeInfoEntry) constantPool.get(b.readUnsignedShort(), ConstantPool.Tag.TypeInfo);
public DoubleConstantEntry getDoubleConstant(final double value) { _lookupKey.set(value); Entry entry = _entryMap.get(_lookupKey); if (entry == null) { if (isFrozen()) { return null; } entry = new DoubleConstantEntry(this, value); } _lookupKey.clear(); return (DoubleConstantEntry) entry; }
public long lookupLongConstant(final int index) { final LongConstantEntry entry = (LongConstantEntry) get(index, Tag.LongConstant); return entry.value; }
public void write(final Buffer stream) { stream.writeShort(_size + 1); accept(new Writer(stream)); }
constantPool = ConstantPool.read(code);
_scope = new Scope(_parser, _typeDefinition, constantPool); _constantPool.freezeIfUnfrozen(); _typeDefinition.setConstantPool(_constantPool);
public static ConstantPool read(final Buffer b) { boolean skipOne = false; final ConstantPool pool = new ConstantPool(); final int size = b.readUnsignedShort(); final Key key = new Key();
public FieldReferenceEntry getFieldReference(final FieldReference field) { final TypeInfoEntry typeInfo = getTypeInfo(field.getDeclaringType()); final NameAndTypeDescriptorEntry nameAndDescriptor = getNameAndTypeDescriptor( field.getName(), field.getErasedSignature() ); _lookupKey.set(Tag.FieldReference, typeInfo.index, nameAndDescriptor.index); Entry entry = _entryMap.get(_lookupKey); if (entry == null) { if (isFrozen()) { return null; } entry = new FieldReferenceEntry(this, typeInfo.index, nameAndDescriptor.index); } _lookupKey.clear(); return (FieldReferenceEntry) entry; }
private static String getInternalNameFromClassFile(final Buffer b) { final long magic = b.readInt() & 0xFFFFFFFFL; if (magic != 0xCAFEBABEL) { throw new IllegalStateException("Bad magic number: 0x" + Long.toHexString(magic)); } b.readUnsignedShort(); // minor version b.readUnsignedShort(); // major version final ConstantPool constantPool = ConstantPool.read(b); b.readUnsignedShort(); // access flags final ConstantPool.TypeInfoEntry thisClass = constantPool.getEntry(b.readUnsignedShort()); b.position(0); return thisClass.getName(); } }
final int majorVersion = b.readUnsignedShort(); final ConstantPool constantPool = ConstantPool.read(b); final ConstantPool.TypeInfoEntry thisClass = (ConstantPool.TypeInfoEntry) constantPool.get(b.readUnsignedShort(), ConstantPool.Tag.TypeInfo); final ConstantPool.TypeInfoEntry baseClass; baseClass = constantPool.getEntry(baseClassToken); interfaces[i] = (ConstantPool.TypeInfoEntry) constantPool.get(b.readUnsignedShort(), ConstantPool.Tag.TypeInfo);
MethodTypeEntry getMethodType(final int descriptorIndex) { _lookupKey.set(Tag.MethodType, descriptorIndex); Entry entry = _entryMap.get(_lookupKey); if (entry == null) { if (isFrozen()) { return null; } entry = new MethodTypeEntry(this, descriptorIndex); } _lookupKey.clear(); return (MethodTypeEntry) entry; }
public float lookupFloatConstant(final int index) { final FloatConstantEntry entry = (FloatConstantEntry) get(index, Tag.FloatConstant); return entry.value; }
public void write(final Buffer stream) { stream.writeShort(_size + 1); accept(new Writer(stream)); }
constantPool = ConstantPool.read(code);
_scope = new Scope(_parser, _typeDefinition, constantPool); _constantPool.freezeIfUnfrozen(); _typeDefinition.setConstantPool(_constantPool);