@Override public Atom getName() { return Atom.findOrCreateUnicodeAtom("c" + yuck); } @Override
/** * Method classLoaderName2Ref. * * @return ClassLoaderReference */ private ClassLoaderReference classLoaderName2Ref(String clName) { return scope.getLoader(Atom.findOrCreateUnicodeAtom(clName)); }
public static Selector make(Language l, String selectorStr) { if (selectorStr == null) { throw new IllegalArgumentException("null selectorStr"); } try { String methodName = selectorStr.substring(0, selectorStr.indexOf('(')); String desc = selectorStr.substring(selectorStr.indexOf('(')); return new Selector(Atom.findOrCreateUnicodeAtom(methodName), Descriptor.findOrCreateUTF8(l, desc)); } catch (StringIndexOutOfBoundsException e) { throw new IllegalArgumentException("invalid selectorStr: " + selectorStr, e); } }
/** * creates a reference to a global named globalName. the declaring type and * type of the global are both the root type. */ protected FieldReference makeGlobalRef(String globalName) { TypeReference rootTypeRef = TypeReference.findOrCreate(loader.getReference(), AstTypeReference.rootTypeName); return FieldReference.findOrCreate(rootTypeRef, Atom.findOrCreateUnicodeAtom("global " + globalName), rootTypeRef); }
public static MethodReference findOrCreate(Language l, ClassLoaderReference loader, String methodClass, String methodName, String methodSignature) throws IllegalArgumentException { TypeReference t = ShrikeUtil.makeTypeReference(loader, methodClass); Atom name = Atom.findOrCreateUnicodeAtom(methodName); Descriptor d = Descriptor.findOrCreateUTF8(l, methodSignature); return findOrCreate(t, name, d); }
private static MethodReference genSyntheticMethodRef(IClass receiver) { Atom atom = Atom.findOrCreateUnicodeAtom(SYNTHETIC_APPLY_METHOD_PREFIX); Descriptor desc = Descriptor.findOrCreateUTF8(JavaScriptLoader.JS, "()LRoot;"); MethodReference ref = MethodReference.findOrCreate(receiver.getReference(), atom, desc); return ref; }
public static MethodReference findOrCreate(Language l, ClassLoaderReference loader, String methodClass, String methodName, String methodSignature) throws IllegalArgumentException { TypeReference t = ShrikeUtil.makeTypeReference(loader, methodClass); Atom name = Atom.findOrCreateUnicodeAtom(methodName); Descriptor d = Descriptor.findOrCreateUTF8(l, methodSignature); return findOrCreate(t, name, d); }
/** * Find or create the canonical MemberReference instance for the given tuple. */ public static FieldReference findOrCreate(ClassLoaderReference loader, String classType, String fieldName, String fieldType) throws IllegalArgumentException { TypeReference c = ShrikeUtil.makeTypeReference(loader, classType); TypeReference ft = ShrikeUtil.makeTypeReference(loader, fieldType); Atom name = Atom.findOrCreateUnicodeAtom(fieldName); return findOrCreate(c, name, ft); }
/** * creates a reference to a global named globalName. the declaring type and * type of the global are both the root type. */ protected FieldReference makeGlobalRef(String globalName) { TypeReference rootTypeRef = TypeReference.findOrCreate(loader.getReference(), AstTypeReference.rootTypeName); return FieldReference.findOrCreate(rootTypeRef, Atom.findOrCreateUnicodeAtom("global " + globalName), rootTypeRef); }
private static MethodReference genSyntheticMethodRef(IClass receiver) { Atom atom = Atom.findOrCreateUnicodeAtom(SYNTHETIC_APPLY_METHOD_PREFIX); Descriptor desc = Descriptor.findOrCreateUTF8(JavaScriptLoader.JS, "()LRoot;"); MethodReference ref = MethodReference.findOrCreate(receiver.getReference(), atom, desc); return ref; }
private static MethodReference genSyntheticMethodRef(IClass receiver, String key) { Atom atom = Atom.findOrCreateUnicodeAtom(SYNTHETIC_CALL_METHOD_PREFIX + key); Descriptor desc = Descriptor.findOrCreateUTF8(JavaScriptLoader.JS, "()LRoot;"); MethodReference ref = MethodReference.findOrCreate(receiver.getReference(), atom, desc); return ref; }
public PointerKey getPointerKeyForGlobalVar(String varName) { FieldReference fieldRef = FieldReference.findOrCreate(JavaScriptTypes.Root, Atom.findOrCreateUnicodeAtom(varName), JavaScriptTypes.Root); IField f = cha.resolveField(fieldRef); assert f != null : "couldn't resolve " + varName; return getPointerKeyForInstanceField(getGlobalObject(JavaScriptTypes.jsName), f); } @Override
/** * if F is a supported constant representing a field, return the corresponding {@link InstanceFieldKey} for I. Otherwise, return {@code null}. */ protected PointerKey getInstanceFieldPointerKeyForConstant(InstanceKey I, ConstantKey<?> F) { Object v = F.getValue(); // FIXME: current only constant string are handled if (I.getConcreteType().getClassLoader().getLanguage().modelConstant(v)) { IField f = I.getConcreteType().getField(Atom.findOrCreateUnicodeAtom(String.valueOf(v))); return getPointerKeyForInstanceField(I, f); } return null; }
/** * if F is a supported constant representing a field, return the corresponding {@link InstanceFieldKey} for I. Otherwise, return {@code null}. */ protected PointerKey getInstanceFieldPointerKeyForConstant(InstanceKey I, ConstantKey<?> F) { Object v = F.getValue(); // FIXME: current only constant string are handled if (I.getConcreteType().getClassLoader().getLanguage().modelConstant(v)) { IField f = I.getConcreteType().getField(Atom.findOrCreateUnicodeAtom(String.valueOf(v))); return getPointerKeyForInstanceField(I, f); } return null; }
private MethodReference computeMethodReference() { try { Atom name = Atom.findOrCreateUnicodeAtom(getMethodName()); ImmutableByteArray desc = ImmutableByteArray.make(getMethodSignature()); Descriptor D = Descriptor.findOrCreate(declaringClass.getClassLoader().getLanguage(), desc); return MethodReference.findOrCreate(declaringClass.getReference(), name, D); } catch (InvalidClassFileException e) { Assertions.UNREACHABLE(); return null; } }
private MethodReference computeMethodReference() { try { Atom name = Atom.findOrCreateUnicodeAtom(getMethodName()); ImmutableByteArray desc = ImmutableByteArray.make(getMethodSignature()); Descriptor D = Descriptor.findOrCreate(declaringClass.getClassLoader().getLanguage(), desc); return MethodReference.findOrCreate(declaringClass.getReference(), name, D); } catch (InvalidClassFileException e) { Assertions.UNREACHABLE(); return null; } }
protected JavaField(CAstEntity fieldEntity, IClassLoader loader, IClass declaringClass, Collection<Annotation> annotations) { super(FieldReference.findOrCreate(declaringClass.getReference(), Atom.findOrCreateUnicodeAtom(fieldEntity.getName()), TypeReference.findOrCreate(loader.getReference(), TypeName.string2TypeName(fieldEntity.getType().getName()))), fieldEntity.getQualifiers(), declaringClass, declaringClass.getClassHierarchy(), annotations); } }
protected JavaField(CAstEntity fieldEntity, IClassLoader loader, IClass declaringClass, Collection<Annotation> annotations) { super(FieldReference.findOrCreate(declaringClass.getReference(), Atom.findOrCreateUnicodeAtom(fieldEntity.getName()), TypeReference.findOrCreate(loader.getReference(), TypeName.string2TypeName(fieldEntity.getType().getName()))), fieldEntity.getQualifiers(), declaringClass, declaringClass.getClassHierarchy(), annotations); } }
@Test public void testIR1() { // 'remove' is a nice short method doMethod(cha.getScope().findMethod(AnalysisScope.APPLICATION, "Ljava/util/HashMap", Atom.findOrCreateUnicodeAtom("remove"), new ImmutableByteArray(UTF8Convert.toUTF8("(Ljava/lang/Object;)Ljava/lang/Object;")))); }
public static CGNode findMainMethod(CallGraph cg) { Descriptor d = Descriptor.findOrCreateUTF8("([Ljava/lang/String;)V"); Atom name = Atom.findOrCreateUnicodeAtom("main"); for (CGNode n : Iterator2Iterable.make(cg.getSuccNodes(cg.getFakeRootNode()))) { if (n.getMethod().getName().equals(name) && n.getMethod().getDescriptor().equals(d)) { return n; } } Assertions.UNREACHABLE("failed to find method"); return null; }