More object -> java.lang.Class updates.

This commit is contained in:
jfrijters 2010-05-27 10:54:34 +00:00
Родитель 40dcf95916
Коммит 1dc4ffa32b
4 изменённых файлов: 35 добавлений и 35 удалений

Просмотреть файл

@ -1492,14 +1492,14 @@ namespace IKVM.Runtime
internal static jclass GetSuperclass(JNIEnv* pEnv, jclass sub)
{
TypeWrapper wrapper = TypeWrapper.FromClass(pEnv->UnwrapRef(sub)).BaseTypeWrapper;
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(sub)).BaseTypeWrapper;
return pEnv->MakeLocalRef(wrapper == null ? null : wrapper.ClassObject);
}
internal static jboolean IsAssignableFrom(JNIEnv* pEnv, jclass sub, jclass super)
{
TypeWrapper w1 = TypeWrapper.FromClass(pEnv->UnwrapRef(sub));
TypeWrapper w2 = TypeWrapper.FromClass(pEnv->UnwrapRef(super));
TypeWrapper w1 = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(sub));
TypeWrapper w2 = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(super));
return w1.IsAssignableTo(w2) ? JNI_TRUE : JNI_FALSE;
}
@ -1524,7 +1524,7 @@ namespace IKVM.Runtime
internal static jint ThrowNew(JNIEnv* pEnv, jclass clazz, byte* msg)
{
ManagedJNIEnv env = pEnv->GetManagedJNIEnv();
TypeWrapper wrapper = TypeWrapper.FromClass(UnwrapRef(env, clazz));
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)UnwrapRef(env, clazz));
MethodWrapper mw = wrapper.GetMethodWrapper("<init>", "(Ljava.lang.String;)V", false);
if(mw != null)
{
@ -1667,7 +1667,7 @@ namespace IKVM.Runtime
internal static jobject AllocObject(JNIEnv* pEnv, jclass clazz)
{
return AllocObjectImpl(pEnv, TypeWrapper.FromClass(pEnv->UnwrapRef(clazz)));
return AllocObjectImpl(pEnv, TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz)));
}
private static jobject AllocObjectImpl(JNIEnv* pEnv, TypeWrapper wrapper)
@ -1763,7 +1763,7 @@ namespace IKVM.Runtime
internal static jobject NewObjectA(JNIEnv* pEnv, jclass clazz, jmethodID methodID, jvalue *args)
{
TypeWrapper wrapper = TypeWrapper.FromClass(pEnv->UnwrapRef(clazz));
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz));
if(!wrapper.IsAbstract && wrapper.TypeAsBaseType.IsAbstract)
{
// static newinstance helper method
@ -1791,8 +1791,8 @@ namespace IKVM.Runtime
{
// NOTE if clazz is an interface, this is still the right thing to do
// (i.e. if the object implements the interface, we return true)
object objClass = IKVM.NativeCode.ikvm.runtime.Util.getClassFromObject(pEnv->UnwrapRef(obj));
TypeWrapper w1 = TypeWrapper.FromClass(pEnv->UnwrapRef(clazz));
java.lang.Class objClass = IKVM.NativeCode.ikvm.runtime.Util.getClassFromObject(pEnv->UnwrapRef(obj));
TypeWrapper w1 = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz));
TypeWrapper w2 = TypeWrapper.FromClass(objClass);
return w2.IsAssignableTo(w1) ? JNI_TRUE : JNI_FALSE;
}
@ -1857,7 +1857,7 @@ namespace IKVM.Runtime
{
try
{
TypeWrapper wrapper = TypeWrapper.FromClass(pEnv->UnwrapRef(clazz));
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz));
wrapper.Finish();
// if name == NULL, the JDK returns the constructor
string methodname = (IntPtr)name == IntPtr.Zero ? "<init>" : StringFromUTF8(name);
@ -2104,7 +2104,7 @@ namespace IKVM.Runtime
{
try
{
TypeWrapper wrapper = TypeWrapper.FromClass(pEnv->UnwrapRef(clazz));
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz));
wrapper.Finish();
string fieldsig = StringFromUTF8(sig);
// don't allow dotted names!
@ -2504,7 +2504,7 @@ namespace IKVM.Runtime
try
{
// we want to support (non-primitive) value types so we can't cast to object[]
Array array = Array.CreateInstance(TypeWrapper.FromClass(pEnv->UnwrapRef(clazz)).TypeAsArrayType, len);
Array array = Array.CreateInstance(TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz)).TypeAsArrayType, len);
object o = pEnv->UnwrapRef(init);
if(o != null)
{
@ -3106,7 +3106,7 @@ namespace IKVM.Runtime
{
try
{
TypeWrapper wrapper = TypeWrapper.FromClass(pEnv->UnwrapRef(clazz));
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz));
wrapper.Finish();
for(int i = 0; i < nMethods; i++)
{
@ -3146,7 +3146,7 @@ namespace IKVM.Runtime
{
try
{
TypeWrapper wrapper = TypeWrapper.FromClass(pEnv->UnwrapRef(clazz));
TypeWrapper wrapper = TypeWrapper.FromClass((java.lang.Class)pEnv->UnwrapRef(clazz));
wrapper.Finish();
// TODO this won't work when we're putting the JNI methods in jniproxy.dll
foreach(FieldInfo fi in wrapper.TypeAsTBD.GetFields(BindingFlags.Static | BindingFlags.NonPublic))

Просмотреть файл

@ -1863,12 +1863,11 @@ namespace IKVM.Internal
}
#endif
internal static TypeWrapper FromClass(object classObject)
internal static TypeWrapper FromClass(java.lang.Class clazz)
{
#if FIRST_PASS
return null;
#else
java.lang.Class clazz = (java.lang.Class)classObject;
// MONOBUG redundant cast to workaround mcs bug
TypeWrapper tw = (TypeWrapper)(object)clazz.typeWrapper;
if(tw == null)
@ -1877,7 +1876,7 @@ namespace IKVM.Internal
if (type == null)
{
ResolvePrimitiveTypeWrapperClasses();
return FromClass(classObject);
return FromClass(clazz);
}
if (type == typeof(void) || type.IsPrimitive || ClassLoaderWrapper.IsRemappedType(type))
{

Просмотреть файл

@ -28,6 +28,7 @@ using IKVM.Attributes;
using IKVM.Runtime;
using IKVM.Internal;
using AssemblyClassLoader_ = IKVM.Internal.AssemblyClassLoader;
using jlClass = java.lang.Class;
#if !FIRST_PASS
using NegativeArraySizeException = java.lang.NegativeArraySizeException;
using IllegalArgumentException = java.lang.IllegalArgumentException;
@ -129,7 +130,7 @@ namespace IKVM.NativeCode.ikvm.@internal
{
static class StubGenerator
{
public static string getAssemblyName(object c)
public static string getAssemblyName(jlClass c)
{
TypeWrapper wrapper = TypeWrapper.FromClass(c);
ClassLoaderWrapper loader = wrapper.GetClassLoader();
@ -172,7 +173,7 @@ namespace IKVM.NativeCode.ikvm.@internal
return mb != null && mb.IsDefined(typeof(ObsoleteAttribute), false);
}
public static bool isClassDeprecated(object clazz)
public static bool isClassDeprecated(jlClass clazz)
{
Type type = TypeWrapper.FromClass(clazz).TypeAsTBD;
// we need to check type for null, because ReflectionOnly
@ -244,14 +245,14 @@ namespace IKVM.NativeCode.ikvm.runtime
return assemblies;
}
public static Assembly GetAssemblyFromClass(object clazz)
public static Assembly GetAssemblyFromClass(jlClass clazz)
{
TypeWrapper wrapper = TypeWrapper.FromClass(clazz);
AssemblyClassLoader_ acl = wrapper.GetClassLoader() as AssemblyClassLoader_;
return acl != null ? acl.GetAssembly(wrapper) : null;
}
public static bool IsDynamic(object clazz)
public static bool IsDynamic(jlClass clazz)
{
return TypeWrapper.FromClass(clazz) is DynamicTypeWrapper;
}
@ -326,7 +327,7 @@ namespace IKVM.NativeCode.ikvm.runtime
static class Util
{
public static object getClassFromObject(object o)
public static jlClass getClassFromObject(object o)
{
return GetTypeWrapperFromObject(o).ClassObject;
}
@ -357,7 +358,7 @@ namespace IKVM.NativeCode.ikvm.runtime
}
}
public static object getClassFromTypeHandle(RuntimeTypeHandle handle)
public static jlClass getClassFromTypeHandle(RuntimeTypeHandle handle)
{
Type t = Type.GetTypeFromHandle(handle);
if(t.IsPrimitive || ClassLoaderWrapper.IsRemappedType(t) || t == typeof(void))
@ -376,7 +377,7 @@ namespace IKVM.NativeCode.ikvm.runtime
return null;
}
public static object getFriendlyClassFromType(Type type)
public static jlClass getFriendlyClassFromType(Type type)
{
int rank = 0;
while(ReflectUtil.IsVector(type))
@ -427,7 +428,7 @@ namespace IKVM.NativeCode.ikvm.runtime
return true;
}
public static Type getInstanceTypeFromClass(object clazz)
public static Type getInstanceTypeFromClass(jlClass clazz)
{
TypeWrapper wrapper = TypeWrapper.FromClass(clazz);
if(wrapper.IsRemapped && wrapper.IsFinal)

Просмотреть файл

@ -1781,12 +1781,12 @@ namespace IKVM.NativeCode.java
{
}
public static object newArray(object componentType, int length)
public static object newArray(jlClass componentType, int length)
{
return null;
}
public static object multiNewArray(object componentType, int[] dimensions)
public static object multiNewArray(jlClass componentType, int[] dimensions)
{
return null;
}
@ -2249,7 +2249,7 @@ namespace IKVM.NativeCode.java
}
}
public static object newArray(object componentType, int length)
public static object newArray(jlClass componentType, int length)
{
if (componentType == null)
{
@ -2286,7 +2286,7 @@ namespace IKVM.NativeCode.java
}
}
public static object multiNewArray(object componentType, int[] dimensions)
public static object multiNewArray(jlClass componentType, int[] dimensions)
{
if (componentType == null || dimensions == null)
{
@ -2855,7 +2855,7 @@ namespace IKVM.NativeCode.java
#endif
}
public static bool desiredAssertionStatus0(object clazz)
public static bool desiredAssertionStatus0(jlClass clazz)
{
return IKVM.Runtime.Assertions.IsEnabled(TypeWrapper.FromClass(clazz));
}
@ -3195,7 +3195,7 @@ namespace IKVM.NativeCode.java
public static object currentClassLoader0(object thisSecurityManager)
{
object currentClass = currentLoadedClass0(thisSecurityManager);
jlClass currentClass = currentLoadedClass0(thisSecurityManager);
if (currentClass != null)
{
return TypeWrapper.FromClass(currentClass).GetClassLoader().GetJavaClassLoader();
@ -3213,7 +3213,7 @@ namespace IKVM.NativeCode.java
throw new NotImplementedException();
}
public static object currentLoadedClass0(object thisSecurityManager)
public static jlClass currentLoadedClass0(object thisSecurityManager)
{
throw new NotImplementedException();
}
@ -5730,7 +5730,7 @@ namespace IKVM.NativeCode.sun.misc
throw x;
}
public static void ensureClassInitialized(object thisUnsafe, object clazz)
public static void ensureClassInitialized(object thisUnsafe, jlClass clazz)
{
TypeWrapper tw = TypeWrapper.FromClass(clazz);
if (!tw.IsArray)
@ -5748,7 +5748,7 @@ namespace IKVM.NativeCode.sun.misc
}
[System.Security.SecurityCritical]
public static object allocateInstance(object thisUnsafe, object clazz)
public static object allocateInstance(object thisUnsafe, jlClass clazz)
{
TypeWrapper wrapper = TypeWrapper.FromClass(clazz);
try
@ -5944,12 +5944,12 @@ namespace IKVM.NativeCode.sun.reflect
#endif
}
public static int getClassAccessFlags(object clazz)
public static int getClassAccessFlags(jlClass clazz)
{
return (int)TypeWrapper.FromClass(clazz).Modifiers;
}
public static bool checkInternalAccess(object currentClass, object memberClass)
public static bool checkInternalAccess(jlClass currentClass, jlClass memberClass)
{
TypeWrapper current = TypeWrapper.FromClass(currentClass);
TypeWrapper member = TypeWrapper.FromClass(memberClass);