private void visitEnclosingMethod(BuilderEncodedValues.BuilderMethodEncodedValue value, ClassWriter classWriter) { BuilderMethodReference methodRef = value.getValue(); String owner = stripName(methodRef.getDefiningClass()); String name = methodRef.getName(); String descriptor = ReferenceUtil.getMethodDescriptor(methodRef).split("->")[1]; String desc = descriptor.substring(descriptor.indexOf('(')); classWriter.visitOuterClass(owner, name, desc); }
@Nonnull public BuilderMethodReference internMethod(@Nonnull MethodReference methodReference) { BuilderMethodReference ret = internedItems.get(methodReference); if (ret != null) { return ret; } BuilderMethodReference dexPoolMethodReference = new BuilderMethodReference( dexBuilder.typeSection.internType(methodReference.getDefiningClass()), dexBuilder.stringSection.internString(methodReference.getName()), dexBuilder.protoSection.internMethodProto(methodReference)); ret = internedItems.putIfAbsent(dexPoolMethodReference, dexPoolMethodReference); return ret==null?dexPoolMethodReference:ret; }
@Nonnull public BuilderMethodReference internMethod(@Nonnull MethodReference methodReference) { BuilderMethodReference ret = internedItems.get(methodReference); if (ret != null) { return ret; } BuilderMethodReference dexPoolMethodReference = new BuilderMethodReference( context.typePool.internType(methodReference.getDefiningClass()), context.stringPool.internString(methodReference.getName()), context.protoPool.internProto(methodReference)); ret = internedItems.putIfAbsent(dexPoolMethodReference, dexPoolMethodReference); return ret==null?dexPoolMethodReference:ret; }
@Nonnull public BuilderMethodReference internMethod(@Nonnull MethodReference methodReference) { BuilderMethodReference ret = internedItems.get(methodReference); if (ret != null) { return ret; } BuilderMethodReference dexPoolMethodReference = new BuilderMethodReference( dexBuilder.typeSection.internType(methodReference.getDefiningClass()), dexBuilder.stringSection.internString(methodReference.getName()), dexBuilder.protoSection.internMethodProto(methodReference)); ret = internedItems.putIfAbsent(dexPoolMethodReference, dexPoolMethodReference); return ret==null?dexPoolMethodReference:ret; }