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)