diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/DelegatingAstPointerKeys.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/DelegatingAstPointerKeys.java index 8cffa1e27..40351f009 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/DelegatingAstPointerKeys.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/DelegatingAstPointerKeys.java @@ -106,8 +106,8 @@ public class DelegatingAstPointerKeys implements AstPointerKeyFactory { protected PointerKey getInstanceFieldPointerKeyForConstant(InstanceKey I, ConstantKey F) { Object v = F.getValue(); // FIXME: current only constant string are handled - if (v instanceof String) { - IField f = I.getConcreteType().getField(Atom.findOrCreateUnicodeAtom((String) v)); + if (I.getConcreteType().getClassLoader().getLanguage().modelConstant(v)) { + IField f = I.getConcreteType().getField(Atom.findOrCreateUnicodeAtom(String.valueOf(v))); return getPointerKeyForInstanceField(I, f); } return null; diff --git a/com.ibm.wala.core/src/com/ibm/wala/classLoader/Language.java b/com.ibm.wala.core/src/com/ibm/wala/classLoader/Language.java index 88c9a4fd9..1ceb63be4 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/classLoader/Language.java +++ b/com.ibm.wala.core/src/com/ibm/wala/classLoader/Language.java @@ -154,4 +154,7 @@ public interface Language { AbstractRootMethod getFakeRootMethod(IClassHierarchy cha, AnalysisOptions options, IAnalysisCacheView cache); InducedCFG makeInducedCFG(SSAInstruction[] instructions, IMethod method, Context context); + + boolean modelConstant(Object o); + } diff --git a/com.ibm.wala.core/src/com/ibm/wala/classLoader/LanguageImpl.java b/com.ibm.wala.core/src/com/ibm/wala/classLoader/LanguageImpl.java index 71a9b507f..d74c62492 100644 --- a/com.ibm.wala.core/src/com/ibm/wala/classLoader/LanguageImpl.java +++ b/com.ibm.wala.core/src/com/ibm/wala/classLoader/LanguageImpl.java @@ -74,4 +74,11 @@ public abstract class LanguageImpl implements Language { InducedCFG makeInducedCFG(SSAInstruction[] instructions, IMethod method, Context context) { return new InducedCFG(instructions, method, context); } + + @Override + public boolean modelConstant(Object o) { + return o instanceof String; + } + + }