protected static FieldReference toFieldReference(SootField f) { FieldReference fieldRef = new ImmutableFieldReference(SootToDexUtils.getDexClassName(f.getDeclaringClass().getName()), f.getName(), SootToDexUtils.getDexTypeDescriptor(f.getType())); return fieldRef; }
public static ImmutableFieldEncodedValue of(@Nonnull FieldEncodedValue fieldEncodedValue) { if (fieldEncodedValue instanceof ImmutableFieldEncodedValue) { return (ImmutableFieldEncodedValue)fieldEncodedValue; } return new ImmutableFieldEncodedValue(ImmutableFieldReference.of(fieldEncodedValue.getValue())); }
public static ImmutableFieldEncodedValue of(@Nonnull FieldEncodedValue fieldEncodedValue) { if (fieldEncodedValue instanceof ImmutableFieldEncodedValue) { return (ImmutableFieldEncodedValue)fieldEncodedValue; } return new ImmutableFieldEncodedValue(ImmutableFieldReference.of(fieldEncodedValue.getValue())); }
protected static FieldReference toFieldReference(SootFieldRef ref) { FieldReference fieldRef = new ImmutableFieldReference(SootToDexUtils.getDexClassName(ref.declaringClass().getName()), ref.name(), SootToDexUtils.getDexTypeDescriptor(ref.type())); return fieldRef; }
public static ImmutableEnumEncodedValue of(EnumEncodedValue enumEncodedValue) { if (enumEncodedValue instanceof ImmutableEnumEncodedValue) { return (ImmutableEnumEncodedValue)enumEncodedValue; } return new ImmutableEnumEncodedValue(ImmutableFieldReference.of(enumEncodedValue.getValue())); }
@Before public void setUp() { vm = mock(VirtualMachine.class); ectx = mock(ExecutionContext.class); mState = mock(MethodState.class); when(ectx.getMethodState()).thenReturn(mState); node = mock(ExecutionNode.class); itemB = mock(HeapItem.class); when(mState.readRegister(REGISTER_B)).thenReturn(itemB); setItem = ArgumentCaptor.forClass(HeapItem.class); location = mock(MethodLocation.class); instruction = mock(BuilderInstruction.class, withSettings().extraInterfaces(Instruction22c.class)); when(location.getInstruction()).thenReturn(instruction); when(location.getCodeAddress()).thenReturn(ADDRESS); when(instruction.getLocation()).thenReturn(location); when(instruction.getCodeUnits()).thenReturn(0); when(((Instruction22c) instruction).getRegisterA()).thenReturn(REGISTER_A); when(((Instruction22c) instruction).getRegisterB()).thenReturn(REGISTER_B); FieldReference fieldRef = new ImmutableFieldReference("Lsome/class;", "someMethod", "I"); when(((Instruction22c) instruction).getReference()).thenReturn(fieldRef); addressToLocation = new TIntObjectHashMap<MethodLocation>(); addressToLocation.put(ADDRESS, location); opFactory = new IGetOpFactory(); }
public static ImmutableEnumEncodedValue of(EnumEncodedValue enumEncodedValue) { if (enumEncodedValue instanceof ImmutableEnumEncodedValue) { return (ImmutableEnumEncodedValue)enumEncodedValue; } return new ImmutableEnumEncodedValue(ImmutableFieldReference.of(enumEncodedValue.getValue())); }
@Before public void setUp() { vm = mock(VirtualMachine.class); ectx = mock(ExecutionContext.class); mState = mock(MethodState.class); when(ectx.getMethodState()).thenReturn(mState); node = mock(ExecutionNode.class); itemA = mock(HeapItem.class); when(mState.readRegister(REGISTER_A)).thenReturn(itemA); itemB = mock(HeapItem.class); when(mState.readRegister(REGISTER_B)).thenReturn(itemB); setItem = ArgumentCaptor.forClass(HeapItem.class); location = mock(MethodLocation.class); when(location.getCodeAddress()).thenReturn(ADDRESS); instruction = mock(BuilderInstruction.class, withSettings().extraInterfaces(Instruction22c.class)); when(location.getInstruction()).thenReturn(instruction); when(instruction.getLocation()).thenReturn(location); when(instruction.getCodeUnits()).thenReturn(0); when(((Instruction22c) instruction).getRegisterA()).thenReturn(REGISTER_A); when(((Instruction22c) instruction).getRegisterB()).thenReturn(REGISTER_B); FieldReference fieldRef = new ImmutableFieldReference("Lsome/class;", "someMethod", "I"); when(((Instruction22c) instruction).getReference()).thenReturn(fieldRef); addressToLocation = new TIntObjectHashMap<MethodLocation>(); addressToLocation.put(ADDRESS, location); opFactory = new IPutOpFactory(); }
@Nonnull public static ImmutableReference of(int referenceType, Reference reference) { switch (referenceType) { case ReferenceType.STRING: return ImmutableStringReference.of((StringReference)reference); case ReferenceType.TYPE: return ImmutableTypeReference.of((TypeReference)reference); case ReferenceType.FIELD: return ImmutableFieldReference.of((FieldReference)reference); case ReferenceType.METHOD: return ImmutableMethodReference.of((MethodReference)reference); } throw new ExceptionWithContext("Invalid reference type: %d", referenceType); } }
return new ImmutableEnumEncodedValue(new ImmutableFieldReference(classT, e.getConstantName(), fieldT)); return new ImmutableFieldEncodedValue(new ImmutableFieldReference(classString, fieldName, typeString));
@Nonnull public static ImmutableReference of(Reference reference) { if (reference instanceof StringReference) { return ImmutableStringReference.of((StringReference)reference); } if (reference instanceof TypeReference) { return ImmutableTypeReference.of((TypeReference)reference); } if (reference instanceof FieldReference) { return ImmutableFieldReference.of((FieldReference)reference); } if (reference instanceof MethodReference) { return ImmutableMethodReference.of((MethodReference)reference); } throw new ExceptionWithContext("Invalid reference type"); }
type = (reference_type_descriptor89!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor89).type:null); retval.fieldReference = new ImmutableFieldReference(type, (SIMPLE_NAME90!=null?SIMPLE_NAME90.getText():null), (nonvoid_type_descriptor91!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor91).type:null));
@Nonnull public static ImmutableMethodHandleReference of(@Nonnull MethodHandleReference methodHandleReference) { if (methodHandleReference instanceof ImmutableMethodHandleReference) { return (ImmutableMethodHandleReference) methodHandleReference; } int methodHandleType = methodHandleReference.getMethodHandleType(); ImmutableReference memberReference; switch (methodHandleType) { case MethodHandleType.STATIC_PUT: case MethodHandleType.STATIC_GET: case MethodHandleType.INSTANCE_PUT: case MethodHandleType.INSTANCE_GET: memberReference = ImmutableFieldReference.of( (FieldReference) methodHandleReference.getMemberReference()); break; case MethodHandleType.INVOKE_STATIC: case MethodHandleType.INVOKE_INSTANCE: case MethodHandleType.INVOKE_CONSTRUCTOR: case MethodHandleType.INVOKE_DIRECT: case MethodHandleType.INVOKE_INTERFACE: memberReference = ImmutableMethodReference.of( (MethodReference) methodHandleReference.getMemberReference()); break; default: throw new ExceptionWithContext("Invalid method handle type: %d", methodHandleType); } return new ImmutableMethodHandleReference(methodHandleType, memberReference); }
ReferenceUtil.getShortFieldDescriptor(resolvedField)); resolvedField = new ImmutableFieldReference(fieldClass.getType(), newResolvedField.getName(), newResolvedField.getType());
@Nonnull public static ImmutableMethodHandleReference of(@Nonnull MethodHandleReference methodHandleReference) { if (methodHandleReference instanceof ImmutableMethodHandleReference) { return (ImmutableMethodHandleReference) methodHandleReference; } int methodHandleType = methodHandleReference.getMethodHandleType(); ImmutableReference memberReference; switch (methodHandleType) { case MethodHandleType.STATIC_PUT: case MethodHandleType.STATIC_GET: case MethodHandleType.INSTANCE_PUT: case MethodHandleType.INSTANCE_GET: memberReference = ImmutableFieldReference.of( (FieldReference) methodHandleReference.getMemberReference()); break; case MethodHandleType.INVOKE_STATIC: case MethodHandleType.INVOKE_INSTANCE: case MethodHandleType.INVOKE_CONSTRUCTOR: case MethodHandleType.INVOKE_DIRECT: case MethodHandleType.INVOKE_INTERFACE: memberReference = ImmutableMethodReference.of( (MethodReference) methodHandleReference.getMemberReference()); break; default: throw new ExceptionWithContext("Invalid method handle type: %d", methodHandleType); } return new ImmutableMethodHandleReference(methodHandleType, memberReference); }
@Override @Nullable public FieldReference getFieldByOffset(int fieldOffset) { if (fieldOffset==8) { return new ImmutableFieldReference(getType(), "length", "int"); } return null; }
@Nonnull public static ImmutableReference of(int referenceType, Reference reference) { switch (referenceType) { case ReferenceType.STRING: return ImmutableStringReference.of((StringReference)reference); case ReferenceType.TYPE: return ImmutableTypeReference.of((TypeReference)reference); case ReferenceType.FIELD: return ImmutableFieldReference.of((FieldReference)reference); case ReferenceType.METHOD: return ImmutableMethodReference.of((MethodReference)reference); case ReferenceType.METHOD_PROTO: return ImmutableMethodProtoReference.of((MethodProtoReference)reference); case ReferenceType.CALL_SITE: return ImmutableCallSiteReference.of((CallSiteReference) reference); case ReferenceType.METHOD_HANDLE: return ImmutableMethodHandleReference.of((MethodHandleReference) reference); } throw new ExceptionWithContext("Invalid reference type: %d", referenceType); } }
@Override @Nullable public FieldReference getFieldByOffset(int fieldOffset) { if (fieldOffset==8) { return new ImmutableFieldReference(getType(), "length", "int"); } return null; }
@Nonnull public static ImmutableReference of(int referenceType, Reference reference) { switch (referenceType) { case ReferenceType.STRING: return ImmutableStringReference.of((StringReference)reference); case ReferenceType.TYPE: return ImmutableTypeReference.of((TypeReference)reference); case ReferenceType.FIELD: return ImmutableFieldReference.of((FieldReference)reference); case ReferenceType.METHOD: return ImmutableMethodReference.of((MethodReference)reference); case ReferenceType.METHOD_PROTO: return ImmutableMethodProtoReference.of((MethodProtoReference)reference); case ReferenceType.CALL_SITE: return ImmutableCallSiteReference.of((CallSiteReference) reference); case ReferenceType.METHOD_HANDLE: return ImmutableMethodHandleReference.of((MethodHandleReference) reference); } throw new ExceptionWithContext("Invalid reference type: %d", referenceType); } }
@Nonnull BuilderFieldReference internField(@Nonnull String definingClass, String name, String type) { ImmutableFieldReference fieldReference = new ImmutableFieldReference(definingClass, name, type); return internField(fieldReference); }