[PATCH] Fix POP2 opcode handling bug with two category 1 values at the stack top.

This commit is contained in:
Maxim Degtyarev
2017-10-18 09:43:38 +03:00
committed by Egor Ushakov
parent faaab500e3
commit e7854376b8
14 changed files with 254 additions and 31 deletions

View File

@@ -0,0 +1,30 @@
/**
* This code can be assembled with <a href="https://wiki.openjdk.java.net/display/CodeTools/asmtools">asmtools</a>
* using <code>asmtools jasm -g *.jasm</code> command line.
*/
package pkg;
super public class TestPop2OneDoublePop2
version 52:0
{
public Method "<init>":"()V"
stack 1 locals 1
{
aload_0;
invokespecial Method java/lang/Object."<init>":"()V";
return;
}
public static varargs Method main:"([Ljava/lang/String;)V"
stack 4 locals 1
{
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
ldc int 1234567890;
ldc2_w double 3.14159265358D;
pop2;
invokevirtual Method java/io/PrintStream.println:"(I)V";
return;
}
} // end Class TestPop2OneDoublePop2

View File

@@ -0,0 +1,30 @@
/**
* This code can be assembled with <a href="https://wiki.openjdk.java.net/display/CodeTools/asmtools">asmtools</a>
* using <code>asmtools jasm -g *.jasm</code> command line.
*/
package pkg;
super public class TestPop2OneLongPop2
version 52:0
{
public Method "<init>":"()V"
stack 1 locals 1
{
aload_0;
invokespecial Method java/lang/Object."<init>":"()V";
return;
}
public static varargs Method main:"([Ljava/lang/String;)V"
stack 4 locals 1
{
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
ldc int 1234567890;
ldc2_w long 0xCAFEBABE;
pop2;
invokevirtual Method java/io/PrintStream.println:"(I)V";
return;
}
} // end Class TestPop2OneLongPop2

View File

@@ -0,0 +1,31 @@
/**
* This code can be assembled with <a href="https://wiki.openjdk.java.net/display/CodeTools/asmtools">asmtools</a>
* using <code>asmtools jasm -g *.jasm</code> command line.
*/
package pkg;
super public class TestPop2TwoIntPop2
version 52:0
{
public Method "<init>":"()V"
stack 1 locals 1
{
aload_0;
invokespecial Method java/lang/Object."<init>":"()V";
return;
}
public static varargs Method main:"([Ljava/lang/String;)V"
stack 4 locals 1
{
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
ldc int 1234567890;
ldc int 0xCAFE;
ldc int 0xBABE;
pop2;
invokevirtual Method java/io/PrintStream.println:"(I)V";
return;
}
} // end Class TestPop2TwoIntPop2

View File

@@ -0,0 +1,32 @@
/**
* This code can be assembled with <a href="https://wiki.openjdk.java.net/display/CodeTools/asmtools">asmtools</a>
* using <code>asmtools jasm -g *.jasm</code> command line.
*/
package pkg;
super public class TestPop2TwoIntTwoPop
version 52:0
{
public Method "<init>":"()V"
stack 1 locals 1
{
aload_0;
invokespecial Method java/lang/Object."<init>":"()V";
return;
}
public static varargs Method main:"([Ljava/lang/String;)V"
stack 4 locals 1
{
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
ldc int 1234567890;
ldc int 0xCAFE;
ldc int 0xBABE;
pop;
pop;
invokevirtual Method java/io/PrintStream.println:"(I)V";
return;
}
} // end Class TestPop2TwoIntTwoPop