You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Maksim Zhuravkov (Jira)" <ji...@apache.org> on 2024/03/26 10:16:00 UTC
[jira] [Created] (IGNITE-21847) Marshallers. Remove unnecessary boxing introduced in IGNITE-16088
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)