[Ikvm-commit] ikvm/ikvmc Proxy.cs,1.8,1.9 ikvmc.build,1.37,1.38
Brought to you by:
jfrijters
|
From: Jeroen F. <jfr...@us...> - 2014-07-01 15:09:13
|
Update of /cvsroot/ikvm/ikvm/ikvmc In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv518/ikvmc Modified Files: Proxy.cs ikvmc.build Log Message: Make Boxer helper class available to runtime. Index: Proxy.cs =================================================================== RCS file: /cvsroot/ikvm/ikvm/ikvmc/Proxy.cs,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Proxy.cs 15 May 2014 06:54:36 -0000 1.8 --- Proxy.cs 1 Jul 2014 15:09:11 -0000 1.9 *************** *** 311,315 **** else if (returnType.IsPrimitive) { ! Boxer.EmitUnbox(ilgen, returnType); } else if (returnType != CoreClasses.java.lang.Object.Wrapper) --- 311,315 ---- else if (returnType.IsPrimitive) { ! Boxer.EmitUnbox(ilgen, returnType, true); } else if (returnType != CoreClasses.java.lang.Object.Wrapper) *************** *** 455,618 **** } } - - static class Boxer - { - private static readonly TypeWrapper javaLangByte; - private static readonly MethodWrapper byteValue; - private static readonly MethodWrapper valueOfByte; - private static readonly TypeWrapper javaLangBoolean; - private static readonly MethodWrapper booleanValue; - private static readonly MethodWrapper valueOfBoolean; - private static readonly TypeWrapper javaLangShort; - private static readonly MethodWrapper shortValue; - private static readonly MethodWrapper valueOfShort; - private static readonly TypeWrapper javaLangCharacter; - private static readonly MethodWrapper charValue; - private static readonly MethodWrapper valueOfCharacter; - private static readonly TypeWrapper javaLangInteger; - private static readonly MethodWrapper intValue; - private static readonly MethodWrapper valueOfInteger; - private static readonly TypeWrapper javaLangFloat; - private static readonly MethodWrapper floatValue; - private static readonly MethodWrapper valueOfFloat; - private static readonly TypeWrapper javaLangLong; - private static readonly MethodWrapper longValue; - private static readonly MethodWrapper valueOfLong; - private static readonly TypeWrapper javaLangDouble; - private static readonly MethodWrapper doubleValue; - private static readonly MethodWrapper valueOfDouble; - - static Boxer() - { - ClassLoaderWrapper bootClassLoader = ClassLoaderWrapper.GetBootstrapClassLoader(); - javaLangByte = bootClassLoader.LoadClassByDottedNameFast("java.lang.Byte"); - byteValue = javaLangByte.GetMethodWrapper("byteValue", "()B", false); - byteValue.Link(); - valueOfByte = javaLangByte.GetMethodWrapper("valueOf", "(B)Ljava.lang.Byte;", false); - valueOfByte.Link(); - javaLangBoolean = bootClassLoader.LoadClassByDottedNameFast("java.lang.Boolean"); - booleanValue = javaLangBoolean.GetMethodWrapper("booleanValue", "()Z", false); - booleanValue.Link(); - valueOfBoolean = javaLangBoolean.GetMethodWrapper("valueOf", "(Z)Ljava.lang.Boolean;", false); - valueOfBoolean.Link(); - javaLangShort = bootClassLoader.LoadClassByDottedNameFast("java.lang.Short"); - shortValue = javaLangShort.GetMethodWrapper("shortValue", "()S", false); - shortValue.Link(); - valueOfShort = javaLangShort.GetMethodWrapper("valueOf", "(S)Ljava.lang.Short;", false); - valueOfShort.Link(); - javaLangCharacter = bootClassLoader.LoadClassByDottedNameFast("java.lang.Character"); - charValue = javaLangCharacter.GetMethodWrapper("charValue", "()C", false); - charValue.Link(); - valueOfCharacter = javaLangCharacter.GetMethodWrapper("valueOf", "(C)Ljava.lang.Character;", false); - valueOfCharacter.Link(); - javaLangInteger = bootClassLoader.LoadClassByDottedNameFast("java.lang.Integer"); - intValue = javaLangInteger.GetMethodWrapper("intValue", "()I", false); - intValue.Link(); - valueOfInteger = javaLangInteger.GetMethodWrapper("valueOf", "(I)Ljava.lang.Integer;", false); - valueOfInteger.Link(); - javaLangFloat = bootClassLoader.LoadClassByDottedNameFast("java.lang.Float"); - floatValue = javaLangFloat.GetMethodWrapper("floatValue", "()F", false); - floatValue.Link(); - valueOfFloat = javaLangFloat.GetMethodWrapper("valueOf", "(F)Ljava.lang.Float;", false); - valueOfFloat.Link(); - javaLangLong = bootClassLoader.LoadClassByDottedNameFast("java.lang.Long"); - longValue = javaLangLong.GetMethodWrapper("longValue", "()J", false); - longValue.Link(); - valueOfLong = javaLangLong.GetMethodWrapper("valueOf", "(J)Ljava.lang.Long;", false); - valueOfLong.Link(); - javaLangDouble = bootClassLoader.LoadClassByDottedNameFast("java.lang.Double"); - doubleValue = javaLangDouble.GetMethodWrapper("doubleValue", "()D", false); - doubleValue.Link(); - valueOfDouble = javaLangDouble.GetMethodWrapper("valueOf", "(D)Ljava.lang.Double;", false); - valueOfDouble.Link(); - } - - internal static void EmitUnbox(CodeEmitter ilgen, TypeWrapper tw) - { - if (tw == PrimitiveTypeWrapper.BYTE) - { - javaLangByte.EmitCheckcast(ilgen); - byteValue.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.BOOLEAN) - { - javaLangBoolean.EmitCheckcast(ilgen); - booleanValue.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.SHORT) - { - javaLangShort.EmitCheckcast(ilgen); - shortValue.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.CHAR) - { - javaLangCharacter.EmitCheckcast(ilgen); - charValue.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.INT) - { - javaLangInteger.EmitCheckcast(ilgen); - intValue.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.FLOAT) - { - javaLangFloat.EmitCheckcast(ilgen); - floatValue.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.LONG) - { - javaLangLong.EmitCheckcast(ilgen); - longValue.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.DOUBLE) - { - javaLangDouble.EmitCheckcast(ilgen); - doubleValue.EmitCall(ilgen); - } - else - { - throw new InvalidOperationException(); - } - } - - internal static void EmitBox(CodeEmitter ilgen, TypeWrapper tw) - { - if (tw == PrimitiveTypeWrapper.BYTE) - { - valueOfByte.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.BOOLEAN) - { - valueOfBoolean.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.SHORT) - { - valueOfShort.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.CHAR) - { - valueOfCharacter.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.INT) - { - valueOfInteger.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.FLOAT) - { - valueOfFloat.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.LONG) - { - valueOfLong.EmitCall(ilgen); - } - else if (tw == PrimitiveTypeWrapper.DOUBLE) - { - valueOfDouble.EmitCall(ilgen); - } - else - { - throw new InvalidOperationException(); - } - } - } } --- 455,457 ---- Index: ikvmc.build =================================================================== RCS file: /cvsroot/ikvm/ikvm/ikvmc/ikvmc.build,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** ikvmc.build 29 Mar 2013 11:28:24 -0000 1.37 --- ikvmc.build 1 Jul 2014 15:09:11 -0000 1.38 *************** *** 49,52 **** --- 49,53 ---- <include name="../runtime/attributes.cs" /> <include name="../runtime/BigEndianBinaryReader.cs" /> + <include name="../runtime/Boxer.cs" /> <include name="../runtime/ByteCode.cs" /> <include name="../runtime/ClassFile.cs" /> |