Refine search
private static void printClassBytes(byte[] byteCode) { if (DEBUG) { TraceClassVisitor visitor = new TraceClassVisitor(new PrintWriter(System.out)); new ClassReader(byteCode).accept(visitor, 0); } }
@Override public String toString() { final StringWriter writer = new StringWriter(); this.rawNode.accept(new TraceClassVisitor(null, new Textifier(), new PrintWriter( writer))); return writer.toString(); }
public void toWriter(Writer writer, int flags){ PrintWriter printWriter = new PrintWriter(writer); TraceClassVisitor traceClassVisitor = new TraceClassVisitor(null, printWriter); classReader.accept(traceClassVisitor, flags); }
public static void debugByteCode(ClassDefinition classDefinition, PrintWriter writer) { ClassReader reader = new ClassReader(classDefinition.getBytecode()); reader.accept(new CheckClassAdapter(new TraceClassVisitor(writer)), 0); File file = new File("/tmp/" + classDefinition.getInternalName() + ".class"); file.getParentFile().mkdirs(); writer.println(file); writer.flush(); try { ByteStreams.write(classDefinition.getBytecode(), Files.newOutputStreamSupplier(file)); } catch (IOException e) { e.printStackTrace(); } }
/** * Outputs the bytecode generated as a textual representation * * @param pw * The PrintWriter the textual representation is written to */ public void generateTextualRepresentation(PrintWriter pw) { cv = new TraceClassVisitor(pw); generateByteCode(); }
TraceClassVisitor cw = new TraceClassVisitor(new PrintWriter(System.out));
private void validateClass(ClassReader reader, ClassLoader loader) { StringWriter writer = new StringWriter(); PrintWriter printWriter = new PrintWriter(writer); Exception error = null; try { CheckClassAdapter.verify(reader, loader, false, printWriter); } catch (Exception e) { error = e; } String contents = writer.toString(); if (error != null || contents.length() > 0) { reader.accept(new TraceClassVisitor(printWriter), 0); throw new IllegalStateException(writer.toString(), error); } }
public static void debugByteCode(ClassDefinition classDefinition, PrintWriter writer) { ClassReader reader = new ClassReader(classDefinition.getBytecode()); reader.accept(new CheckClassAdapter(new TraceClassVisitor(writer)), 0); File file = new File("/tmp/" + classDefinition.getInternalName() + ".class"); file.getParentFile().mkdirs(); writer.println(file); writer.flush(); try { ByteStreams.write(classDefinition.getBytecode(), Files.newOutputStreamSupplier(file)); } catch (IOException e) { e.printStackTrace(); } }
/** * Returns the decompiled byte code. * * @param bytes * the class byte code * @param simpleTypes * {@code true} to use simple type representation * @return the decompiled byte code */ public static String toByteCode(byte[] bytes, boolean simpleTypes) { Printer p = simpleTypes ? new SimpleTypeTextifier() : new Textifier(); return toByteCode(new TraceClassVisitor(null, p, null), p, bytes); }
protected String asmify(byte[] bytecode) { if (bytecode == null) { return ""; } StringWriter sw = new StringWriter(); TraceClassVisitor acv = new TraceClassVisitor(new PrintWriter(sw)); new org.objectweb.asm.ClassReader(bytecode).accept(acv, 0); return sw.toString(); }
public TrampolineClassGenerator(String className) { cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); cv = new TraceClassVisitor(cw, new PrintWriter(System.out)); if(GimpleCompiler.TRACE) { cv = new TraceClassVisitor(cw, new PrintWriter(System.out)); } else { cv = cw; } cv.visit(V1_6, ACC_PUBLIC + ACC_SUPER, className, null, "java/lang/Object", new String[0]); emitDefaultConstructor(); }
public static String getContentForMethod(ClassReader classReader, String methodName, String desc, boolean newLine) { StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); TraceClassVisitor traceClassVisitor = new TraceClassVisitor(null, new MethodTextifier(), printWriter); FilterClassVisitor myClassVisitor = new FilterClassVisitor(traceClassVisitor, methodName, desc); classReader.accept(myClassVisitor, ClassReader.SKIP_DEBUG); BufferedReader reader = new BufferedReader(new StringReader(stringWriter.toString())); StringBuilder builder = new StringBuilder();
public static void debugByteCode(ClassDefinition classDefinition, PrintWriter writer) { ClassReader reader = new ClassReader(classDefinition.getBytecode()); reader.accept(new CheckClassAdapter(new TraceClassVisitor(writer)), 0); File file = new File("/tmp/" + classDefinition.getInternalName() + ".class"); file.getParentFile().mkdirs(); writer.println(file); writer.flush(); try { ByteStreams.write(classDefinition.getBytecode(), Files.newOutputStreamSupplier(file)); } catch (IOException e) { e.printStackTrace(); } }
visitor = new TraceClassVisitor(visitor, debugStream, null);
private ClassNode loadClass(String name) { return Try.apply(() -> { String cname = name.replace("/", "."); ClassNode node = cache.get(cname); if (node == null) { String rname = cname.replace(".", "/") + ".class"; try (InputStream in = loader.getResourceAsStream(rname)) { if (in == null) { throw new FileNotFoundException(rname + " using " + loader); } ClassReader reader = new ClassReader(ByteStreams.toByteArray(in)); node = new ClassNode(); reader.accept(node, 0); cache.put(cname, node); if (log.isDebugEnabled()) { log.info("Source: {}; Class: {}", node.sourceFile, node.name); reader.accept( new TraceClassVisitor(null, new ASMifier(), new PrintWriter(writer(log, name))), 0); } } } return node; }).get(); }
@Override protected ClassVisitor classVisitorFactory(ClassWriter cw) { // ClassVisitor cc = new CheckClassAdapter(cw); ClassVisitor cc = cw; if (DebugProperties.TRACE_BYTECODE) { cc = new TraceClassVisitor(cc, new PrintWriter(MutationPreMain.sysout)); } return new MutationsCollectorClassAdapter(cc, mpc); } }
cv = new TraceClassVisitor(cv, new PrintWriter(System.err)); reader.accept(cn, readFlags); logger.info("Starting transformation of " + className); reader.accept(cv, readFlags);
final ClassReader classReader = new ClassReader(classfileBuffer); final ClassWriter classWriter = new ClassWriter(classReader, 0); ClassVisitor traceClassVisitor = classWriter; try { if (showTransformedClassFolder != null) { tracePrintWriter = new PrintWriter(new File(showTransformedClassFolder, className.replace('/', '_') + ".asm")); traceClassVisitor = new TraceClassVisitor(classWriter, tracePrintWriter); classReader.accept(new ClassVisitor(useASMExperimental ? Opcodes.ASM7_EXPERIMENTAL : Opcodes.ASM6, traceClassVisitor) { } finally { if (tracePrintWriter != null) { tracePrintWriter.close();
@Override protected ClassVisitor classVisitorFactory(ClassWriter cw) { ClassVisitor cv = cw; if (DebugProperties.TRACE_BYTECODE) { cv = new TraceClassVisitor(cv, new PrintWriter( MutationPreMain.sysout)); } return new MutationsClassAdapter(cv, mm); }
private void writeBytecodeToDisk(final byte[] clazz, Path folder) throws IOException { final ClassReader reader = new ClassReader(clazz); final CharArrayWriter buffer = new CharArrayWriter(); reader.accept(new TraceClassVisitor(null, new Textifier(), new PrintWriter( buffer)), ClassReader.EXPAND_FRAMES); final Path outFile = folder.resolve(this.currentClass.asJavaName() + ".txt"); Files.write(outFile, Collections.singleton(buffer.toString()), StandardCharsets.UTF_8, StandardOpenOption.CREATE); }