public class JavaLanguage extends LanguageImpl implements BytecodeLanguage, com.ibm.wala.shrikeBT.Constants
Language which defines Java semantics.| Modifier and Type | Class and Description |
|---|---|
static class |
JavaLanguage.JavaInstructionFactory |
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_Class, CONSTANT_Double, CONSTANT_FieldRef, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodRef, CONSTANT_InvokeDynamic, CONSTANT_Long, CONSTANT_MethodHandle, CONSTANT_MethodRef, CONSTANT_MethodType, CONSTANT_NameAndType, CONSTANT_String, CONSTANT_Utf8, indexedTypes, indexedTypes_T, MAYBE, NO, OP_aaload, OP_aastore, OP_aconst_null, OP_aload, OP_aload_0, OP_aload_1, OP_aload_2, OP_aload_3, OP_anewarray, OP_areturn, OP_arraylength, OP_astore, OP_astore_0, OP_astore_1, OP_astore_2, OP_astore_3, OP_athrow, OP_baload, OP_bastore, OP_bipush, OP_caload, OP_castore, OP_checkcast, OP_d2f, OP_d2i, OP_d2l, OP_dadd, OP_daload, OP_dastore, OP_dcmpg, OP_dcmpl, OP_dconst_0, OP_dconst_1, OP_ddiv, OP_dload, OP_dload_0, OP_dload_1, OP_dload_2, OP_dload_3, OP_dmul, OP_dneg, OP_drem, OP_dreturn, OP_dstore, OP_dstore_0, OP_dstore_1, OP_dstore_2, OP_dstore_3, OP_dsub, OP_dup, OP_dup_x1, OP_dup_x2, OP_dup2, OP_dup2_x1, OP_dup2_x2, OP_f2d, OP_f2i, OP_f2l, OP_fadd, OP_faload, OP_fastore, OP_fcmpg, OP_fcmpl, OP_fconst_0, OP_fconst_1, OP_fconst_2, OP_fdiv, OP_fload, OP_fload_0, OP_fload_1, OP_fload_2, OP_fload_3, OP_fmul, OP_fneg, OP_frem, OP_freturn, OP_fstore, OP_fstore_0, OP_fstore_1, OP_fstore_2, OP_fstore_3, OP_fsub, OP_getfield, OP_getstatic, OP_goto, OP_goto_w, OP_i2b, OP_i2c, OP_i2d, OP_i2f, OP_i2l, OP_i2s, OP_iadd, OP_iaload, OP_iand, OP_iastore, OP_iconst_0, OP_iconst_1, OP_iconst_2, OP_iconst_3, OP_iconst_4, OP_iconst_5, OP_iconst_m1, OP_idiv, OP_if_acmpeq, OP_if_acmpne, OP_if_icmpeq, OP_if_icmpge, OP_if_icmpgt, OP_if_icmple, OP_if_icmplt, OP_if_icmpne, OP_ifeq, OP_ifge, OP_ifgt, OP_ifle, OP_iflt, OP_ifne, OP_ifnonnull, OP_ifnull, OP_iinc, OP_iload, OP_iload_0, OP_iload_1, OP_iload_2, OP_iload_3, OP_imul, OP_ineg, OP_instanceof, OP_invokedynamic, OP_invokeinterface, OP_invokespecial, OP_invokestatic, OP_invokevirtual, OP_ior, OP_irem, OP_ireturn, OP_ishl, OP_ishr, OP_istore, OP_istore_0, OP_istore_1, OP_istore_2, OP_istore_3, OP_isub, OP_iushr, OP_ixor, OP_jsr, OP_jsr_w, OP_l2d, OP_l2f, OP_l2i, OP_ladd, OP_laload, OP_land, OP_lastore, OP_lcmp, OP_lconst_0, OP_lconst_1, OP_ldc, OP_ldc_w, OP_ldc2_w, OP_ldiv, OP_lload, OP_lload_0, OP_lload_1, OP_lload_2, OP_lload_3, OP_lmul, OP_lneg, OP_lookupswitch, OP_lor, OP_lrem, OP_lreturn, OP_lshl, OP_lshr, OP_lstore, OP_lstore_0, OP_lstore_1, OP_lstore_2, OP_lstore_3, OP_lsub, OP_lushr, OP_lxor, OP_monitorenter, OP_monitorexit, OP_multianewarray, OP_new, OP_newarray, OP_nop, OP_pop, OP_pop2, OP_putfield, OP_putstatic, OP_ret, OP_return, OP_saload, OP_sastore, OP_sipush, OP_swap, OP_tableswitch, OP_wide, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TYPE_boolean, TYPE_boolean_index, TYPE_byte, TYPE_byte_index, TYPE_char, TYPE_char_index, TYPE_Class, TYPE_double, TYPE_double_index, TYPE_Error, TYPE_Exception, TYPE_float, TYPE_float_index, TYPE_int, TYPE_int_index, TYPE_long, TYPE_long_index, TYPE_MethodHandle, TYPE_MethodType, TYPE_null, TYPE_Object, TYPE_Object_index, TYPE_RuntimeException, TYPE_short, TYPE_short_index, TYPE_String, TYPE_Throwable, TYPE_unknown, TYPE_void, YES| Constructor and Description |
|---|
JavaLanguage() |
| Modifier and Type | Method and Description |
|---|---|
static java.util.Collection<TypeReference> |
getAaStoreExceptions() |
static java.util.Collection<TypeReference> |
getArithmeticException() |
static java.util.Collection<TypeReference> |
getArrayAccessExceptions() |
TypeReference[] |
getArrayInterfaces()
get the interfaces implemented by all arrays in the language
|
static java.util.Collection<TypeReference> |
getClassCastException() |
static java.util.Collection<TypeReference> |
getClassNotFoundException() |
TypeReference |
getConstantType(java.lang.Object o)
Given a Java constant o, return the appropriate language type to associate with the constant.
|
static java.util.Collection<TypeReference> |
getExceptionInInitializerError() |
AbstractRootMethod |
getFakeRootMethod(IClassHierarchy cha,
AnalysisOptions options,
IAnalysisCacheView cache) |
java.util.Collection<TypeReference> |
getImplicitExceptionTypes(com.ibm.wala.shrikeBT.IInstruction pei) |
MethodReference |
getInvokeMethodReference(ClassLoaderReference loader,
com.ibm.wala.shrikeBT.IInvokeInstruction instruction) |
java.lang.Object |
getMetadataToken(java.lang.Object value)
Get the representation of the meta-data corresponding to value.
|
Atom |
getName()
What is the name of the language?
|
static java.util.Collection<TypeReference> |
getNewArrayExceptions() |
static java.util.Collection<TypeReference> |
getNewSafeArrayExceptions() |
static java.util.Collection<TypeReference> |
getNewScalarExceptions() |
static java.util.Collection<TypeReference> |
getNullPointerException() |
TypeReference |
getPointerType(TypeReference pointee) |
PrimitiveType |
getPrimitive(TypeReference reference)
get the abstraction of a primitive type to be used for type inference
|
TypeReference |
getRootType()
What is the root type in a type hierarchy for this language? e.g.
|
TypeReference |
getStringType() |
TypeReference |
getThrowableType()
What is the root type of exceptions in this language? e.g.
|
java.util.Collection<TypeReference> |
inferInvokeExceptions(MethodReference target,
IClassHierarchy cha)
determine the set of possible exception types a call to target may throw
|
SSAInstructionFactory |
instructionFactory() |
boolean |
isBooleanType(TypeReference type) |
boolean |
isCharType(TypeReference type) |
boolean |
isDoubleType(TypeReference type) |
boolean |
isFloatType(TypeReference type) |
boolean |
isIntType(TypeReference type) |
boolean |
isLongType(TypeReference type) |
boolean |
isMetadataType(TypeReference type)
Is t a "metadata" type for the language, i.e., a type describing some other type (e.g.,
java.lang.Class for Java)?
|
boolean |
isNullType(TypeReference type)
Is t the type of the language's null value? Should return true if
t == null (?). |
boolean |
isStringType(TypeReference type) |
boolean |
isVoidType(TypeReference type) |
TypeName |
lookupPrimitiveType(java.lang.String name)
Given a source-level primitive type name, get the corresponding "low-level" type name, e.g.,
the corresponding character to use in a Java method descriptor
|
<T extends InstanceKey> |
makeModVisitor(CGNode n,
java.util.Collection<PointerKey> result,
PointerAnalysis<T> pa,
ExtendedHeapModel h,
boolean ignoreAllocHeapDefs) |
<T extends InstanceKey> |
makeRefVisitor(CGNode n,
java.util.Collection<PointerKey> result,
PointerAnalysis<T> pa,
ExtendedHeapModel h) |
boolean |
methodsHaveDeclaredParameterTypes()
do MethodReference objects have declared parameter types?
|
equals, getBaseLanguage, getDerivedLanguages, hashCode, makeInducedCFG, modelConstant, registerDerivedLanguage, toStringclone, finalize, getClass, notify, notifyAll, wait, wait, waitgetBaseLanguage, getDerivedLanguages, makeInducedCFG, modelConstant, registerDerivedLanguagepublic static java.util.Collection<TypeReference> getAaStoreExceptions()
public static java.util.Collection<TypeReference> getArithmeticException()
public static java.util.Collection<TypeReference> getArrayAccessExceptions()
public static java.util.Collection<TypeReference> getClassCastException()
public static java.util.Collection<TypeReference> getClassNotFoundException()
public static java.util.Collection<TypeReference> getNewArrayExceptions()
public static java.util.Collection<TypeReference> getNewSafeArrayExceptions()
public static java.util.Collection<TypeReference> getNewScalarExceptions()
public static java.util.Collection<TypeReference> getNullPointerException()
public static java.util.Collection<TypeReference> getExceptionInInitializerError()
public Atom getName()
Languagepublic TypeReference getRootType()
LanguagegetRootType in interface Languagepublic TypeReference getThrowableType()
LanguagegetThrowableType in interface Languagepublic TypeReference getConstantType(java.lang.Object o)
LanguagegetConstantType in interface Languagepublic boolean isNullType(TypeReference type)
Languaget == null (?).isNullType in interface Languagepublic TypeReference[] getArrayInterfaces()
LanguagegetArrayInterfaces in interface Languagepublic TypeName lookupPrimitiveType(java.lang.String name)
LanguagelookupPrimitiveType in interface Languagepublic java.util.Collection<TypeReference> inferInvokeExceptions(MethodReference target, IClassHierarchy cha) throws com.ibm.wala.shrikeCT.InvalidClassFileException
LanguageinferInvokeExceptions in interface LanguageCollection<TypeReference>, set of exception types a call to a
declared target might throw.java.lang.IllegalArgumentException - if target is nulljava.lang.IllegalArgumentException - if cha is nullcom.ibm.wala.shrikeCT.InvalidClassFileExceptionpublic java.util.Collection<TypeReference> getImplicitExceptionTypes(com.ibm.wala.shrikeBT.IInstruction pei)
getImplicitExceptionTypes in interface BytecodeLanguagepei - a potentially-excepting instructionNotes
java.lang.IllegalArgumentException - if pei is nullpublic SSAInstructionFactory instructionFactory()
instructionFactory in interface Languagepublic boolean isDoubleType(TypeReference type)
isDoubleType in interface Languagepublic boolean isFloatType(TypeReference type)
isFloatType in interface Languagepublic boolean isIntType(TypeReference type)
public boolean isLongType(TypeReference type)
isLongType in interface Languagepublic boolean isVoidType(TypeReference type)
isVoidType in interface Languagepublic boolean isMetadataType(TypeReference type)
LanguageisMetadataType in interface Languagepublic boolean isStringType(TypeReference type)
isStringType in interface Languagepublic boolean isBooleanType(TypeReference type)
isBooleanType in interface Languagepublic boolean isCharType(TypeReference type)
isCharType in interface Languagepublic java.lang.Object getMetadataToken(java.lang.Object value)
LanguageTypeReference.
The returned object should be appropriate for use as the token in an SSALoadMetadataInstruction for the languagegetMetadataToken in interface Languagepublic TypeReference getPointerType(TypeReference pointee) throws java.lang.UnsupportedOperationException
getPointerType in interface Languagejava.lang.UnsupportedOperationExceptionpublic TypeReference getStringType()
getStringType in interface Languagepublic PrimitiveType getPrimitive(TypeReference reference)
LanguagegetPrimitive in interface LanguageTypeInferencepublic MethodReference getInvokeMethodReference(ClassLoaderReference loader, com.ibm.wala.shrikeBT.IInvokeInstruction instruction)
getInvokeMethodReference in interface BytecodeLanguagepublic boolean methodsHaveDeclaredParameterTypes()
LanguagemethodsHaveDeclaredParameterTypes in interface Languagepublic AbstractRootMethod getFakeRootMethod(IClassHierarchy cha, AnalysisOptions options, IAnalysisCacheView cache)
getFakeRootMethod in interface Languagepublic <T extends InstanceKey> ModRef.RefVisitor<T,? extends ExtendedHeapModel> makeRefVisitor(CGNode n, java.util.Collection<PointerKey> result, PointerAnalysis<T> pa, ExtendedHeapModel h)
makeRefVisitor in interface Languagepublic <T extends InstanceKey> ModRef.ModVisitor<T,? extends ExtendedHeapModel> makeModVisitor(CGNode n, java.util.Collection<PointerKey> result, PointerAnalysis<T> pa, ExtendedHeapModel h, boolean ignoreAllocHeapDefs)
makeModVisitor in interface Language