Imported Upstream version 3.10.0

Former-commit-id: 172c8e3c300b39d5785c7a3e8dfb08ebdbc1a99b
This commit is contained in:
Jo Shields
2014-10-04 11:27:48 +01:00
parent fe777c5c82
commit 8b9b85e7f5
970 changed files with 20242 additions and 31308 deletions

View File

@@ -746,8 +746,16 @@ namespace IKVM.Internal
using (java.io.InputStream inp = url.openStream())
{
byte[] buf = new byte[inp.available()];
inp.read(buf, 0, buf.Length);
return TypeWrapper.FromClass(IKVM.NativeCode.java.lang.ClassLoader.defineClass1(GetJavaClassLoader(), name, buf, 0, buf.Length, GetProtectionDomain(), null));
for (int pos = 0; pos < buf.Length; )
{
int read = inp.read(buf, pos, buf.Length - pos);
if (read <= 0)
{
break;
}
pos += read;
}
return TypeWrapper.FromClass(Java_java_lang_ClassLoader.defineClass1(GetJavaClassLoader(), name, buf, 0, buf.Length, GetProtectionDomain(), null));
}
}
#endif
@@ -860,7 +868,7 @@ namespace IKVM.Internal
if (!found && unmangledName.EndsWith(".class", StringComparison.Ordinal) && unmangledName.IndexOf('.') == unmangledName.Length - 6)
{
TypeWrapper tw = FindLoadedClass(unmangledName.Substring(0, unmangledName.Length - 6).Replace('/', '.'));
if (tw != null && tw.GetClassLoader() == this && !tw.IsArray && !(tw is DynamicTypeWrapper))
if (tw != null && tw.GetClassLoader() == this && !tw.IsArray && !tw.IsDynamic)
{
#if !FIRST_PASS
yield return new java.io.File(VirtualFileSystem.GetAssemblyClassesPath(assemblyLoader.Assembly) + unmangledName).toURI().toURL();
@@ -1103,28 +1111,23 @@ namespace IKVM.Internal
LazyInitExports();
lock (this)
{
Array.Resize(ref delegates, delegates.Length + 1);
delegates[delegates.Length - 1] = acl;
delegates = ArrayUtil.Concat(delegates, acl);
}
}
#if !STATIC_COMPILER && !STUB_GENERATOR
internal string[] GetPackages()
internal List<KeyValuePair<string, string[]>> GetPackageInfo()
{
string[] packages = new string[0];
List<KeyValuePair<string, string[]>> list = new List<KeyValuePair<string, string[]>>();
foreach (Module m in assemblyLoader.Assembly.GetModules(false))
{
object[] attr = m.GetCustomAttributes(typeof(PackageListAttribute), false);
foreach (PackageListAttribute p in attr)
{
string[] mp = p.GetPackages();
string[] tmp = new string[packages.Length + mp.Length];
Array.Copy(packages, 0, tmp, 0, packages.Length);
Array.Copy(mp, 0, tmp, packages.Length, mp.Length);
packages = tmp;
list.Add(new KeyValuePair<string, string[]>(p.jar, p.packages));
}
}
return packages;
return list;
}
#endif
@@ -1313,6 +1316,10 @@ namespace IKVM.Internal
return base.GetWrapperFromAssemblyType(type);
}
protected override void CheckProhibitedPackage(string className)
{
}
#if !FIRST_PASS && !STATIC_COMPILER && !STUB_GENERATOR
internal override java.lang.ClassLoader GetJavaClassLoader()
{