Use DexFormatter everywhere in dexlib2

This replaces all uses of ReferenceUtil/EncodedValueUtils.writeEncodedValue.
This commit is contained in:
Ben Gruver 2021-02-24 16:46:18 -08:00
parent e894435e9d
commit c2ac11c693
36 changed files with 161 additions and 69 deletions

View File

@ -48,7 +48,6 @@ import org.jf.dexlib2.immutable.instruction.*;
import org.jf.dexlib2.immutable.reference.ImmutableFieldReference; import org.jf.dexlib2.immutable.reference.ImmutableFieldReference;
import org.jf.dexlib2.immutable.reference.ImmutableMethodReference; import org.jf.dexlib2.immutable.reference.ImmutableMethodReference;
import org.jf.dexlib2.util.MethodUtil; import org.jf.dexlib2.util.MethodUtil;
import org.jf.dexlib2.util.ReferenceUtil;
import org.jf.dexlib2.util.TypeUtils; import org.jf.dexlib2.util.TypeUtils;
import org.jf.dexlib2.writer.util.TryListBuilder; import org.jf.dexlib2.writer.util.TryListBuilder;
import org.jf.util.BitSetUtils; import org.jf.util.BitSetUtils;
@ -211,7 +210,7 @@ public class MethodAnalyzer {
ex.codeAddress = codeAddress; ex.codeAddress = codeAddress;
ex.addContext(String.format("opcode: %s", instructionToAnalyze.instruction.getOpcode().name)); ex.addContext(String.format("opcode: %s", instructionToAnalyze.instruction.getOpcode().name));
ex.addContext(String.format("code address: %d", codeAddress)); ex.addContext(String.format("code address: %d", codeAddress));
ex.addContext(String.format("method: %s", ReferenceUtil.getReferenceString(method))); ex.addContext(String.format("method: %s", method));
break; break;
} }
@ -1707,7 +1706,7 @@ public class MethodAnalyzer {
String superclass = fieldClass.getSuperclass(); String superclass = fieldClass.getSuperclass();
if (superclass == null) { if (superclass == null) {
throw new ExceptionWithContext("Couldn't find accessible class while resolving field %s", throw new ExceptionWithContext("Couldn't find accessible class while resolving field %s",
ReferenceUtil.getShortFieldDescriptor(resolvedField)); resolvedField);
} }
fieldClass = classPath.getClassDef(superclass); fieldClass = classPath.getClassDef(superclass);
@ -1718,7 +1717,7 @@ public class MethodAnalyzer {
FieldReference newResolvedField = classPath.getClass(fieldClass.getType()).getFieldByOffset(fieldOffset); FieldReference newResolvedField = classPath.getClass(fieldClass.getType()).getFieldByOffset(fieldOffset);
if (newResolvedField == null) { if (newResolvedField == null) {
throw new ExceptionWithContext("Couldn't find accessible class while resolving field %s", throw new ExceptionWithContext("Couldn't find accessible class while resolving field %s",
ReferenceUtil.getShortFieldDescriptor(resolvedField)); resolvedField);
} }
resolvedField = new ImmutableFieldReference(fieldClass.getType(), newResolvedField.getName(), resolvedField = new ImmutableFieldReference(fieldClass.getType(), newResolvedField.getName(),
newResolvedField.getType()); newResolvedField.getType());
@ -1839,7 +1838,7 @@ public class MethodAnalyzer {
String superclass = methodClass.getSuperclass(); String superclass = methodClass.getSuperclass();
if (superclass == null) { if (superclass == null) {
throw new ExceptionWithContext("Couldn't find accessible class while resolving method %s", throw new ExceptionWithContext("Couldn't find accessible class while resolving method %s",
ReferenceUtil.getMethodDescriptor(resolvedMethod, true)); resolvedMethod);
} }
methodClass = classPath.getClassDef(superclass); methodClass = classPath.getClassDef(superclass);
@ -1851,7 +1850,7 @@ public class MethodAnalyzer {
classPath.getClass(methodClass.getType()).getMethodByVtableIndex(methodIndex); classPath.getClass(methodClass.getType()).getMethodByVtableIndex(methodIndex);
if (newResolvedMethod == null) { if (newResolvedMethod == null) {
throw new ExceptionWithContext("Couldn't find accessible class while resolving method %s", throw new ExceptionWithContext("Couldn't find accessible class while resolving method %s",
ReferenceUtil.getMethodDescriptor(resolvedMethod, true)); resolvedMethod);
} }
resolvedMethod = newResolvedMethod; resolvedMethod = newResolvedMethod;
resolvedMethod = new ImmutableMethodReference(methodClass.getType(), resolvedMethod.getName(), resolvedMethod = new ImmutableMethodReference(methodClass.getType(), resolvedMethod.getName(),

View File

@ -31,6 +31,7 @@
package org.jf.dexlib2.base.reference; package org.jf.dexlib2.base.reference;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.reference.CallSiteReference; import org.jf.dexlib2.iface.reference.CallSiteReference;
public abstract class BaseCallSiteReference extends BaseReference implements CallSiteReference { public abstract class BaseCallSiteReference extends BaseReference implements CallSiteReference {
@ -55,4 +56,8 @@ public abstract class BaseCallSiteReference extends BaseReference implements Cal
} }
return false; return false;
} }
@Override public String toString() {
return DexFormatter.INSTANCE.getCallSite(this);
}
} }

View File

@ -31,8 +31,8 @@
package org.jf.dexlib2.base.reference; package org.jf.dexlib2.base.reference;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.reference.FieldReference; import org.jf.dexlib2.iface.reference.FieldReference;
import org.jf.dexlib2.util.ReferenceUtil;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -67,6 +67,6 @@ public abstract class BaseFieldReference extends BaseReference implements FieldR
} }
@Override public String toString() { @Override public String toString() {
return ReferenceUtil.getFieldDescriptor(this); return DexFormatter.INSTANCE.getFieldDescriptor(this);
} }
} }

