private static byte[] generateClass(String internalClassName, Type testClassType, int iThread, List<Actor> actors, List<Object> objArgs, boolean waitsEnabled) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); CheckClassAdapter cca = new CheckClassAdapter(cw, false); cca.visit(52, ACC_PUBLIC + ACC_SUPER, internalClassName, null, TEST_THREAD_EXECUTION_TYPE.getInternalName(), null); generateConstructor(cca); generateRun(cca, testClassType, iThread, actors, objArgs, waitsEnabled); cca.visitEnd(); return cw.toByteArray(); }
mv.visitEnd(); ca.visitEnd();
@SuppressWarnings("unchecked") public Class<T> generate() { ClassWriter out = new ClassWriter(ClassWriter.COMPUTE_MAXS); CheckClassAdapter writer = new CheckClassAdapter(out); int offset = 0; declareClass(writer); declareConstructor(writer); for (Method getter : inspector.getters) { offset = declareField(getter, writer, offset); } writer.visitEnd(); return (Class<T>) new GeneratedClassLoader(options).defineClass(implementationName, out); }
mv.visitEnd(); cw.visitEnd(); byte[] bytes = cw0.toByteArray();