Package kilim.analysis
Class ClassWeaver
- java.lang.Object
-
- kilim.analysis.ClassWeaver
-
public class ClassWeaver extends java.lang.ObjectThis class is the main entry point for the Weave tool. It uses ClassFlow to parse and analyze a class file, and writes out a CPS transformed file if needed
-
-
Field Summary
Fields Modifier and Type Field Description ClassFlowclassFlow(package private) java.util.List<ClassInfo>classInfoListKilimContextcontext(package private) java.util.ArrayList<SAMweaver>samWeavers(package private) static java.lang.ThreadLocal<java.util.HashMap<java.lang.String,ClassInfo>>stateClasses_
-
Constructor Summary
Constructors Constructor Description ClassWeaver(KilimContext context, java.io.InputStream is)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaccept(org.objectweb.asm.ClassVisitor cv)(package private) voidaddClassInfo(ClassInfo ci)(package private) java.lang.StringcreateStateClass(ValInfoList valInfoList)Create a custom class (structure) to hold the state.java.util.List<ClassInfo>getClassInfos()(package private) java.lang.StringgetName()(package private) SAMweavergetSAMWeaver(java.lang.String owner, java.lang.String methodName, java.lang.String desc, boolean itf)(package private) booleanisInterface()private java.lang.StringmakeClassName(int[] numByType)(package private) booleanneedsWeaving()(package private) booleanneedsWeaving(MethodFlow mf)static voidreset()(package private) static java.lang.String[]toStringArray(java.util.List list)voidweave()
-
-
-
Field Detail
-
classFlow
public ClassFlow classFlow
-
classInfoList
java.util.List<ClassInfo> classInfoList
-
stateClasses_
static java.lang.ThreadLocal<java.util.HashMap<java.lang.String,ClassInfo>> stateClasses_
-
context
public KilimContext context
-
samWeavers
java.util.ArrayList<SAMweaver> samWeavers
-
-
Constructor Detail
-
ClassWeaver
public ClassWeaver(KilimContext context, java.io.InputStream is) throws java.io.IOException
- Throws:
java.io.IOException
-
-
Method Detail
-
reset
public static void reset()
-
weave
public void weave() throws KilimException- Throws:
KilimException
-
accept
private void accept(org.objectweb.asm.ClassVisitor cv)
-
toStringArray
static java.lang.String[] toStringArray(java.util.List list)
-
addClassInfo
void addClassInfo(ClassInfo ci)
-
getClassInfos
public java.util.List<ClassInfo> getClassInfos()
-
needsWeaving
boolean needsWeaving(MethodFlow mf)
-
needsWeaving
boolean needsWeaving()
-
createStateClass
java.lang.String createStateClass(ValInfoList valInfoList)
Create a custom class (structure) to hold the state. The name of the state reflects the numbers of the various VMtypes in valInfoList. class kilim.SO2IJ3 reflects a class that stores two Objects one Integer and 3 longs.class kilim.SO2IJ3 extends kilim.State { public Object f1, f2; public int f3; public long f4, f5, f6; }If there's no data to store, we use the kilim.State class directly to store the basic amount of data necessary to restore the stack.
-
makeClassName
private java.lang.String makeClassName(int[] numByType)
-
isInterface
boolean isInterface()
-
getSAMWeaver
SAMweaver getSAMWeaver(java.lang.String owner, java.lang.String methodName, java.lang.String desc, boolean itf)
-
getName
java.lang.String getName()
-
-