package lto.instrument;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
import lto.libinfo.LibInfo;
import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.JavaClass;
import org.apache.bcel.generic.ClassGen;
public class Transformer implements ClassFileTransformer
{
private LibInfo li;
public Transformer(LibInfo li) {
this.li = li;
System.out.println(this.li);
}
@Override
public byte[] transform(ClassLoader cl, String name, Class<?> type, ProtectionDomain domain, byte[] code)
throws IllegalClassFormatException {
if (name.startsWith("java"))
return code;
try {
ClassParser cp = new ClassParser(new ByteArrayInputStream(code), name + ".java");
JavaClass jc = cp.parse();
ClassGen cg = new ClassGen(jc);
System.out.println("This is when " + cg.getClassName() + " would be optimized.");
} catch (IOException e) {
throw new RuntimeException("Cannot find class: " + name, e);
}
return code;
}
}