@Override public boolean apply(Field input) { EncodedValue encodedValue = input.getInitialValue(); return encodedValue != null && !EncodedValueUtils.isDefaultValue(encodedValue); } };
private static void writeArray(Writer writer, ArrayEncodedValue array) throws IOException { writer.write("Array["); boolean first = true; for (EncodedValue element: array.getValue()) { if (first) { first = false; } else { writer.write(", "); } writeEncodedValue(writer, element); } writer.write(']'); }
break; case ValueType.ANNOTATION: writeAnnotation(writer, (AnnotationEncodedValue)encodedValue); break; case ValueType.ARRAY: writeArray(writer, (ArrayEncodedValue)encodedValue); break; case ValueType.STRING:
break; case ValueType.ANNOTATION: writeAnnotation(writer, (AnnotationEncodedValue)encodedValue); break; case ValueType.ARRAY: writeArray(writer, (ArrayEncodedValue)encodedValue); break; case ValueType.STRING:
@Override public boolean apply(Field input) { EncodedValue encodedValue = input.getInitialValue(); return encodedValue != null && !EncodedValueUtils.isDefaultValue(encodedValue); } };
private static void writeArray(Writer writer, ArrayEncodedValue array) throws IOException { writer.write("Array["); boolean first = true; for (EncodedValue element: array.getValue()) { if (first) { first = false; } else { writer.write(", "); } writeEncodedValue(writer, element); } writer.write(']'); }
AccessFlags.FINAL.isSet(accessFlags) && initialValue != null) { if (!EncodedValueUtils.isDefaultValue(initialValue)) { writer.write("# The value of this static final field might be set in the static constructor\n"); } else {
private static void writeAnnotation(Writer writer, AnnotationEncodedValue annotation) throws IOException { writer.write("Annotation["); writer.write(annotation.getType()); Set<? extends AnnotationElement> elements = annotation.getElements(); for (AnnotationElement element: elements) { writer.write(", "); writer.write(element.getName()); writer.write('='); writeEncodedValue(writer, element.getValue()); } writer.write(']'); }
AccessFlags.FINAL.isSet(accessFlags) && initialValue != null) { if (!EncodedValueUtils.isDefaultValue(initialValue)) { writer.write("# The value of this static final field might be set in the static constructor\n"); } else {
private static void writeAnnotation(Writer writer, AnnotationEncodedValue annotation) throws IOException { writer.write("Annotation["); writer.write(annotation.getType()); Set<? extends AnnotationElement> elements = annotation.getElements(); for (AnnotationElement element: elements) { writer.write(", "); writer.write(element.getName()); writer.write('='); writeEncodedValue(writer, element.getValue()); } writer.write(']'); }
AccessFlags.FINAL.isSet(accessFlags) && initialValue != null) { if (!EncodedValueUtils.isDefaultValue(initialValue)) { writer.write("# The value of this static final field might be set in the static constructor\n"); } else {
@Override protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { int callSiteOffset = dexFile.readSmallUint(out.getCursor()); StringWriter writer = new StringWriter(); try { EncodedValueUtils.writeEncodedValue(writer, new DexBackedArrayEncodedValue(new DexReader(dexFile, callSiteOffset))); } catch (IOException ex) { // Shouldn't get an IOException from a StringWriter.. throw new RuntimeException(ex); } out.annotate(4, "call_site_id_item[0x%x] = %s", callSiteOffset, writer.toString()); } };
AccessFlags.FINAL.isSet(accessFlags) && initialValue != null) { if (!EncodedValueUtils.isDefaultValue(initialValue)) { writer.write("# The value of this static final field might be set in the static constructor\n"); } else {
@Override protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { int callSiteOffset = dexFile.readSmallUint(out.getCursor()); StringWriter writer = new StringWriter(); try { EncodedValueUtils.writeEncodedValue(writer, new DexBackedArrayEncodedValue(new DexReader(dexFile, callSiteOffset))); } catch (IOException ex) { // Shouldn't get an IOException from a StringWriter.. throw new RuntimeException(ex); } out.annotate(4, "call_site_id_item[0x%x] = %s", callSiteOffset, writer.toString()); } };
public static void writeCallSite(Writer writer, CallSiteReference callSiteReference) throws IOException { writer.write(callSiteReference.getName()); writer.write('('); writer.write('"'); StringUtils.writeEscapedString(writer, callSiteReference.getMethodName()); writer.write('"'); writer.write(", "); writeMethodProtoDescriptor(writer, callSiteReference.getMethodProto()); for (EncodedValue encodedValue : callSiteReference.getExtraArguments()) { writer.write(", "); EncodedValueUtils.writeEncodedValue(writer, encodedValue); } writer.write(")@"); MethodHandleReference methodHandle = callSiteReference.getMethodHandle(); if (methodHandle.getMethodHandleType() != MethodHandleType.INVOKE_STATIC) { throw new IllegalArgumentException("The linker method handle for a call site must be of type invoke-static"); } writeMethodDescriptor(writer, (MethodReference)callSiteReference.getMethodHandle().getMemberReference()); }
public static void writeCallSite(Writer writer, CallSiteReference callSiteReference) throws IOException { writer.write(callSiteReference.getName()); writer.write('('); writer.write('"'); StringUtils.writeEscapedString(writer, callSiteReference.getMethodName()); writer.write('"'); writer.write(", "); writeMethodProtoDescriptor(writer, callSiteReference.getMethodProto()); for (EncodedValue encodedValue : callSiteReference.getExtraArguments()) { writer.write(", "); EncodedValueUtils.writeEncodedValue(writer, encodedValue); } writer.write(")@"); MethodHandleReference methodHandle = callSiteReference.getMethodHandle(); if (methodHandle.getMethodHandleType() != MethodHandleType.INVOKE_STATIC) { throw new IllegalArgumentException("The linker method handle for a call site must be of type invoke-static"); } writeMethodDescriptor(writer, (MethodReference)callSiteReference.getMethodHandle().getMemberReference()); }
reader.setOffset(reader.getOffset() - 1); try { EncodedValueUtils.writeEncodedValue(writer, DexBackedEncodedValue.readFrom(reader)); } catch (IOException ex) {
reader.setOffset(reader.getOffset() - 1); try { EncodedValueUtils.writeEncodedValue(writer, DexBackedEncodedValue.readFrom(reader)); } catch (IOException ex) {