@Override public TypeReference getTypeReference() { Iterator ti = types.iterator(); TypeAbstraction T = (TypeAbstraction) ti.next(); while (ti.hasNext()) { T = T.meet((TypeAbstraction) ti.next()); } return T.getTypeReference(); }
@Override public TypeReference getTypeReference() { Iterator ti = types.iterator(); TypeAbstraction T = (TypeAbstraction) ti.next(); while (ti.hasNext()) { T = T.meet((TypeAbstraction) ti.next()); } return T.getTypeReference(); }
private static SSAInstruction[] makeStatements(Context context) { ArrayList<SSAInstruction> statements = new ArrayList<>(); int nextLocal = 2; int retValue = nextLocal++; TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); SSAInstructionFactory insts = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getType().getClassLoader().getInstructionFactory(); if (tr != null) { SSALoadMetadataInstruction l = insts.LoadMetadataInstruction(statements.size(), retValue, TypeReference.JavaLangClass, tr); statements.add(l); SSAReturnInstruction R = insts.ReturnInstruction(statements.size(), retValue, false); statements.add(R); } SSAInstruction[] result = new SSAInstruction[statements.size()]; Iterator<SSAInstruction> it = statements.iterator(); for (int i = 0; i < result.length; i++) { result[i] = it.next(); } return result; }
private static boolean containsNonPrimitiveAndZero(DalvikTypeVariable[] types) { boolean containsNonPrimitive = false; boolean containsZero = false; for (int i = 0; i < types.length; i++) { if (types[i] != null) { if (types[i].getType() != null && types[i].getType().getTypeReference() != null && !types[i].getType().getTypeReference().isPrimitiveType()) { containsNonPrimitive = true; } if (types[i].isIntZeroConstant()) { containsZero = true; } } } return containsNonPrimitive && containsZero; }
private static SSAInstruction[] makeStatements(Context context) { ArrayList<SSAInstruction> statements = new ArrayList<>(); int nextLocal = 2; int retValue = nextLocal++; TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); SSAInstructionFactory insts = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getType().getClassLoader().getInstructionFactory(); if (tr != null) { SSALoadMetadataInstruction l = insts.LoadMetadataInstruction(statements.size(), retValue, TypeReference.JavaLangClass, tr); statements.add(l); SSAReturnInstruction R = insts.ReturnInstruction(statements.size(), retValue, false); statements.add(R); } SSAInstruction[] result = new SSAInstruction[statements.size()]; Iterator<SSAInstruction> it = statements.iterator(); for (int i = 0; i < result.length; i++) { result[i] = it.next(); } return result; }
private static SSAInstruction[] makeStatements(Context context) { SSAInstructionFactory insts = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getType().getClassLoader().getInstructionFactory(); ArrayList<SSAInstruction> statements = new ArrayList<>(); // vn1 is the string parameter int retValue = 2; TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { SSALoadMetadataInstruction l = insts.LoadMetadataInstruction(statements.size(), retValue, TypeReference.JavaLangClass, tr); statements.add(l); SSAReturnInstruction R = insts.ReturnInstruction(statements.size(), retValue, false); statements.add(R); } else { SSAThrowInstruction t = insts.ThrowInstruction(statements.size(), retValue); statements.add(t); } SSAInstruction[] result = new SSAInstruction[statements.size()]; statements.toArray(result); return result; }
private static boolean containsNonPrimitiveAndZero(DalvikTypeVariable[] types) { boolean containsNonPrimitive = false; boolean containsZero = false; for (int i = 0; i < types.length; i++) { if (types[i] != null) { if (types[i].getType() != null && types[i].getType().getTypeReference() != null && !types[i].getType().getTypeReference().isPrimitiveType()) { containsNonPrimitive = true; } if (types[i].isIntZeroConstant()) { containsZero = true; } } } return containsNonPrimitive && containsZero; }
private static SSAInstruction[] makeStatements(Context context) { SSAInstructionFactory insts = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getType().getClassLoader().getInstructionFactory(); ArrayList<SSAInstruction> statements = new ArrayList<>(); // vn1 is the string parameter int retValue = 2; TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { SSALoadMetadataInstruction l = insts.LoadMetadataInstruction(statements.size(), retValue, TypeReference.JavaLangClass, tr); statements.add(l); SSAReturnInstruction R = insts.ReturnInstruction(statements.size(), retValue, false); statements.add(R); } else { SSAThrowInstruction t = insts.ThrowInstruction(statements.size(), retValue); statements.add(t); } SSAInstruction[] result = new SSAInstruction[statements.size()]; statements.toArray(result); return result; }
nmBuilder.append('/').append(((InstanceKey)n.getContext().get(ContextKey.RECEIVER)).getConcreteType().getName()); } else if (n.getContext() instanceof JavaTypeContext) { nmBuilder.append('/').append(((TypeAbstraction) n.getContext().get(ContextKey.RECEIVER)).getTypeReference().getName());
nmBuilder.append('/').append(((InstanceKey)n.getContext().get(ContextKey.RECEIVER)).getConcreteType().getName()); } else if (n.getContext() instanceof JavaTypeContext) { nmBuilder.append('/').append(((TypeAbstraction) n.getContext().get(ContextKey.RECEIVER)).getTypeReference().getName());
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); TypeReference tr = ((TypeAbstraction)node.getContext().get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); TypeReference tr = ((TypeAbstraction)node.getContext().get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); Context context = node.getContext(); TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); Context context = node.getContext(); TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); GetMethodContext context = (GetMethodContext) node.getContext(); TypeReference tr = context.getType().getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); GetMethodContext context = (GetMethodContext) node.getContext(); TypeReference tr = context.getType().getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); Context context = node.getContext(); TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
@Override public Iterator<NewSiteReference> iterateNewSites(CGNode node) { if (node == null) { throw new IllegalArgumentException("node is null"); } assert understands(node); Context context = node.getContext(); TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { return new NonNullSingletonIterator<>(NewSiteReference.make(0, tr)); } return EmptyIterator.instance(); }
private IR makeIR(IMethod method, Context context) { SSAInstructionFactory insts = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getType().getClassLoader().getInstructionFactory(); TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { SpecializedMethod m = new SpecializedMethod(method, method.getDeclaringClass(), method.isStatic(), false);
private IR makeIR(IMethod method, Context context) { SSAInstructionFactory insts = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getType().getClassLoader().getInstructionFactory(); TypeReference tr = ((TypeAbstraction)context.get(ContextKey.RECEIVER)).getTypeReference(); if (tr != null) { SpecializedMethod m = new SpecializedMethod(method, method.getDeclaringClass(), method.isStatic(), false);