View File

@ -32,6 +32,7 @@
package org.jf.dexlib2.base.reference; package org.jf.dexlib2.base.reference;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.reference.FieldReference; import org.jf.dexlib2.iface.reference.FieldReference;
import org.jf.dexlib2.iface.reference.MethodHandleReference; import org.jf.dexlib2.iface.reference.MethodHandleReference;
import org.jf.dexlib2.iface.reference.MethodReference; import org.jf.dexlib2.iface.reference.MethodReference;
@ -77,4 +78,8 @@ public abstract class BaseMethodHandleReference extends BaseReference implements
return ((MethodReference) reference).compareTo((MethodReference) o.getMemberReference()); return ((MethodReference) reference).compareTo((MethodReference) o.getMemberReference());
} }
} }
@Override public String toString() {
return DexFormatter.INSTANCE.getMethodHandle(this);
}
} }

View File

@ -32,8 +32,8 @@
package org.jf.dexlib2.base.reference; package org.jf.dexlib2.base.reference;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.reference.MethodProtoReference; import org.jf.dexlib2.iface.reference.MethodProtoReference;
import org.jf.dexlib2.util.ReferenceUtil;
import org.jf.util.CharSequenceUtils; import org.jf.util.CharSequenceUtils;
import org.jf.util.CollectionUtils; import org.jf.util.CollectionUtils;
@ -66,6 +66,6 @@ public abstract class BaseMethodProtoReference extends BaseReference implements
} }
@Override public String toString() { @Override public String toString() {
return ReferenceUtil.getMethodProtoDescriptor(this); return DexFormatter.INSTANCE.getMethodProtoDescriptor(this);
} }
} }

View File

@ -32,8 +32,8 @@
package org.jf.dexlib2.base.reference; package org.jf.dexlib2.base.reference;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.reference.MethodReference; import org.jf.dexlib2.iface.reference.MethodReference;
import org.jf.dexlib2.util.ReferenceUtil;
import org.jf.util.CharSequenceUtils; import org.jf.util.CharSequenceUtils;
import org.jf.util.CollectionUtils; import org.jf.util.CollectionUtils;
@ -73,6 +73,6 @@ public abstract class BaseMethodReference extends BaseReference implements Metho
} }
@Override public String toString() { @Override public String toString() {
return ReferenceUtil.getMethodDescriptor(this); return DexFormatter.INSTANCE.getMethodDescriptor(this);
} }
} }

View File

