summaryrefslogtreecommitdiff
path: root/src/main/java/ftbsc/lll/tools/debug/BytecodePrinter.java
diff options
context:
space:
mode:
author zaaarf <me@zaaarf.foo>2024-01-24 17:16:50 +0100
committer zaaarf <me@zaaarf.foo>2024-01-24 17:16:50 +0100
commitd06b6211bc0815c36d44c65312c097058901b1c5 (patch)
tree1a942f8d9dfd08ff8f06c576f63ba0663ce051b0 /src/main/java/ftbsc/lll/tools/debug/BytecodePrinter.java
parent660730086dc6b8895eb871a3df98956041453983 (diff)
chore: internal reorganisation (breaking)0.5.0
Diffstat (limited to 'src/main/java/ftbsc/lll/tools/debug/BytecodePrinter.java')
-rw-r--r--src/main/java/ftbsc/lll/tools/debug/BytecodePrinter.java79
1 files changed, 0 insertions, 79 deletions
diff --git a/src/main/java/ftbsc/lll/tools/debug/BytecodePrinter.java b/src/main/java/ftbsc/lll/tools/debug/BytecodePrinter.java
deleted file mode 100644
index b6dd8db..0000000
--- a/src/main/java/ftbsc/lll/tools/debug/BytecodePrinter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package ftbsc.lll.tools.debug;
-
-import org.apache.logging.log4j.Logger;
-import org.objectweb.asm.tree.AbstractInsnNode;
-import org.objectweb.asm.tree.MethodNode;
-import org.objectweb.asm.util.Printer;
-import org.objectweb.asm.util.Textifier;
-import org.objectweb.asm.util.TraceMethodVisitor;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-
-/**
- * A collection of static methods for debugging by printing the ASM bytecode.
- * These methods are only for debug, so most of the time they should stay unused.
- */
-public class BytecodePrinter {
-
- /**
- * Used for converting visit events to text, acts pretty much like a buffer in our case.
- */
- private static final Printer PRINTER = new Textifier();
-
- /**
- * MethodVisitor that visits the method and prints it to a given printer.
- */
- private static final TraceMethodVisitor MP = new TraceMethodVisitor(PRINTER);
-
- /**
- * Prints the bytecode of a method using System.out.print().
- * @param main the method to print
- */
- public static void printMethod(final MethodNode main) {
- for (AbstractInsnNode i : main.instructions.toArray())
- System.out.print(insnToString(i));
- }
-
- /**
- * Logs the bytecode of a method using the ASM logger.
- * @param main the method to print
- * @param logger the Log4j {@link Logger} to print it with
- */
- public static void logMethod(final MethodNode main, final Logger logger) {
- for (AbstractInsnNode i : main.instructions.toArray())
- logger.debug(insnToString(i));
- }
-
- /**
- * Logs the bytecode of a method to a file.
- * @param main the method to print
- * @param path the file to log it to
- */
- public static void logMethod(final MethodNode main, String path) {
- StringBuilder out = new StringBuilder();
- for (AbstractInsnNode i : main.instructions.toArray())
- out.append(insnToString(i));
- try {
- Files.write(Paths.get(path), out.toString().getBytes());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Converts an instruction node to a String.
- * @param insn the node to convert
- * @return the converted string
- */
- public static String insnToString(AbstractInsnNode insn) {
- insn.accept(MP);
- StringWriter sw = new StringWriter();
- PRINTER.print(new PrintWriter(sw));
- PRINTER.getText().clear();
- return sw.toString();
- }
-} \ No newline at end of file