Maksim Zhuravkov created IGNITE-21847: -----------------------------------------
Summary: Marshallers. Remove unnecessary boxing introduced in IGNITE-16088 Key: IGNITE-21847 URL: https://issues.apache.org/jira/browse/IGNITE-21847 Project: Ignite Issue Type: Improvement Components: sql Reporter: Maksim Zhuravkov Patch IGNITE-16088 introduced unnecessary boxing by replacing direct calls to varhandles with indirection with generics. Example: {code:java} public class Reader { private VarHandle h; public int readInt(Object src) { return (int) h.get(src); } public <T> T get(Object src) { return (T) h.get(src); } public int readIntGen(Object src) { return (int) get(src); } } {code} {code} # javac Reader.java # javap Reader.class public int readInt(java.lang.Object); descriptor: (Ljava/lang/Object;)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 0: aload_0 1: getfield #7 // Field h:Ljava/lang/invoke/VarHandle; 4: aload_1 5: invokevirtual #13 // Method java/lang/invoke/VarHandle.get:(Ljava/lang/Object;)I 8: ireturn LineNumberTable: line 8: 0 public <T extends java.lang.Object> T get(java.lang.Object); descriptor: (Ljava/lang/Object;)Ljava/lang/Object; flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 0: aload_0 1: getfield #7 // Field h:Ljava/lang/invoke/VarHandle; 4: aload_1 5: invokevirtual #19 // Method java/lang/invoke/VarHandle.get:(Ljava/lang/Object;)Ljava/lang/Object; 8: areturn LineNumberTable: line 12: 0 Signature: #33 // <T:Ljava/lang/Object;>(Ljava/lang/Object;)TT; public int readIntGen(java.lang.Object); descriptor: (Ljava/lang/Object;)I flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=2, args_size=2 0: aload_0 1: aload_1 2: invokevirtual #22 // Method get:(Ljava/lang/Object;)Ljava/lang/Object; 5: checkcast #23 // class java/lang/Integer 8: invokevirtual #25 // Method java/lang/Integer.intValue:()I 11: ireturn LineNumberTable: line 16: 0 } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)