@ -31,6 +31,7 @@
package org.jf.dexlib2.base.reference; package org.jf.dexlib2.base.reference;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.reference.TypeReference; import org.jf.dexlib2.iface.reference.TypeReference;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
@ -62,5 +63,8 @@ public abstract class BaseTypeReference extends BaseReference implements TypeRef
@Override public int length() { return getType().length(); } @Override public int length() { return getType().length(); }
@Override public char charAt(int index) { return getType().charAt(index); } @Override public char charAt(int index) { return getType().charAt(index); }
@Override public CharSequence subSequence(int start, int end) { return getType().subSequence(start, end); } @Override public CharSequence subSequence(int start, int end) { return getType().subSequence(start, end); }
@Override @Nonnull public String toString() { return getType(); }
@Override @Nonnull public String toString() {
return DexFormatter.INSTANCE.getType(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.AnnotationEncodedValue; import org.jf.dexlib2.iface.value.AnnotationEncodedValue;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.util.CollectionUtils; import org.jf.util.CollectionUtils;
@ -70,4 +71,8 @@ public abstract class BaseAnnotationEncodedValue implements AnnotationEncodedVal
public int getValueType() { public int getValueType() {
return ValueType.ANNOTATION; return ValueType.ANNOTATION;
} }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.ArrayEncodedValue; import org.jf.dexlib2.iface.value.ArrayEncodedValue;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.util.CollectionUtils; import org.jf.util.CollectionUtils;
@ -61,4 +62,8 @@ public abstract class BaseArrayEncodedValue implements ArrayEncodedValue {
} }
public int getValueType() { return ValueType.ARRAY; } public int getValueType() { return ValueType.ARRAY; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -34,6 +34,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Booleans; import com.google.common.primitives.Booleans;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.BooleanEncodedValue; import org.jf.dexlib2.iface.value.BooleanEncodedValue;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
@ -62,4 +63,8 @@ public abstract class BaseBooleanEncodedValue implements BooleanEncodedValue {
} }
public int getValueType() { return ValueType.BOOLEAN; } public int getValueType() { return ValueType.BOOLEAN; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.ByteEncodedValue; import org.jf.dexlib2.iface.value.ByteEncodedValue;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseByteEncodedValue implements ByteEncodedValue {
} }
public int getValueType() { return ValueType.BYTE; } public int getValueType() { return ValueType.BYTE; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -34,6 +34,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Chars; import com.google.common.primitives.Chars;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.CharEncodedValue; import org.jf.dexlib2.iface.value.CharEncodedValue;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
@ -62,4 +63,8 @@ public abstract class BaseCharEncodedValue implements CharEncodedValue {
} }
public int getValueType() { return ValueType.CHAR; } public int getValueType() { return ValueType.CHAR; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.DoubleEncodedValue; import org.jf.dexlib2.iface.value.DoubleEncodedValue;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
@ -63,4 +64,8 @@ public abstract class BaseDoubleEncodedValue implements DoubleEncodedValue {
} }
public int getValueType() { return ValueType.DOUBLE; } public int getValueType() { return ValueType.DOUBLE; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.EnumEncodedValue; import org.jf.dexlib2.iface.value.EnumEncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseEnumEncodedValue implements EnumEncodedValue {
} }
public int getValueType() { return ValueType.ENUM; } public int getValueType() { return ValueType.ENUM; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.FieldEncodedValue; import org.jf.dexlib2.iface.value.FieldEncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseFieldEncodedValue implements FieldEncodedValue {
} }
public int getValueType() { return ValueType.FIELD; } public int getValueType() { return ValueType.FIELD; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.FloatEncodedValue; import org.jf.dexlib2.iface.value.FloatEncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseFloatEncodedValue implements FloatEncodedValue {
} }
public int getValueType() { return ValueType.FLOAT; } public int getValueType() { return ValueType.FLOAT; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.IntEncodedValue; import org.jf.dexlib2.iface.value.IntEncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseIntEncodedValue implements IntEncodedValue {
} }
public int getValueType() { return ValueType.INT; } public int getValueType() { return ValueType.INT; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -34,6 +34,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import com.google.common.primitives.Longs; import com.google.common.primitives.Longs;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.LongEncodedValue; import org.jf.dexlib2.iface.value.LongEncodedValue;
@ -64,4 +65,8 @@ public abstract class BaseLongEncodedValue implements LongEncodedValue {
} }
public int getValueType() { return ValueType.LONG; } public int getValueType() { return ValueType.LONG; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.MethodEncodedValue; import org.jf.dexlib2.iface.value.MethodEncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseMethodEncodedValue implements MethodEncodedValue {
} }
public int getValueType() { return ValueType.METHOD; } public int getValueType() { return ValueType.METHOD; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.MethodHandleEncodedValue; import org.jf.dexlib2.iface.value.MethodHandleEncodedValue;
@ -63,4 +64,8 @@ public abstract class BaseMethodHandleEncodedValue implements MethodHandleEncode
public int getValueType() { public int getValueType() {
return ValueType.METHOD_HANDLE; return ValueType.METHOD_HANDLE;
} }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.MethodTypeEncodedValue; import org.jf.dexlib2.iface.value.MethodTypeEncodedValue;
@ -63,4 +64,8 @@ public abstract class BaseMethodTypeEncodedValue implements MethodTypeEncodedVal
public int getValueType() { public int getValueType() {
return ValueType.METHOD_TYPE; return ValueType.METHOD_TYPE;
} }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.NullEncodedValue; import org.jf.dexlib2.iface.value.NullEncodedValue;
@ -56,4 +57,8 @@ public abstract class BaseNullEncodedValue implements NullEncodedValue {
} }
public int getValueType() { return ValueType.NULL; } public int getValueType() { return ValueType.NULL; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -34,6 +34,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import com.google.common.primitives.Shorts; import com.google.common.primitives.Shorts;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.ShortEncodedValue; import org.jf.dexlib2.iface.value.ShortEncodedValue;
@ -62,4 +63,8 @@ public abstract class BaseShortEncodedValue implements ShortEncodedValue {
} }
public int getValueType() { return ValueType.SHORT; } public int getValueType() { return ValueType.SHORT; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.StringEncodedValue; import org.jf.dexlib2.iface.value.StringEncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseStringEncodedValue implements StringEncodedValue {
} }
public int getValueType() { return ValueType.STRING; } public int getValueType() { return ValueType.STRING; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -33,6 +33,7 @@ package org.jf.dexlib2.base.value;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.iface.value.TypeEncodedValue; import org.jf.dexlib2.iface.value.TypeEncodedValue;
@ -61,4 +62,8 @@ public abstract class BaseTypeEncodedValue implements TypeEncodedValue {
} }
public int getValueType() { return ValueType.TYPE; } public int getValueType() { return ValueType.TYPE; }
@Override public String toString() {
return DexFormatter.INSTANCE.getEncodedValue(this);
}
} }

