108 UNSHARED_3(false, threeLevelNoop),
109 SHARED_3_NO_STACKMAP(true, threeLevelNoop, ClassFile.StackMapsOption.DROP_STACK_MAPS),
110 SHARED_3_NO_DEBUG(true, threeLevelNoop, ClassFile.DebugElementsOption.DROP_DEBUG, ClassFile.LineNumbersOption.DROP_LINE_NUMBERS),
111 CLASS_REMAPPER(bytes ->
112 ClassRemapper.of(Map.of()).remapClass(ClassFile.of(), ClassFile.of().parse(bytes)));
113
114 // Need ASM, LOW_UNSHARED
115
116 public final UnaryOperator<byte[]> transform;
117 public final boolean shared;
118 public final ClassTransform classTransform;
119 public final ClassFile cc;
120
121 NoOpTransform(UnaryOperator<byte[]> transform) {
122 this.transform = transform;
123 classTransform = null;
124 shared = false;
125 cc = ClassFile.of();
126 }
127
128 NoOpTransform(boolean shared,
129 ClassTransform classTransform,
130 ClassFile.Option... options) {
131 this.shared = shared;
132 this.classTransform = classTransform;
133 this.cc = ClassFile.of(
134 shared
135 ? options
136 : Stream.concat(Stream.of(options), Stream.of(ClassFile.ConstantPoolSharingOption.NEW_POOL)).toArray(ClassFile.Option[]::new));
137 this.transform = bytes -> cc.transformClass(cc.parse(bytes), classTransform);
138 }
139 }
140
141 public enum InjectNopTransform {
142 NOP_SHARED(bytes -> {
143 var cc = ClassFile.of();
144 ClassModel cm = cc.parse(bytes);
145 return cc.transformClass(cm, (cb, ce) -> {
146 if (ce instanceof MethodModel mm) {
147 cb.transformMethod(mm, (mb, me) -> {
|
108 UNSHARED_3(false, threeLevelNoop),
109 SHARED_3_NO_STACKMAP(true, threeLevelNoop, ClassFile.StackMapsOption.DROP_STACK_MAPS),
110 SHARED_3_NO_DEBUG(true, threeLevelNoop, ClassFile.DebugElementsOption.DROP_DEBUG, ClassFile.LineNumbersOption.DROP_LINE_NUMBERS),
111 CLASS_REMAPPER(bytes ->
112 ClassRemapper.of(Map.of()).remapClass(ClassFile.of(), ClassFile.of().parse(bytes)));
113
114 // Need ASM, LOW_UNSHARED
115
116 public final UnaryOperator<byte[]> transform;
117 public final boolean shared;
118 public final ClassTransform classTransform;
119 public final ClassFile cc;
120
121 NoOpTransform(UnaryOperator<byte[]> transform) {
122 this.transform = transform;
123 classTransform = null;
124 shared = false;
125 cc = ClassFile.of();
126 }
127
128 @SuppressWarnings("initialization")
129 NoOpTransform(boolean shared,
130 ClassTransform classTransform,
131 ClassFile.Option... options) {
132 this.shared = shared;
133 this.classTransform = classTransform;
134 this.cc = ClassFile.of(
135 shared
136 ? options
137 : Stream.concat(Stream.of(options), Stream.of(ClassFile.ConstantPoolSharingOption.NEW_POOL)).toArray(ClassFile.Option[]::new));
138 this.transform = bytes -> cc.transformClass(cc.parse(bytes), classTransform);
139 }
140 }
141
142 public enum InjectNopTransform {
143 NOP_SHARED(bytes -> {
144 var cc = ClassFile.of();
145 ClassModel cm = cc.parse(bytes);
146 return cc.transformClass(cm, (cb, ce) -> {
147 if (ce instanceof MethodModel mm) {
148 cb.transformMethod(mm, (mb, me) -> {
|