@Override public DynamicCallSite lookupDynamicCallSite(final int token) { final ConstantPool.InvokeDynamicInfoEntry entry = _constantPool.getEntry(token); final BootstrapMethodsAttribute attribute = SourceAttribute.find(AttributeNames.BootstrapMethods, _typeDefinition.getSourceAttributes()); final BootstrapMethodsTableEntry bootstrapMethod = attribute.getBootstrapMethods() .get(entry.bootstrapMethodAttributeIndex); final ConstantPool.NameAndTypeDescriptorEntry nameAndType = _constantPool.getEntry(entry.nameAndTypeDescriptorIndex); return new DynamicCallSite( entry.bootstrapMethodAttributeIndex, bootstrapMethod.getMethodHandle(), bootstrapMethod.getArguments(), nameAndType.getName(), _parser.parseMethodSignature(nameAndType.getType()) ); }
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 NameAndTypeDescriptorEntry(final ConstantPool owner, final int nameIndex, final int typeDescriptorIndex) { super(owner); this.nameIndex = nameIndex; this.typeDescriptorIndex = typeDescriptorIndex; owner._newKey.set(getTag(), nameIndex, typeDescriptorIndex); owner._entryMap.put(owner._newKey.clone(), this); owner._newKey.clear(); }
break; case NameAndTypeDescriptor: new NameAndTypeDescriptorEntry(pool, b.readUnsignedShort(), b.readUnsignedShort()); break; case MethodHandle:
break; case NameAndTypeDescriptor: new NameAndTypeDescriptorEntry(pool, b.readUnsignedShort(), b.readUnsignedShort()); break; case MethodHandle:
break; case NameAndTypeDescriptor: new NameAndTypeDescriptorEntry(pool, b.readUnsignedShort(), b.readUnsignedShort()); break; case MethodHandle:
@Override public void visitMethodHandle(final ConstantPool.MethodHandleEntry info) { final ConstantPool.ReferenceEntry reference = info.getReference(); final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = reference.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeLiteral(info.referenceKind); _output.write(' '); _output.writeDelimiter("#"); _output.writeLiteral(reference.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(reference.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (28 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(reference.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitMethodHandle(final ConstantPool.MethodHandleEntry info) { final ConstantPool.ReferenceEntry reference = info.getReference(); final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = reference.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeLiteral(info.referenceKind); _output.write(' '); _output.writeDelimiter("#"); _output.writeLiteral(reference.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(reference.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (28 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(reference.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitFieldReference(final ConstantPool.FieldReferenceEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(info.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitFieldReference(final ConstantPool.FieldReferenceEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(info.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitMethodHandle(final ConstantPool.MethodHandleEntry info) { final ConstantPool.ReferenceEntry reference = info.getReference(); final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = reference.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeLiteral(info.referenceKind); _output.write(' '); _output.writeDelimiter("#"); _output.writeLiteral(reference.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(reference.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (28 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(reference.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitMethodReference(final ConstantPool.MethodReferenceEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(info.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitInterfaceMethodReference(final ConstantPool.InterfaceMethodReferenceEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(info.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitFieldReference(final ConstantPool.FieldReferenceEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(info.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitNameAndTypeDescriptor(final ConstantPool.NameAndTypeDescriptorEntry info) { final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.nameIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.typeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s:%2$s", StringUtilities.escape(info.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(info.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitInvokeDynamicInfo(final ConstantPool.InvokeDynamicInfoEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeDescriptor(); final int startColumn = _output.getColumn(); _output.writeLiteral(info.bootstrapMethodAttributeIndex); _output.writeDelimiter(", "); _output.writeDelimiter("#"); _output.writeLiteral(nameAndTypeInfo.nameIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(nameAndTypeInfo.typeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s:%2$s", StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitInvokeDynamicInfo(final ConstantPool.InvokeDynamicInfoEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeDescriptor(); final int startColumn = _output.getColumn(); _output.writeLiteral(info.bootstrapMethodAttributeIndex); _output.writeDelimiter(", "); _output.writeDelimiter("#"); _output.writeLiteral(nameAndTypeInfo.nameIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(nameAndTypeInfo.typeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s:%2$s", StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitMethodReference(final ConstantPool.MethodReferenceEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(info.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitInvokeDynamicInfo(final ConstantPool.InvokeDynamicInfoEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeDescriptor(); final int startColumn = _output.getColumn(); _output.writeLiteral(info.bootstrapMethodAttributeIndex); _output.writeDelimiter(", "); _output.writeDelimiter("#"); _output.writeLiteral(nameAndTypeInfo.nameIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(nameAndTypeInfo.typeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s:%2$s", StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }
@Override public void visitInterfaceMethodReference(final ConstantPool.InterfaceMethodReferenceEntry info) { final ConstantPool.NameAndTypeDescriptorEntry nameAndTypeInfo = info.getNameAndTypeInfo(); final int startColumn = _output.getColumn(); _output.writeDelimiter("#"); _output.writeLiteral(info.typeInfoIndex); _output.writeDelimiter("."); _output.writeDelimiter("#"); _output.writeLiteral(info.nameAndTypeDescriptorIndex); final int endColumn = _output.getColumn(); final int padding = (14 - (endColumn - startColumn)); final String paddingText = padding > 0 ? StringUtilities.repeat(' ', padding) : ""; _output.writeComment( format( paddingText + " // %1$s.%2$s:%3$s", StringUtilities.escape(info.getClassName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getName(), false, _settings.isUnicodeOutputEnabled()), StringUtilities.escape(nameAndTypeInfo.getType(), false, _settings.isUnicodeOutputEnabled()) ) ); }