public boolean isSafe(VirtualType virtualClass) { return getConfiguration().isSafe(virtualClass.toString()); }
private HeapItem get(Field field, Object instance, String className, int accessFlags, ExecutionContext context, VirtualMachine vm, Op op) { if (vm.getConfiguration().isSafe(className)) { return getSafeField(field, instance, context, op, vm.getExceptionFactory()); } else { boolean isStatic = Modifier.isStatic(accessFlags); if (!isStatic) { // Instance field lookup isn't supported yet. String internalName = ClassNameUtils.toInternal(field.getType()); return HeapItem.newUnknown(internalName); } return getVirtualField(field, vm, context); } }
Set<String> immutableClasses = vm.getConfiguration().getImmutableClasses(); ClassLoader classLoader = vm.getClassLoader();
@Before public void setUp() throws ClassNotFoundException { vm = mock(VirtualMachine.class); classManager = mock(ClassManager.class); when(vm.getClassManager()).thenReturn(classManager); classLoader = mock(SmaliClassLoader.class); when(vm.getClassLoader()).thenReturn(classLoader); configuration = mock(Configuration.class); when(vm.getConfiguration()).thenReturn(configuration); mState = mock(MethodState.class); context = mock(ExecutionContext.class); when(context.getMethodState()).thenReturn(mState); method = new java_lang_Class_forName(); op = mock(Op.class); exceptionFactory = mock(ExceptionFactory.class); when(vm.getExceptionFactory()).thenReturn(exceptionFactory); }
if (vm.getConfiguration().isSafe(className)) { value = Class.forName(binaryClassName); } else {
if (vm.getConfiguration().isImmutable(type)) { if (log.isTraceEnabled()) { log.trace("{} is immutable", type);
if (vm.getConfiguration().isSafe(targetSignature) || MethodEmulator.canEmulate(targetSignature)) { ExecutionContext calleeContext = buildNonLocalCalleeContext(context); boolean allArgumentsKnown = allArgumentsKnown(calleeContext.getMethodState());
return; } else if (vm.getConfiguration().isSafe(methodDescriptor)) { MethodReflector reflector = new MethodReflector(vm, method); try { boolean isMutable = !vm.getConfiguration().isImmutable(newInstanceItem.getType()); if (isMutable) {