Aufruf invokestatic #34 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; bei Returntyp Object vergessen #39

Closed
opened 2019-01-11 22:12:37 +00:00 by pl · 2 comments
Owner

Für

import java.lang.Integer;
import java.lang.String;

public class Plus {

m(a,b) {
	return a+b;
}

}

WIRD

public java.lang.Integer m(java.lang.Integer, java.lang.Integer);
descriptor: (Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: aload_1
1: invokevirtual #29 // Method java/lang/Integer.intValue:()I
4: aload_2
5: invokevirtual #29 // Method java/lang/Integer.intValue:()I
8: iadd
9: invokestatic #34 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
12: areturn
UND

public java.lang.Object m(java.lang.Integer, java.lang.Integer);
descriptor: (Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: aload_1
1: invokevirtual #29 // Method java/lang/Integer.intValue:()I
4: aload_2
5: invokevirtual #29 // Method java/lang/Integer.intValue:()I
8: iadd
9: areturn

ERZEUGT.

in letzterem fehlt der Aufruf
9: invokestatic #34 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;

Für import java.lang.Integer; import java.lang.String; public class Plus { m(a,b) { return a+b; } } WIRD public java.lang.Integer m(java.lang.Integer, java.lang.Integer); descriptor: (Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer; flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=3, args_size=3 0: aload_1 1: invokevirtual #29 // Method java/lang/Integer.intValue:()I 4: aload_2 5: invokevirtual #29 // Method java/lang/Integer.intValue:()I 8: iadd 9: invokestatic #34 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; 12: areturn UND public java.lang.Object m(java.lang.Integer, java.lang.Integer); descriptor: (Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Object; flags: (0x0001) ACC_PUBLIC Code: stack=2, locals=3, args_size=3 0: aload_1 1: invokevirtual #29 // Method java/lang/Integer.intValue:()I 4: aload_2 5: invokevirtual #29 // Method java/lang/Integer.intValue:()I 8: iadd 9: areturn ERZEUGT. in letzterem fehlt der Aufruf 9: invokestatic #34 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;

Gefixt

branch bytecode 2
commit b801e144c3

Test: PlusTest.java

Gefixt branch bytecode 2 commit b801e144c3524ad17a943af05d6c8b053d0c0300 Test: PlusTest.java

getestet

getestet
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#39
No description provided.