@@ -603,6 +603,12 @@ public static void printClassFrames(byte [] classBytes) {
603
603
604
604
//TEMPORARY
605
605
606
+ public static void forceVisitationOfClassFile (byte [] classBytes , ClassInformationFinder classInfoFinder ) {
607
+ ClassReader reader = new ClassReader (classBytes );
608
+ ClassWriter cw = new PatchedClassWriter (ClassWriter .COMPUTE_FRAMES , classInfoFinder );
609
+ reader .accept (cw , ClassReader .EXPAND_FRAMES );
610
+ }
611
+
606
612
public static void getInstructionAtBCI (int bci , byte [] classBytes ) {
607
613
int bciMargin = 3 ;
608
614
ClassReader reader = new ClassReader (classBytes );
@@ -629,21 +635,22 @@ public static void getInstructionAtBCI(int bci, byte [] classBytes) {
629
635
}
630
636
}
631
637
632
- public static void createReadableClassFileFromClassNode (ClassNode cn , String originalName , String targetName , String destDir ) {
638
+ public static void createReadableClassFileFromClassNode (ClassNode cn , boolean isNew , String originalName , String targetName , String destDir ) {
633
639
if (targetName == null || originalName .contains (targetName )) {
634
640
System .out .println ("Weaved composite ClassLoader" );
635
641
ClassWriter cw = new ClassWriter (ClassWriter .COMPUTE_FRAMES );
636
642
cn .accept (cw );
637
643
byte [] classBytes = cw .toByteArray ();
638
- createReadableClassFileFromByteArray (classBytes , originalName , null , destDir );
644
+ createReadableClassFileFromByteArray (classBytes , isNew , originalName , null , destDir );
639
645
}
640
646
}
641
647
642
- public static void createReadableClassFileFromByteArray (byte [] classBytes , String originalName , String targetName , String destDir ){
648
+ public static void createReadableClassFileFromByteArray (byte [] classBytes , boolean isNew , String originalName , String targetName , String destDir ){
649
+ String suffix = isNew ? ".new" : ".old" ;
643
650
if (targetName == null || originalName .contains (targetName )) {
644
651
final File MY_DIRECTORY = new File (destDir );
645
652
try {
646
- File newFile = File .createTempFile (originalName .replace ('/' , '_' ), ".new" , MY_DIRECTORY );
653
+ File newFile = File .createTempFile (originalName .replace ('/' , '_' ), suffix , MY_DIRECTORY );
647
654
PrintWriter pw = new PrintWriter (newFile );
648
655
ClassReader cr = new ClassReader (classBytes );
649
656
org .objectweb .asm .util .TraceClassVisitor mv = new org .objectweb .asm .util .TraceClassVisitor (pw );
0 commit comments