View File

@ -34,12 +34,9 @@ package org.jf.dexlib2.dexbacked.raw;
import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator; import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator;
import org.jf.dexlib2.dexbacked.value.DexBackedArrayEncodedValue; import org.jf.dexlib2.dexbacked.value.DexBackedArrayEncodedValue;
import org.jf.dexlib2.util.AnnotatedBytes; import org.jf.dexlib2.util.AnnotatedBytes;
import org.jf.dexlib2.util.EncodedValueUtils;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.io.IOException;
import java.io.StringWriter;
public class CallSiteIdItem { public class CallSiteIdItem {
public static final int ITEM_SIZE = 4; public static final int ITEM_SIZE = 4;
@ -55,16 +52,10 @@ public class CallSiteIdItem {
protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) { protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) {
int callSiteOffset = dexFile.getBuffer().readSmallUint(out.getCursor()); int callSiteOffset = dexFile.getBuffer().readSmallUint(out.getCursor());
StringWriter writer = new StringWriter(); DexBackedArrayEncodedValue arrayEncodedValue =
try { new DexBackedArrayEncodedValue(dexFile, dexFile.getDataBuffer().readerAt(callSiteOffset));
EncodedValueUtils.writeEncodedValue(writer,
new DexBackedArrayEncodedValue(dexFile, dexFile.getDataBuffer().readerAt(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()); out.annotate(4, "call_site_id_item[0x%x] = %s", callSiteOffset, arrayEncodedValue);
} }
}; };
} }

View File

