Merge pull request #14 from JCWasmx86/master

Change Compiler Options and don't use deprecated Methods
This commit is contained in:
Volker Berlin 2020-05-24 21:36:53 +02:00 committed by GitHub
commit fdb4d4ffa9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 32 deletions

View File

@ -50,7 +50,9 @@ sourceSets {
} }
compileJava.options.encoding = 'UTF-8' compileJava.options.encoding = 'UTF-8'
compileJava.options.compilerArgs << '-Xlint:all'
compileTestJava.options.encoding = 'UTF-8' compileTestJava.options.encoding = 'UTF-8'
compileTestJava.options.compilerArgs << '-Xlint:all'
javadoc.options.encoding = 'UTF-8' javadoc.options.encoding = 'UTF-8'
jar { jar {

View File

@ -25,7 +25,22 @@ import java.io.IOException;
public class ConstantPool { public class ConstantPool {
private final Object[] constantPool; private final Object[] constantPool;
public static final int CONSTANT_Utf8 = 1;
public static final int CONSTANT_Integer = 3;
public static final int CONSTANT_Float = 4;
public static final int CONSTANT_Long = 5;
public static final int CONSTANT_Double = 6;
public static final int CONSTANT_Class = 7;
public static final int CONSTANT_String = 8;
public static final int CONSTANT_Fieldref = 9;
public static final int CONSTANT_Methodref = 10;
public static final int CONSTANT_InterfaceMethodref = 11;
public static final int CONSTANT_NameAndType = 12;
public static final int CONSTANT_MethodHandle = 15;
public static final int CONSTANT_MethodType = 16;
public static final int CONSTANT_InvokeDynamic = 18;
public static final int CONSTANT_Module = 19;
public static final int CONSTANT_Package = 20;
/** /**
* https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4 * https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4
* *
@ -40,38 +55,38 @@ public class ConstantPool {
for( int i = 1; i < count; i++ ) { for( int i = 1; i < count; i++ ) {
byte type = input.readByte(); byte type = input.readByte();
switch( type ) { switch( type ) {
case 1: //CONSTANT_Utf8 case CONSTANT_Utf8:
pool[i] = input.readUTF(); pool[i] = input.readUTF();
break; break;
case 3: //CONSTANT_Integer case CONSTANT_Integer:
pool[i] = new Integer( input.readInt() ); pool[i] = Integer.valueOf( input.readInt() );
break; break;
case 4: //CONSTANT_Float case CONSTANT_Float:
pool[i] = new Float( input.readFloat() ); pool[i] = Float.valueOf( input.readFloat() );
break; break;
case 5: //CONSTANT_Long case CONSTANT_Long:
pool[i] = new Long( input.readLong() ); pool[i] = Long.valueOf( input.readLong() );
i++; i++;
break; break;
case 6: //CONSTANT_Double case CONSTANT_Double:
pool[i] = new Double( input.readDouble() ); pool[i] = Double.valueOf( input.readDouble() );
i++; i++;
break; break;
case 7: //CONSTANT_Class case CONSTANT_Class:
case 8: //CONSTANT_String case CONSTANT_String:
case 16: // CONSTANT_MethodType case CONSTANT_MethodType:
case 19: // CONSTANT_Module case CONSTANT_Module:
case 20: // CONSTANT_Package case CONSTANT_Package:
pool[i] = new int[] { type, input.readUnsignedShort() }; pool[i] = new int[] { type, input.readUnsignedShort() };
break; break;
case 9: //CONSTANT_Fieldref case CONSTANT_Fieldref:
case 10: //CONSTANT_Methodref case CONSTANT_Methodref:
case 11: //CONSTANT_InterfaceMethodref case CONSTANT_InterfaceMethodref:
case 12: //CONSTANT_NameAndType case CONSTANT_NameAndType:
case 18: // CONSTANT_InvokeDynamic case CONSTANT_InvokeDynamic:
pool[i] = new int[] { type, input.readUnsignedShort(), input.readUnsignedShort() }; pool[i] = new int[] { type, input.readUnsignedShort(), input.readUnsignedShort() };
break; break;
case 15: // CONSTANT_MethodHandle case CONSTANT_MethodHandle:
pool[i] = new int[] { type, input.readUnsignedByte(), input.readUnsignedShort() }; pool[i] = new int[] { type, input.readUnsignedByte(), input.readUnsignedShort() };
break; break;
default: default:
@ -86,43 +101,43 @@ public class ConstantPool {
if( pool[i] instanceof int[] ) { if( pool[i] instanceof int[] ) {
int[] data = (int[])pool[i]; int[] data = (int[])pool[i];
switch( data[0] ) { switch( data[0] ) {
case 7: //CONSTANT_Class case CONSTANT_Class:
pool[i] = new ConstantClass( (String)pool[data[1]] ); pool[i] = new ConstantClass( (String)pool[data[1]] );
break; break;
case 8: // CONSTANT_String case CONSTANT_String:
case 16: // CONSTANT_MethodType case CONSTANT_MethodType:
case 19: // CONSTANT_Module case CONSTANT_Module:
case 20: // CONSTANT_Package case CONSTANT_Package:
pool[i] = pool[data[1]]; pool[i] = pool[data[1]];
break; break;
case 9: //CONSTANT_Fieldref case CONSTANT_Fieldref:
if( pool[data[1]] instanceof int[] || pool[data[2]] instanceof int[] ) { if( pool[data[1]] instanceof int[] || pool[data[2]] instanceof int[] ) {
repeat = true; repeat = true;
} else { } else {
pool[i] = new ConstantFieldRef( (ConstantClass)pool[data[1]], (ConstantNameAndType)pool[data[2]] ); pool[i] = new ConstantFieldRef( (ConstantClass)pool[data[1]], (ConstantNameAndType)pool[data[2]] );
} }
break; break;
case 10: //CONSTANT_Methodref case CONSTANT_Methodref:
if( pool[data[1]] instanceof int[] || pool[data[2]] instanceof int[] ) { if( pool[data[1]] instanceof int[] || pool[data[2]] instanceof int[] ) {
repeat = true; repeat = true;
} else { } else {
pool[i] = new ConstantMethodRef( (ConstantClass)pool[data[1]], (ConstantNameAndType)pool[data[2]] ); pool[i] = new ConstantMethodRef( (ConstantClass)pool[data[1]], (ConstantNameAndType)pool[data[2]] );
} }
break; break;
case 11: //CONSTANT_InterfaceMethodref case CONSTANT_InterfaceMethodref:
if( pool[data[1]] instanceof int[] || pool[data[2]] instanceof int[] ) { if( pool[data[1]] instanceof int[] || pool[data[2]] instanceof int[] ) {
repeat = true; repeat = true;
} else { } else {
pool[i] = new ConstantInterfaceRef( (ConstantClass)pool[data[1]], (ConstantNameAndType)pool[data[2]] ); pool[i] = new ConstantInterfaceRef( (ConstantClass)pool[data[1]], (ConstantNameAndType)pool[data[2]] );
} }
break; break;
case 12: //CONSTANT_NameAndType case CONSTANT_NameAndType:
pool[i] = new ConstantNameAndType( (String)pool[data[1]], (String)pool[data[2]] ); pool[i] = new ConstantNameAndType( (String)pool[data[1]], (String)pool[data[2]] );
break; break;
case 15: // CONSTANT_MethodHandle case CONSTANT_MethodHandle:
pool[i] = pool[data[2]]; pool[i] = pool[data[2]];
break; break;
case 18: // CONSTANT_InvokeDynamic case CONSTANT_InvokeDynamic:
if( pool[data[2]] instanceof int[] ) { if( pool[data[2]] instanceof int[] ) {
repeat = true; repeat = true;
} else { } else {