2222import net .lenni0451 .classtransform .utils .ASMUtils ;
2323import net .raphimc .javadowngrader .JavaDowngrader ;
2424import net .raphimc .javadowngrader .RuntimeDepCollector ;
25+ import net .raphimc .javadowngrader .transformer .DowngradeResult ;
26+ import org .objectweb .asm .ClassWriter ;
2527import org .objectweb .asm .tree .ClassNode ;
2628
2729import java .util .function .Predicate ;
@@ -62,10 +64,10 @@ public JavaDowngraderTransformer(final TransformerManager transformerManager, fi
6264 }
6365
6466 JavaDowngraderTransformer (
65- TransformerManager transformerManager ,
66- int targetVersion ,
67- Predicate <String > classFilter ,
68- RuntimeDepCollector depCollector
67+ TransformerManager transformerManager ,
68+ int targetVersion ,
69+ Predicate <String > classFilter ,
70+ RuntimeDepCollector depCollector
6971 ) {
7072 this .transformerManager = transformerManager ;
7173 this .targetVersion = targetVersion ;
@@ -84,10 +86,11 @@ public byte[] transform(String className, byte[] bytecode, boolean calculateStac
8486 }
8587
8688 final ClassNode classNode = ASMUtils .fromBytes (bytecode );
87- JavaDowngrader .downgrade (classNode , this .targetVersion , this .depCollector );
89+ final DowngradeResult result = JavaDowngrader .downgrade (classNode , this .targetVersion , this .depCollector );
8890
8991 if (calculateStackMapFrames ) {
90- return ASMUtils .toBytes (classNode , this .transformerManager .getClassTree (), this .transformerManager .getClassProvider ());
92+ int flags = result .requiresStackMapFrames () ? ClassWriter .COMPUTE_FRAMES : ClassWriter .COMPUTE_MAXS ;
93+ return ASMUtils .toBytes (classNode , this .transformerManager .getClassTree (), this .transformerManager .getClassProvider (), flags );
9194 } else {
9295 return ASMUtils .toStacklessBytes (classNode );
9396 }
@@ -124,10 +127,10 @@ public Builder depCollector(RuntimeDepCollector depCollector) {
124127
125128 public JavaDowngraderTransformer build () {
126129 return new JavaDowngraderTransformer (
127- transformerManager ,
128- targetVersion ,
129- classFilter ,
130- depCollector
130+ transformerManager ,
131+ targetVersion ,
132+ classFilter ,
133+ depCollector
131134 );
132135 }
133136 }
0 commit comments