From f65c02677f1e70b29b5e043897978c7e94a00f35 Mon Sep 17 00:00:00 2001 From: redkale Date: Sun, 13 Oct 2024 14:20:13 +0800 Subject: [PATCH] dyn --- .../java/org/redkale/net/http/HttpContext.java | 6 ++++++ .../org/redkale/net/sncp/SncpRemoteAction.java | 14 ++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/redkale/net/http/HttpContext.java b/src/main/java/org/redkale/net/http/HttpContext.java index b1d06b1bc..e462a426d 100644 --- a/src/main/java/org/redkale/net/http/HttpContext.java +++ b/src/main/java/org/redkale/net/http/HttpContext.java @@ -134,6 +134,8 @@ public class HttpContext extends Context { { // 构造方法 mv = new MethodDebugVisitor(cw.visitMethod(ACC_PUBLIC, "", "(" + handlerDesc + ")V", null, null)); // mv.setDebug(true); + Label label0 = new Label(); + mv.visitLabel(label0); { av0 = mv.visitAnnotation(cpDesc, true); { @@ -150,6 +152,10 @@ public class HttpContext extends Context { mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(PUTFIELD, newDynName, "handler", handlerDesc); mv.visitInsn(RETURN); + Label label2 = new Label(); + mv.visitLabel(label2); + mv.visitLocalVariable("this", "L" + newDynName + ";", null, label0, label2, 0); + mv.visitLocalVariable("handler", handlerDesc, null, label0, label2, 1); mv.visitMaxs(2, 2); mv.visitEnd(); } diff --git a/src/main/java/org/redkale/net/sncp/SncpRemoteAction.java b/src/main/java/org/redkale/net/sncp/SncpRemoteAction.java index f63e80172..ced9966d0 100644 --- a/src/main/java/org/redkale/net/sncp/SncpRemoteAction.java +++ b/src/main/java/org/redkale/net/sncp/SncpRemoteAction.java @@ -23,6 +23,7 @@ import org.redkale.asm.Asms; import org.redkale.asm.ClassWriter; import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES; import org.redkale.asm.FieldVisitor; +import org.redkale.asm.Label; import org.redkale.asm.MethodDebugVisitor; import static org.redkale.asm.Opcodes.*; import org.redkale.convert.ConvertColumn; @@ -101,12 +102,7 @@ public final class SncpRemoteAction { this.paramTypes = TypeToken.getGenericType(method.getGenericParameterTypes(), serviceImplClass); this.paramClasses = method.getParameterTypes(); Type pt = createParamComposeBeanType( - RedkaleClassLoader.currentClassLoader(), - serviceImplClass, - method, - actionid, - paramTypes, - paramClasses); + RedkaleClassLoader.currentClassLoader(), serviceImplClass, method, actionid, paramTypes, paramClasses); this.paramComposeBeanType = pt; this.paramComposeBeanCreator = (pt == null || pt == paramTypes[0]) ? null : Creator.load(TypeToken.typeToClass(pt), 1); @@ -307,6 +303,8 @@ public final class SncpRemoteAction { } { // 一个参数的构造函数 mv = new MethodDebugVisitor(cw.visitMethod(ACC_PUBLIC, "", "([Ljava/lang/Object;)V", null, null)); + Label label0 = new Label(); + mv.visitLabel(label0); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "", "()V", false); for (int i = 1; i <= paramClasses.length; i++) { @@ -319,6 +317,10 @@ public final class SncpRemoteAction { mv.visitFieldInsn(PUTFIELD, newDynName, "arg" + i, paramDesc); } mv.visitInsn(RETURN); + Label label2 = new Label(); + mv.visitLabel(label2); + mv.visitLocalVariable("this", "L" + newDynName + ";", null, label0, label2, 0); + mv.visitLocalVariable("params", "[Ljava/lang/Object;", null, label0, label2, 1); mv.visitMaxs(3, 2); mv.visitEnd(); }