public static List<File> find(String root) { return find(new File(root)); }
public static List<File> find(File root) { if (!root.isDirectory()) throw new IllegalAccessError(root + " must be a folder."); List<File> klazzes = new ArrayList<File>(); addFiles(klazzes, root); return klazzes; }
private void injectProfilerStubs(ClassMetadata meta) { cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); FieldVisitor fv = cw.visitField(ACC_PRIVATE|ACC_FINAL, "$profiler", meta.profilerClass.getDescriptor(), null, null); fv.visitEnd(); if (!meta.foundInitialize) ClassUtil.injectMethodStub(cw, "initialize"); if (!meta.foundBegin) ClassUtil.injectMethodStub(cw, "begin"); if (!meta.foundEnd) ClassUtil.injectMethodStub(cw, "end"); cr.accept(cw, 0); cr = new ClassReader(cw.toByteArray()); cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); } }
@Override protected Void process(String file) throws IOException { injectProfilerStubs(meta); ClassVisitor cv = new ProfileVisitor(cw, meta); cv = new ProfileAnnotationRemoverWeaver(cv); cr.accept(cv, ClassReader.EXPAND_FRAMES); ClassUtil.writeClass(cw, file); return null; }
if (file != null) ClassUtil.writeClass(cw, file); } catch (Exception e) { e.printStackTrace();
public static List<File> find(String root) { return find(new File(root)); }
@Override protected Void process(String file) throws IOException { injectProfilerStubs(meta); ClassVisitor cv = new ProfileVisitor(cw, meta); cv = new ProfileAnnotationRemoverWeaver(cv); cr.accept(cv, ClassReader.EXPAND_FRAMES); ClassUtil.writeClass(cw, file); return null; }
public static List<File> find(File root) { if (!root.isDirectory()) throw new IllegalAccessError(root + " must be a folder."); List<File> klazzes = new ArrayList<File>(); addFiles(klazzes, root); return klazzes; }
private void injectProfilerStubs(ClassMetadata meta) { cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); FieldVisitor fv = cw.visitField(ACC_PRIVATE|ACC_FINAL, "$profiler", meta.profilerClass.getDescriptor(), null, null); fv.visitEnd(); if (!meta.foundInitialize) ClassUtil.injectMethodStub(cw, "initialize"); if (!meta.foundBegin) ClassUtil.injectMethodStub(cw, "begin"); if (!meta.foundEnd) ClassUtil.injectMethodStub(cw, "end"); cr.accept(cw, 0); cr = new ClassReader(cw.toByteArray()); cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); } }
void execute() { long start = System.currentTimeMillis(); WeaverLog result = new WeaverLog(); List<ClassMetadata> processed = Weaver.rewriteEntitySystems(ClassUtil.find(classRoot), result); if (verbose && processed.size() > 0) { System.out.println(result.getFormattedLog()); } else { System.out.println(getSummary(processed, start)); } }
if (file != null) ClassUtil.writeClass(cw, file); } catch (Exception e) { e.printStackTrace();
private static void addFiles(List<File> files, File folder) { for (File f : folder.listFiles()) { if (f.isFile() && f.getName().endsWith(".class")) files.add(f); else if (f.isDirectory()) addFiles(files, f); } } }
public WeaverLog execute() { WeaverLog log = new WeaverLog(); List<File> classes = ClassUtil.find(targetClasses); rewriteComponents(classes, log); generateLinkMutators(classes, log); rewriteProfilers(classes); if (ClassMetadata.GlobalConfiguration.optimizeEntitySystems) rewriteEntitySystems(classes, log); sort(log); return log; }
if (file != null) ClassUtil.writeClass(cw, file); } catch (Exception e) { throw new WeaverException(e);
private static void addFiles(List<File> files, File folder) { for (File f : folder.listFiles()) { if (f.isFile() && f.getName().endsWith(".class")) files.add(f); else if (f.isDirectory()) addFiles(files, f); } } }
public WeaverLog execute() { WeaverLog log = new WeaverLog(); List<File> classes = ClassUtil.find(targetClasses); rewriteComponents(classes, log); generateLinkMutators(classes, log); rewriteProfilers(classes); if (ClassMetadata.GlobalConfiguration.optimizeEntitySystems) rewriteEntitySystems(classes, log); sort(log); return log; }
if (file != null) ClassUtil.writeClass(cw, file); } catch (Exception e) { throw new WeaverException(e);
@Override protected Void process(String file) throws IOException { cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); ClassVisitor cv = cw; cv = new ClassVisitor(ASM5, cv) { @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); // method is injected by the transplant adapter below if ("processSystem".equals(name) && "()V".equals(desc)) mv = new ProcessInvocationOptimizer(meta, mv); return mv; } }; cv = new ClassMethodTransplantAdapter( sourceType(meta), cv, meta).addMethod("processSystem", "()V"); cv = new OptimizingSystemWeaver(cv, meta); try { cr.accept(cv, ClassReader.EXPAND_FRAMES); if (file != null) ClassUtil.writeClass(cw, file); } catch (Exception e) { throw new WeaverException(e); } return null; }
@Override protected Void process(String file) throws IOException { cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); ClassVisitor cv = cw; cv = new ClassVisitor(ASM5, cv) { @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); // method is injected by the transplant adapter below if ("processSystem".equals(name) && "()V".equals(desc)) mv = new ProcessInvocationOptimizer(meta, mv); return mv; } }; cv = new ClassMethodTransplantAdapter( sourceType(meta), cv, meta).addMethod("processSystem", "()V"); cv = new OptimizingSystemWeaver(cv, meta); try { cr.accept(cv, ClassReader.EXPAND_FRAMES); if (file != null) ClassUtil.writeClass(cw, file); } catch (Exception e) { throw new WeaverException(e); } return null; }
sourceClassReader.accept(cv, ClassReader.EXPAND_FRAMES); if (file != null) ClassUtil.writeClass(cw, file);