Copier优化

This commit is contained in:
redkale
2023-08-12 09:28:05 +08:00
parent 509e81888c
commit a6de4df777

View File

@@ -16,7 +16,6 @@ import static org.redkale.asm.Opcodes.ACC_PUBLIC;
import static org.redkale.asm.Opcodes.ACC_STATIC;
import static org.redkale.asm.Opcodes.ACC_SUPER;
import static org.redkale.asm.Opcodes.ACC_SYNTHETIC;
import static org.redkale.asm.Opcodes.ACONST_NULL;
import static org.redkale.asm.Opcodes.ALOAD;
import static org.redkale.asm.Opcodes.ARETURN;
import static org.redkale.asm.Opcodes.ASTORE;
@@ -207,7 +206,7 @@ public interface Copier<S, D> extends BiFunction<S, D, D> {
.computeIfAbsent(srcClass, v -> {
Copier<S, D> copier = load(srcClass, destClass, options);
Creator<D> creator = Creator.load(destClass);
Function<S, D> func = src -> copier.apply(src, creator.create());
Function<S, D> func = src -> src == null ? null : copier.apply(src, creator.create());
return func;
});
} else {
@@ -217,7 +216,7 @@ public interface Copier<S, D> extends BiFunction<S, D, D> {
.computeIfAbsent(destClass, v -> {
Copier<S, D> copier = load(srcClass, destClass, options);
Creator<D> creator = Creator.load(destClass);
Function<S, D> func = src -> copier.apply(src, creator.create());
Function<S, D> func = src -> src == null ? null : copier.apply(src, creator.create());
return func;
});
}
@@ -492,7 +491,7 @@ public interface Copier<S, D> extends BiFunction<S, D, D> {
mv.visitVarInsn(ALOAD, 1);
Label ifLabel = new Label();
mv.visitJumpInsn(IFNONNULL, ifLabel);
mv.visitInsn(ACONST_NULL);
mv.visitVarInsn(ALOAD, 2);
mv.visitInsn(ARETURN);
mv.visitLabel(ifLabel);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
@@ -622,7 +621,7 @@ public interface Copier<S, D> extends BiFunction<S, D, D> {
mv.visitVarInsn(ALOAD, 1);
Label ifLabel = new Label();
mv.visitJumpInsn(IFNONNULL, ifLabel);
mv.visitInsn(ACONST_NULL);
mv.visitVarInsn(ALOAD, 2);
mv.visitInsn(ARETURN);
mv.visitLabel(ifLabel);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);