public final class Util
extends java.lang.Object
In the documentation below, we refer to a 'Java class name'. These are formatted according to the rules for Class.forName() and Class.getName(). A Java class name must use '$' to separate inner class names from their containing class. There is no way to for Shrike to disambiguate 'A.B' otherwise.
| Modifier and Type | Method and Description |
|---|---|
static com.ibm.wala.util.collections.Pair<boolean[],boolean[]> |
computeBasicBlocks(IInstruction[] instructions,
ExceptionHandler[][] handlers) |
static java.lang.String |
computeSignature(java.lang.Class<?>[] params,
java.lang.Class<?> result)
Given a Java Method, compute the VM-style type signature.
|
static void |
error(java.lang.String s)
General "print an error" routine.
|
static java.lang.reflect.Method |
findMethod(java.lang.Class<?> c,
java.lang.String name) |
static java.lang.reflect.Method |
findMethod(java.lang.Class<?> c,
java.lang.String name,
java.lang.Class<?>[] paramTypes) |
static int |
getParamsCount(java.lang.String type)
Compute the number of parameters given by method signature "type".
|
static java.lang.String[] |
getParamsTypes(java.lang.String thisClassType,
java.lang.String type)
Extract the types of the parameters given by method signature "type".
|
static java.lang.String[] |
getParamsTypesInLocals(java.lang.String thisClassType,
java.lang.String type)
Compute the types of the local variables on entry to a method.
|
static int |
getParamsWordSize(java.lang.String type)
Compute the total number of JVM "stack words" occupied by the method parameters for method
signature "type".
|
static java.lang.String |
getReturnType(java.lang.String s)
Get the return type from a method signature.
|
static java.lang.String |
getStackType(java.lang.String t)
Compute the promoted type that the JVM uses to manipulate values of type "t" on its working
stack.
|
static byte |
getWordSize(java.lang.String s) |
static boolean |
isArrayType(java.lang.String t) |
static boolean |
isPrimitiveType(java.lang.String t) |
static java.lang.String |
makeArray(java.lang.String t)
Compute the type "array of t".
|
static java.lang.String |
makeClass(java.lang.String t)
Convert a JVM type name back into a Java class name.
|
static GetInstruction |
makeGet(java.lang.Class<?> c,
java.lang.String name)
Make an Instruction which loads the value of a field, given its name and Java Class.
|
static InvokeInstruction |
makeInvoke(java.lang.Class<?> c,
java.lang.String name)
Make an Instruction which calls a method, given its name and Java Class.
|
static InvokeInstruction |
makeInvoke(java.lang.Class<?> c,
java.lang.String name,
java.lang.Class<?>[] paramTypes)
Make an Instruction which calls a method, given its name, Java Class, and a list of parameter
classes to use for overload resolution.
|
static PutInstruction |
makePut(java.lang.Class<?> c,
java.lang.String name)
Make an Instruction which stores the value of a field, given its name and Java Class.
|
static java.lang.String |
makeType(java.lang.Class<?> c)
Compute the JVM type name for an actual Java class.
|
static java.lang.String |
makeType(java.lang.String c)
Convert a fully-qualified Java class name ('.' separated) into an internal JVM type name ('/'
separated, starting with 'L' and ending with ';').
|
static java.lang.String |
makeTypeAll(java.lang.String c)
Convert a fully-qualified Java type name (either primitive or class name, '.' separated) into
an internal JVM type name (one letter for primitive and '/' separated, starting with 'L' and
ending with ';' for class name).
|
static byte[] |
readFully(java.io.InputStream s) |
static void |
readFully(java.io.InputStream s,
byte[] bytes) |
public static byte getWordSize(java.lang.String s)
java.lang.IllegalArgumentException - if s is nullpublic static int getParamsWordSize(java.lang.String type)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException - if type is nullpublic static java.lang.String makeType(java.lang.String c)
java.lang.IllegalArgumentException - if c is nullpublic static java.lang.String makeTypeAll(java.lang.String c)
public static java.lang.String makeClass(java.lang.String t)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException - if t is nullpublic static java.lang.String makeType(java.lang.Class<?> c)
java.lang.IllegalArgumentException - if c is nullpublic static int getParamsCount(java.lang.String type)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException - if type == nullpublic static java.lang.String[] getParamsTypes(java.lang.String thisClassType,
java.lang.String type)
throws java.lang.IllegalArgumentException
thisClassType - null if the method is static, otherwise the type of "this"java.lang.IllegalArgumentException - if type == nullpublic static java.lang.String[] getParamsTypesInLocals(java.lang.String thisClassType,
java.lang.String type)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException - if type == nullpublic static java.lang.String getStackType(java.lang.String t)
java.lang.IllegalArgumentException - if t is nullpublic static java.lang.String makeArray(java.lang.String t)
public static boolean isArrayType(java.lang.String t)
public static boolean isPrimitiveType(java.lang.String t)
public static java.lang.String getReturnType(java.lang.String s)
java.lang.IllegalArgumentException - if s is nullpublic static void error(java.lang.String s)
public static java.lang.String computeSignature(java.lang.Class<?>[] params,
java.lang.Class<?> result)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException - if params == nullpublic static GetInstruction makeGet(java.lang.Class<?> c, java.lang.String name)
java.lang.IllegalArgumentException - if c is nullpublic static PutInstruction makePut(java.lang.Class<?> c, java.lang.String name)
java.lang.IllegalArgumentException - if c is nullpublic static java.lang.reflect.Method findMethod(java.lang.Class<?> c,
java.lang.String name)
public static java.lang.reflect.Method findMethod(java.lang.Class<?> c,
java.lang.String name,
java.lang.Class<?>[] paramTypes)
public static InvokeInstruction makeInvoke(java.lang.Class<?> c, java.lang.String name, java.lang.Class<?>[] paramTypes)
java.lang.IllegalArgumentException - if name is nullpublic static InvokeInstruction makeInvoke(java.lang.Class<?> c, java.lang.String name)
java.lang.IllegalArgumentException - if name is nullpublic static void readFully(java.io.InputStream s,
byte[] bytes)
throws java.lang.IllegalArgumentException,
java.lang.IllegalArgumentException,
java.io.IOException
java.lang.IllegalArgumentExceptionjava.io.IOExceptionpublic static byte[] readFully(java.io.InputStream s)
throws java.io.IOException
java.io.IOExceptionpublic static com.ibm.wala.util.collections.Pair<boolean[],boolean[]> computeBasicBlocks(IInstruction[] instructions, ExceptionHandler[][] handlers)