@ -33,15 +33,18 @@ package org.jf.dexlib2.dexbacked.raw;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.jf.dexlib2.ReferenceType;
import org.jf.dexlib2.VerificationError; import org.jf.dexlib2.VerificationError;
import org.jf.dexlib2.dexbacked.CDexBackedDexFile; import org.jf.dexlib2.dexbacked.CDexBackedDexFile;
import org.jf.dexlib2.dexbacked.DexReader; import org.jf.dexlib2.dexbacked.DexReader;
import org.jf.dexlib2.dexbacked.instruction.DexBackedInstruction; import org.jf.dexlib2.dexbacked.instruction.DexBackedInstruction;
import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator; import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.instruction.*; import org.jf.dexlib2.iface.instruction.*;
import org.jf.dexlib2.iface.instruction.formats.*; import org.jf.dexlib2.iface.instruction.formats.*;
import org.jf.dexlib2.iface.reference.Reference;
import org.jf.dexlib2.iface.reference.StringReference;
import org.jf.dexlib2.util.AnnotatedBytes; import org.jf.dexlib2.util.AnnotatedBytes;
import org.jf.dexlib2.util.ReferenceUtil;
import org.jf.util.ExceptionWithContext; import org.jf.util.ExceptionWithContext;
import org.jf.util.NumberUtils; import org.jf.util.NumberUtils;
@ -461,19 +464,16 @@ public class CodeItem {
args.add(formatRegister(instruction.getRegisterG())); args.add(formatRegister(instruction.getRegisterG()));
} }
String reference = ReferenceUtil.getReferenceString(instruction.getReference());
out.annotate(6, String.format("%s {%s}, %s", out.annotate(6, String.format("%s {%s}, %s",
instruction.getOpcode().name, Joiner.on(", ").join(args), reference)); instruction.getOpcode().name, Joiner.on(", ").join(args), instruction.getReference()));
} }
private void annotateInstruction3rc(@Nonnull AnnotatedBytes out, @Nonnull Instruction3rc instruction) { private void annotateInstruction3rc(@Nonnull AnnotatedBytes out, @Nonnull Instruction3rc instruction) {
int startRegister = instruction.getStartRegister(); int startRegister = instruction.getStartRegister();
int endRegister = startRegister + instruction.getRegisterCount() - 1; int endRegister = startRegister + instruction.getRegisterCount() - 1;
String reference = ReferenceUtil.getReferenceString(instruction.getReference());
out.annotate(6, String.format("%s {%s .. %s}, %s", out.annotate(6, String.format("%s {%s .. %s}, %s",
instruction.getOpcode().name, formatRegister(startRegister), formatRegister(endRegister), instruction.getOpcode().name, formatRegister(startRegister), formatRegister(endRegister),
reference)); instruction.getReference()));
} }
private void annotateDefaultInstruction(@Nonnull AnnotatedBytes out, @Nonnull Instruction instruction) { private void annotateDefaultInstruction(@Nonnull AnnotatedBytes out, @Nonnull Instruction instruction) {
@ -498,7 +498,17 @@ public class CodeItem {
} }
if (instruction instanceof ReferenceInstruction) { if (instruction instanceof ReferenceInstruction) {
args.add(ReferenceUtil.getReferenceString(((ReferenceInstruction)instruction).getReference())); ReferenceInstruction referenceInstruction = ((ReferenceInstruction)instruction);
Reference reference = ((ReferenceInstruction)instruction).getReference();
String referenceString;
if (referenceInstruction.getReferenceType() == ReferenceType.STRING) {
referenceString = DexFormatter.INSTANCE.getQuotedString((StringReference)reference);
} else {
referenceString = referenceInstruction.getReference().toString();
}
args.add(referenceString);
} else if (instruction instanceof OffsetInstruction) { } else if (instruction instanceof OffsetInstruction) {
int offset = ((OffsetInstruction)instruction).getCodeOffset(); int offset = ((OffsetInstruction)instruction).getCodeOffset();
String sign = offset>=0?"+":"-"; String sign = offset>=0?"+":"-";

View File

@ -36,11 +36,8 @@ import org.jf.dexlib2.dexbacked.DexBackedDexFile;
import org.jf.dexlib2.dexbacked.DexReader; import org.jf.dexlib2.dexbacked.DexReader;
import org.jf.dexlib2.dexbacked.value.DexBackedEncodedValue; import org.jf.dexlib2.dexbacked.value.DexBackedEncodedValue;
import org.jf.dexlib2.util.AnnotatedBytes; import org.jf.dexlib2.util.AnnotatedBytes;
import org.jf.dexlib2.util.EncodedValueUtils;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import java.io.IOException;
import java.io.StringWriter;
public class EncodedValue { public class EncodedValue {
public static void annotateEncodedValue( public static void annotateEncodedValue(
@ -186,15 +183,8 @@ public class EncodedValue {
case ValueType.ARRAY: case ValueType.ARRAY:
case ValueType.ANNOTATION: case ValueType.ANNOTATION:
case ValueType.METHOD_HANDLE: case ValueType.METHOD_HANDLE:
StringWriter writer = new StringWriter();
reader.setOffset(reader.getOffset() - 1); reader.setOffset(reader.getOffset() - 1);
try { return DexBackedEncodedValue.readFrom(dexFile, reader).toString();
EncodedValueUtils.writeEncodedValue(writer, DexBackedEncodedValue.readFrom(dexFile, reader));
} catch (IOException ex) {
// Shouldn't happen with a StringWriter...
throw new RuntimeException(ex);
}
return writer.toString();
case ValueType.NULL: case ValueType.NULL:
return "null"; return "null";
case ValueType.BOOLEAN: case ValueType.BOOLEAN:

View File

@ -39,7 +39,6 @@ import org.jf.dexlib2.iface.ClassDef;
import org.jf.dexlib2.iface.Field; import org.jf.dexlib2.iface.Field;
import org.jf.dexlib2.iface.Method; import org.jf.dexlib2.iface.Method;
import org.jf.dexlib2.util.AnnotatedBytes; import org.jf.dexlib2.util.AnnotatedBytes;
import org.jf.dexlib2.util.ReferenceUtil;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@ -66,7 +65,7 @@ public class HiddenApiClassDataItem {
int index = 0; int index = 0;
for (ClassDef classDef : dexFile.getClasses()) { for (ClassDef classDef : dexFile.getClasses()) {
out.annotate(0, "[%d] %s", index, ReferenceUtil.getReferenceString(classDef)); out.annotate(0, "[%d] %s", index, classDef);
out.indent(); out.indent();
int offset = dexFile.getDataBuffer().readSmallUint(out.getCursor()); int offset = dexFile.getDataBuffer().readSmallUint(out.getCursor());
@ -85,7 +84,7 @@ public class HiddenApiClassDataItem {
DexReader<? extends DexBuffer> reader = dexFile.getBuffer().readerAt(out.getCursor()); DexReader<? extends DexBuffer> reader = dexFile.getBuffer().readerAt(out.getCursor());
for (Field field : classDef.getStaticFields()) { for (Field field : classDef.getStaticFields()) {
out.annotate(0, "%s:", ReferenceUtil.getReferenceString(field)); out.annotate(0, "%s:", field);
out.indent(); out.indent();
int restrictions = reader.readSmallUleb128(); int restrictions = reader.readSmallUleb128();
out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s", out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s",
@ -94,7 +93,7 @@ public class HiddenApiClassDataItem {
out.deindent(); out.deindent();
} }
for (Field field : classDef.getInstanceFields()) { for (Field field : classDef.getInstanceFields()) {
out.annotate(0, "%s:", ReferenceUtil.getReferenceString(field)); out.annotate(0, "%s:", field);
out.indent(); out.indent();
int restrictions = reader.readSmallUleb128(); int restrictions = reader.readSmallUleb128();
out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s", out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s",
@ -103,7 +102,7 @@ public class HiddenApiClassDataItem {
out.deindent(); out.deindent();
} }
for (Method method : classDef.getDirectMethods()) { for (Method method : classDef.getDirectMethods()) {
out.annotate(0, "%s:", ReferenceUtil.getReferenceString(method)); out.annotate(0, "%s:", method);
out.indent(); out.indent();
int restrictions = reader.readSmallUleb128(); int restrictions = reader.readSmallUleb128();
out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s", out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s",
@ -112,7 +111,7 @@ public class HiddenApiClassDataItem {
out.deindent(); out.deindent();
} }
for (Method method : classDef.getVirtualMethods()) { for (Method method : classDef.getVirtualMethods()) {
out.annotate(0, "%s:", ReferenceUtil.getReferenceString(method)); out.annotate(0, "%s:", method);
out.indent(); out.indent();
int restrictions = reader.readSmallUleb128(); int restrictions = reader.readSmallUleb128();
out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s", out.annotateTo(reader.getOffset(), "restriction = 0x%x: %s",

View File

@ -32,6 +32,7 @@
package org.jf.dexlib2.util; package org.jf.dexlib2.util;
import org.jf.dexlib2.ValueType; import org.jf.dexlib2.ValueType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.AnnotationElement; import org.jf.dexlib2.iface.AnnotationElement;
import org.jf.dexlib2.iface.value.*; import org.jf.dexlib2.iface.value.*;
import org.jf.util.StringUtils; import org.jf.util.StringUtils;
@ -69,7 +70,7 @@ public final class EncodedValueUtils {
} }
/** /**
* @deprecated use {@link org.jf.dexlib2.formatter.DefaultDexFormatter} instead. * @deprecated use {@link DexFormatter} instead.
*/ */
@Deprecated @Deprecated
public static void writeEncodedValue(Writer writer, EncodedValue encodedValue) throws IOException { public static void writeEncodedValue(Writer writer, EncodedValue encodedValue) throws IOException {

View File

@ -32,6 +32,7 @@
package org.jf.dexlib2.util; package org.jf.dexlib2.util;
import org.jf.dexlib2.MethodHandleType; import org.jf.dexlib2.MethodHandleType;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.reference.*; import org.jf.dexlib2.iface.reference.*;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.util.StringUtils; import org.jf.util.StringUtils;
@ -45,7 +46,7 @@ import java.io.Writer;
/** /**
* Some utilities for generating human-readable strings for the various types of references. * Some utilities for generating human-readable strings for the various types of references.
* *
* @deprecated use {@link org.jf.dexlib2.formatter.DefaultDexFormatter} instead. * @deprecated use {@link DexFormatter} instead.
*/ */
@Deprecated @Deprecated
public final class ReferenceUtil { public final class ReferenceUtil {

View File

@ -71,7 +71,7 @@ public class SyntheticAccessorResolver {
private final SyntheticAccessorFSM syntheticAccessorFSM; private final SyntheticAccessorFSM syntheticAccessorFSM;
private final Map<String, ClassDef> classDefMap; private final Map<String, ClassDef> classDefMap;
private final Map<String, AccessedMember> resolvedAccessors = Maps.newConcurrentMap(); private final Map<MethodReference, AccessedMember> resolvedAccessors = Maps.newConcurrentMap();
public SyntheticAccessorResolver(@Nonnull Opcodes opcodes, @Nonnull Iterable<? extends ClassDef> classDefs) { public SyntheticAccessorResolver(@Nonnull Opcodes opcodes, @Nonnull Iterable<? extends ClassDef> classDefs) {
this.syntheticAccessorFSM = new SyntheticAccessorFSM(opcodes); this.syntheticAccessorFSM = new SyntheticAccessorFSM(opcodes);
@ -90,9 +90,7 @@ public class SyntheticAccessorResolver {
@Nullable @Nullable
public AccessedMember getAccessedMember(@Nonnull MethodReference methodReference) { public AccessedMember getAccessedMember(@Nonnull MethodReference methodReference) {
String methodDescriptor = ReferenceUtil.getMethodDescriptor(methodReference); AccessedMember accessedMember = resolvedAccessors.get(methodReference);
AccessedMember accessedMember = resolvedAccessors.get(methodDescriptor);
if (accessedMember != null) { if (accessedMember != null) {
return accessedMember; return accessedMember;
} }
@ -133,7 +131,7 @@ public class SyntheticAccessorResolver {
if (accessType >= 0) { if (accessType >= 0) {
AccessedMember member = AccessedMember member =
new AccessedMember(accessType, ((ReferenceInstruction)instructions.get(0)).getReference()); new AccessedMember(accessType, ((ReferenceInstruction)instructions.get(0)).getReference());
resolvedAccessors.put(methodDescriptor, member); resolvedAccessors.put(methodReference, member);
return member; return member;
} }
return null; return null;

View File

@ -42,6 +42,7 @@ import org.jf.dexlib2.base.BaseAnnotationElement;
import org.jf.dexlib2.builder.MutableMethodImplementation; import org.jf.dexlib2.builder.MutableMethodImplementation;
import org.jf.dexlib2.builder.instruction.BuilderInstruction31c; import org.jf.dexlib2.builder.instruction.BuilderInstruction31c;
import org.jf.dexlib2.dexbacked.raw.*; import org.jf.dexlib2.dexbacked.raw.*;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.Annotation; import org.jf.dexlib2.iface.Annotation;
import org.jf.dexlib2.iface.ExceptionHandler; import org.jf.dexlib2.iface.ExceptionHandler;
import org.jf.dexlib2.iface.TryBlock; import org.jf.dexlib2.iface.TryBlock;
@ -55,7 +56,6 @@ import org.jf.dexlib2.iface.instruction.formats.*;
import org.jf.dexlib2.iface.reference.*; import org.jf.dexlib2.iface.reference.*;
import org.jf.dexlib2.util.InstructionUtil; import org.jf.dexlib2.util.InstructionUtil;
import org.jf.dexlib2.util.MethodUtil; import org.jf.dexlib2.util.MethodUtil;
import org.jf.dexlib2.util.ReferenceUtil;
import org.jf.dexlib2.writer.io.DeferredOutputStream; import org.jf.dexlib2.writer.io.DeferredOutputStream;
import org.jf.dexlib2.writer.io.DeferredOutputStreamFactory; import org.jf.dexlib2.writer.io.DeferredOutputStreamFactory;
import org.jf.dexlib2.writer.io.DexDataStore; import org.jf.dexlib2.writer.io.DexDataStore;
@ -248,7 +248,7 @@ public abstract class DexWriter<
public List<String> getMethodReferences() { public List<String> getMethodReferences() {
List<String> methodReferences = Lists.newArrayList(); List<String> methodReferences = Lists.newArrayList();
for (Entry<? extends MethodRefKey, Integer> methodReference: methodSection.getItems()) { for (Entry<? extends MethodRefKey, Integer> methodReference: methodSection.getItems()) {
methodReferences.add(ReferenceUtil.getMethodDescriptor(methodReference.getKey())); methodReferences.add(DexFormatter.INSTANCE.getMethodDescriptor(methodReference.getKey()));
} }
return methodReferences; return methodReferences;
} }
@ -257,7 +257,7 @@ public abstract class DexWriter<
public List<String> getFieldReferences() { public List<String> getFieldReferences() {
List<String> fieldReferences = Lists.newArrayList(); List<String> fieldReferences = Lists.newArrayList();
for (Entry<? extends FieldRefKey, Integer> fieldReference: fieldSection.getItems()) { for (Entry<? extends FieldRefKey, Integer> fieldReference: fieldSection.getItems()) {
fieldReferences.add(ReferenceUtil.getFieldDescriptor(fieldReference.getKey())); fieldReferences.add(DexFormatter.INSTANCE.getFieldDescriptor(fieldReference.getKey()));
} }
return fieldReferences; return fieldReferences;
} }

View File

@ -41,6 +41,7 @@ import org.jf.dexlib2.DebugItemType;
import org.jf.dexlib2.HiddenApiRestriction; import org.jf.dexlib2.HiddenApiRestriction;
import org.jf.dexlib2.ReferenceType; import org.jf.dexlib2.ReferenceType;
import org.jf.dexlib2.builder.MutableMethodImplementation; import org.jf.dexlib2.builder.MutableMethodImplementation;
import org.jf.dexlib2.formatter.DexFormatter;
import org.jf.dexlib2.iface.*; import org.jf.dexlib2.iface.*;
import org.jf.dexlib2.iface.debug.*; import org.jf.dexlib2.iface.debug.*;
import org.jf.dexlib2.iface.instruction.Instruction; import org.jf.dexlib2.iface.instruction.Instruction;
@ -48,7 +49,6 @@ import org.jf.dexlib2.iface.instruction.ReferenceInstruction;
import org.jf.dexlib2.iface.reference.*; import org.jf.dexlib2.iface.reference.*;
import org.jf.dexlib2.iface.value.ArrayEncodedValue; import org.jf.dexlib2.iface.value.ArrayEncodedValue;
import org.jf.dexlib2.iface.value.EncodedValue; import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.util.ReferenceUtil;
import org.jf.dexlib2.writer.ClassSection; import org.jf.dexlib2.writer.ClassSection;
import org.jf.dexlib2.writer.DebugWriter; import org.jf.dexlib2.writer.DebugWriter;
import org.jf.dexlib2.writer.util.StaticInitializerUtil; import org.jf.dexlib2.writer.util.StaticInitializerUtil;
@ -84,7 +84,7 @@ public class ClassPool extends BasePool<String, PoolClassDef> implements ClassSe
HashSet<String> fields = new HashSet<String>(); HashSet<String> fields = new HashSet<String>();
for (Field field: poolClassDef.getFields()) { for (Field field: poolClassDef.getFields()) {
String fieldDescriptor = ReferenceUtil.getShortFieldDescriptor(field); String fieldDescriptor = DexFormatter.INSTANCE.getShortFieldDescriptor(field);
if (!fields.add(fieldDescriptor)) { if (!fields.add(fieldDescriptor)) {
throw new ExceptionWithContext("Multiple definitions for field %s->%s", throw new ExceptionWithContext("Multiple definitions for field %s->%s",
poolClassDef.getType(), fieldDescriptor); poolClassDef.getType(), fieldDescriptor);
@ -106,7 +106,7 @@ public class ClassPool extends BasePool<String, PoolClassDef> implements ClassSe
HashSet<String> methods = new HashSet<String>(); HashSet<String> methods = new HashSet<String>();
for (PoolMethod method: poolClassDef.getMethods()) { for (PoolMethod method: poolClassDef.getMethods()) {
String methodDescriptor = ReferenceUtil.getMethodDescriptor(method, true); String methodDescriptor = DexFormatter.INSTANCE.getShortMethodDescriptor(method);
if (!methods.add(methodDescriptor)) { if (!methods.add(methodDescriptor)) {
throw new ExceptionWithContext("Multiple definitions for method %s->%s", throw new ExceptionWithContext("Multiple definitions for method %s->%s",
poolClassDef.getType(), methodDescriptor); poolClassDef.getType(), methodDescriptor);
@ -139,7 +139,7 @@ public class ClassPool extends BasePool<String, PoolClassDef> implements ClassSe
dexPool.stringSection.intern((StringReference)reference); dexPool.stringSection.intern((StringReference)reference);
break; break;
case ReferenceType.TYPE: case ReferenceType.TYPE:
dexPool.typeSection.intern((TypeReference)reference); dexPool.typeSection.intern(((TypeReference)reference).getType());
break; break;
case ReferenceType.FIELD: case ReferenceType.FIELD:
dexPool.fieldSection.intern((FieldReference) reference); dexPool.fieldSection.intern((FieldReference) reference);
@ -159,8 +159,7 @@ public class ClassPool extends BasePool<String, PoolClassDef> implements ClassSe
List<? extends TryBlock> tryBlocks = methodImpl.getTryBlocks(); List<? extends TryBlock> tryBlocks = methodImpl.getTryBlocks();
if (!hasInstruction && tryBlocks.size() > 0) { if (!hasInstruction && tryBlocks.size() > 0) {
throw new ExceptionWithContext("Method %s has no instructions, but has try blocks.", throw new ExceptionWithContext("Method %s has no instructions, but has try blocks.", method);
ReferenceUtil.getMethodDescriptor(method));
} }
for (TryBlock<? extends ExceptionHandler> tryBlock: methodImpl.getTryBlocks()) { for (TryBlock<? extends ExceptionHandler> tryBlock: methodImpl.getTryBlocks()) {

View File

@ -59,8 +59,8 @@ public class RollbackTest {
new ImmutableField("Lcls1;", "field1", "I", AccessFlags.PUBLIC.getValue(), null, null, null) new ImmutableField("Lcls1;", "field1", "I", AccessFlags.PUBLIC.getValue(), null, null, null)
), ),
Lists.<Method>newArrayList( Lists.<Method>newArrayList(
new ImmutableMethod("Lcls1", "method1", new ImmutableMethod("Lcls1;", "method1",
Lists.<MethodParameter>newArrayList(new ImmutableMethodParameter("L", null, null)), "V", Lists.<MethodParameter>newArrayList(new ImmutableMethodParameter("I", null, null)), "V",
AccessFlags.PUBLIC.getValue(), null, null, null)) AccessFlags.PUBLIC.getValue(), null, null, null))
); );

View File

@ -97,7 +97,7 @@ public class CallSiteTest {
BuilderCallSiteReference callSite = dexBuilder.internCallSite(new ImmutableCallSiteReference("call_site_1", BuilderCallSiteReference callSite = dexBuilder.internCallSite(new ImmutableCallSiteReference("call_site_1",
new ImmutableMethodHandleReference( new ImmutableMethodHandleReference(
MethodHandleType.INVOKE_STATIC, MethodHandleType.INVOKE_STATIC,
new ImmutableMethodReference("Lcls1", "loader", ImmutableList.of("Ljava/lang/invoke/Lookup;", new ImmutableMethodReference("Lcls1;", "loader", ImmutableList.of("Ljava/lang/invoke/Lookup;",
"Ljava/lang/String;", "Ljava/lang/String;",
"Ljava/lang/invoke/MethodType;"), "Ljava/lang/invoke/MethodType;"),
"Ljava/lang/invoke/CallSite;")), "Ljava/lang/invoke/CallSite;")),
@ -108,7 +108,7 @@ public class CallSiteTest {
methodImplementationBuilder.addInstruction(new BuilderInstruction35c(Opcode.INVOKE_CUSTOM, 0, 0, 0, 0, 0, 0, methodImplementationBuilder.addInstruction(new BuilderInstruction35c(Opcode.INVOKE_CUSTOM, 0, 0, 0, 0, 0, 0,
callSite)); callSite));
BuilderMethod method = dexBuilder.internMethod("Lcls1", "method1", null, "V", 0, ImmutableSet.of(), BuilderMethod method = dexBuilder.internMethod("Lcls1;", "method1", null, "V", 0, ImmutableSet.of(),
ImmutableSet.of(), methodImplementationBuilder.getMethodImplementation()); ImmutableSet.of(), methodImplementationBuilder.getMethodImplementation());
dexBuilder.internClassDef("Lcls1;", AccessFlags.PUBLIC.getValue(), "Ljava/lang/Object;", null, null, dexBuilder.internClassDef("Lcls1;", AccessFlags.PUBLIC.getValue(), "Ljava/lang/Object;", null, null,
ImmutableSet.of(), null, ImmutableSet.of(), null,