public DexType(String type) { if (type == null) { throw new RuntimeException("error: type is null!"); } this.type = new ImmutableTypeReference(type); this.name = type; }
@Nonnull @Override protected ImmutableTypeReference makeImmutable(@Nonnull TypeReference item) { return ImmutableTypeReference.of(item); } };
@Nonnull @Override protected ImmutableTypeReference makeImmutable(@Nonnull TypeReference item) { return ImmutableTypeReference.of(item); } };
public static TypeReference toTypeReference(Type t) { ImmutableTypeReference tRef = new ImmutableTypeReference(SootToDexUtils.getDexTypeDescriptor(t)); return tRef; }
@Nonnull @Override protected ImmutableTypeReference makeImmutable(@Nonnull TypeReference item) { return ImmutableTypeReference.of(item); } };
@Override public void caseClassConstant(ClassConstant c) { TypeReference referencedClass = new ImmutableTypeReference(c.getValue()); stmtV.addInsn(new Insn21c(Opcode.CONST_CLASS, destinationReg, referencedClass), origStmt); }
@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"); }
@Before public void setUp() { vm = mock(VirtualMachine.class); node = mock(ExecutionNode.class); mState = mock(MethodState.class); location = mock(MethodLocation.class); instruction = mock(BuilderInstruction.class, withSettings().extraInterfaces(Instruction3rc.class, VariableRegisterInstruction.class, ReferenceInstruction.class, RegisterRangeInstruction.class)); when(location.getInstruction()).thenReturn(instruction); when(location.getCodeAddress()).thenReturn(ADDRESS); when(instruction.getLocation()).thenReturn(location); when(instruction.getCodeUnits()).thenReturn(0); Reference ref = new ImmutableTypeReference("[I"); when(((ReferenceInstruction) instruction).getReference()).thenReturn(ref); addressToLocation = new TIntObjectHashMap<MethodLocation>(); addressToLocation.put(ADDRESS, location); opFactory = new FilledNewArrayOpFactory(); }
@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); } }
private void addRegisterAssignmentDebugInfo(LocalRegisterAssignmentInformation registerAssignment, Map<Local, Integer> seenRegisters, MethodImplementationBuilder builder) { Local local = registerAssignment.getLocal(); String dexLocalType = SootToDexUtils.getDexTypeDescriptor(local.getType()); StringReference localName = new ImmutableStringReference(local.getName()); Register reg = registerAssignment.getRegister(); int register = reg.getNumber(); Integer beforeRegister = seenRegisters.get(local); if (beforeRegister != null) { if (beforeRegister == register) { // No change return; } builder.addEndLocal(beforeRegister); } builder.addStartLocal(register, localName, new ImmutableTypeReference(dexLocalType), new ImmutableStringReference("")); seenRegisters.put(local, register); }
@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); } }
when(((Instruction35c) instruction).getRegisterF()).thenReturn(REGISTER_F); when(((Instruction35c) instruction).getRegisterG()).thenReturn(REGISTER_G); Reference ref = new ImmutableTypeReference("[I"); when(((ReferenceInstruction) instruction).getReference()).thenReturn(ref);
@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); } }
builder.addCatch(new ImmutableTypeReference(handler.getExceptionType()), labelAssigner.getLabelAtAddress(range.startAddress), labelAssigner.getLabelAtAddress(range.endAddress), labelAssigner.getLabelAtAddress(handler.getHandlerCodeAddress()));
@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); } if (reference instanceof MethodProtoReference) { return ImmutableMethodProtoReference.of((MethodProtoReference) reference); } if (reference instanceof CallSiteReference) { return ImmutableCallSiteReference.of((CallSiteReference) reference); } if (reference instanceof MethodHandleReference) { return ImmutableMethodHandleReference.of((MethodHandleReference) reference); } throw new ExceptionWithContext("Invalid reference type"); }
reference = new ImmutableTypeReference((CLASS_DESCRIPTOR110!=null?CLASS_DESCRIPTOR110.getText():null));
@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); } if (reference instanceof MethodProtoReference) { return ImmutableMethodProtoReference.of((MethodProtoReference) reference); } if (reference instanceof CallSiteReference) { return ImmutableCallSiteReference.of((CallSiteReference) reference); } if (reference instanceof MethodHandleReference) { return ImmutableMethodHandleReference.of((MethodHandleReference) reference); } throw new ExceptionWithContext("Invalid reference type"); }
@Nonnull public static ImmutableTypeReference of(@Nonnull TypeReference typeReference) { if (typeReference instanceof ImmutableTypeReference) { return (ImmutableTypeReference)typeReference; } return new ImmutableTypeReference(typeReference.getType()); }
@Nonnull public static ImmutableTypeReference of(@Nonnull TypeReference typeReference) { if (typeReference instanceof ImmutableTypeReference) { return (ImmutableTypeReference)typeReference; } return new ImmutableTypeReference(typeReference.getType()); }
@Nonnull public static ImmutableTypeReference of(@Nonnull TypeReference typeReference) { if (typeReference instanceof ImmutableTypeReference) { return (ImmutableTypeReference)typeReference; } return new ImmutableTypeReference(typeReference.getType()); }