зеркало из https://github.com/mono/ikvm-fork.git
More object -> java.lang.Class updates.
This commit is contained in:
Родитель
40dcf95916
Коммит
1dc4ffa32b
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче