32 readonly RuntimeJavaType javaLangByte;
35 readonly RuntimeJavaType javaLangBoolean;
38 readonly RuntimeJavaType javaLangShort;
41 readonly RuntimeJavaType javaLangCharacter;
44 readonly RuntimeJavaType javaLangInteger;
47 readonly RuntimeJavaType javaLangFloat;
50 readonly RuntimeJavaType javaLangLong;
53 readonly RuntimeJavaType javaLangDouble;
64 javaLangByte = bootClassLoader.TryLoadClassByName(
"java.lang.Byte");
65 byteValue = javaLangByte.GetMethod(
"byteValue",
"()B",
false);
67 valueOfByte = javaLangByte.GetMethod(
"valueOf",
"(B)Ljava.lang.Byte;",
false);
69 javaLangBoolean = bootClassLoader.TryLoadClassByName(
"java.lang.Boolean");
70 booleanValue = javaLangBoolean.GetMethod(
"booleanValue",
"()Z",
false);
72 valueOfBoolean = javaLangBoolean.GetMethod(
"valueOf",
"(Z)Ljava.lang.Boolean;",
false);
73 valueOfBoolean.Link();
74 javaLangShort = bootClassLoader.TryLoadClassByName(
"java.lang.Short");
75 shortValue = javaLangShort.GetMethod(
"shortValue",
"()S",
false);
77 valueOfShort = javaLangShort.GetMethod(
"valueOf",
"(S)Ljava.lang.Short;",
false);
79 javaLangCharacter = bootClassLoader.TryLoadClassByName(
"java.lang.Character");
80 charValue = javaLangCharacter.GetMethod(
"charValue",
"()C",
false);
82 valueOfCharacter = javaLangCharacter.GetMethod(
"valueOf",
"(C)Ljava.lang.Character;",
false);
83 valueOfCharacter.Link();
84 javaLangInteger = bootClassLoader.TryLoadClassByName(
"java.lang.Integer");
85 intValue = javaLangInteger.GetMethod(
"intValue",
"()I",
false);
87 valueOfInteger = javaLangInteger.GetMethod(
"valueOf",
"(I)Ljava.lang.Integer;",
false);
88 valueOfInteger.Link();
89 javaLangFloat = bootClassLoader.TryLoadClassByName(
"java.lang.Float");
90 floatValue = javaLangFloat.GetMethod(
"floatValue",
"()F",
false);
92 valueOfFloat = javaLangFloat.GetMethod(
"valueOf",
"(F)Ljava.lang.Float;",
false);
94 javaLangLong = bootClassLoader.TryLoadClassByName(
"java.lang.Long");
95 longValue = javaLangLong.GetMethod(
"longValue",
"()J",
false);
97 valueOfLong = javaLangLong.GetMethod(
"valueOf",
"(J)Ljava.lang.Long;",
false);
99 javaLangDouble = bootClassLoader.TryLoadClassByName(
"java.lang.Double");
100 doubleValue = javaLangDouble.GetMethod(
"doubleValue",
"()D",
false);
102 valueOfDouble = javaLangDouble.GetMethod(
"valueOf",
"(D)Ljava.lang.Double;",
false);
103 valueOfDouble.Link();
106 internal void EmitUnbox(
CodeEmitter ilgen, RuntimeJavaType tw,
bool cast)
112 javaLangByte.EmitCheckcast(ilgen);
114 byteValue.EmitCall(ilgen);
120 javaLangBoolean.EmitCheckcast(ilgen);
122 booleanValue.EmitCall(ilgen);
128 javaLangShort.EmitCheckcast(ilgen);
130 shortValue.EmitCall(ilgen);
136 javaLangCharacter.EmitCheckcast(ilgen);
138 charValue.EmitCall(ilgen);
144 javaLangInteger.EmitCheckcast(ilgen);
146 intValue.EmitCall(ilgen);
152 javaLangFloat.EmitCheckcast(ilgen);
154 floatValue.EmitCall(ilgen);
160 javaLangLong.EmitCheckcast(ilgen);
162 longValue.EmitCall(ilgen);
168 javaLangDouble.EmitCheckcast(ilgen);
170 doubleValue.EmitCall(ilgen);
174 throw new InvalidOperationException();
178 internal void EmitBox(CodeEmitter ilgen, RuntimeJavaType tw)
180 if (tw == ilgen.Context.PrimitiveJavaTypeFactory.BYTE)
182 valueOfByte.EmitCall(ilgen);
184 else if (tw == ilgen.Context.PrimitiveJavaTypeFactory.BOOLEAN)
186 valueOfBoolean.EmitCall(ilgen);
188 else if (tw == ilgen.Context.PrimitiveJavaTypeFactory.SHORT)
190 valueOfShort.EmitCall(ilgen);
192 else if (tw == ilgen.Context.PrimitiveJavaTypeFactory.CHAR)
194 valueOfCharacter.EmitCall(ilgen);
196 else if (tw == ilgen.Context.PrimitiveJavaTypeFactory.INT)
198 valueOfInteger.EmitCall(ilgen);
200 else if (tw == ilgen.Context.PrimitiveJavaTypeFactory.FLOAT)
202 valueOfFloat.EmitCall(ilgen);
204 else if (tw == ilgen.Context.PrimitiveJavaTypeFactory.LONG)
206 valueOfLong.EmitCall(ilgen);
208 else if (tw == ilgen.Context.PrimitiveJavaTypeFactory.DOUBLE)
210 valueOfDouble.EmitCall(ilgen);
214 throw new InvalidOperationException();
Maintains services relevant to an instane of the IKVM runtime.
RuntimePrimitiveJavaTypeFactory PrimitiveJavaTypeFactory
Gets the RuntimePrimitiveJavaTypeFactory associated with this instance of the runtime.
RuntimeClassLoaderFactory ClassLoaderFactory
Gets the RuntimeClassLoaderFactory associated with this instance of the runtime.