Imported Upstream version 6.12.0.101

Former-commit-id: 86e5d3c0859336c41f589d3bcf96fcc6ecd603cd
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2020-10-03 08:40:42 +00:00
parent 77df3da300
commit d7ffa4a239
54 changed files with 765 additions and 745 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -10,11 +10,11 @@ generated by GNU Autoconf 2.69. Invocation command line was
## Platform. ##
## --------- ##
hostname = az-ubuntu-general0c8530
hostname = az-ubuntu-general9ac500
uname -m = x86_64
uname -r = 4.15.0-1095-azure
uname -r = 4.15.0-1096-azure
uname -s = Linux
uname -v = #105~16.04.1-Ubuntu SMP Sun Sep 6 00:30:35 UTC 2020
uname -v = #106~16.04.1-Ubuntu SMP Thu Sep 10 18:51:54 UTC 2020
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
@@ -747,7 +747,7 @@ generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_COMMANDS =
$ ./config.status
on az-ubuntu-general0c8530
on az-ubuntu-general9ac500
config.status:1238: creating Makefile
config.status:1238: creating bdw-gc.pc

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
bcc13441ae32be1e3c21219270f525315c8acd43
fa804413d2d740d2c90a7f59cd0e5001a766c1e9

View File

@@ -450,20 +450,28 @@ namespace IKVM.Reflection.Metadata
{
return new Enumerator(records, table.RowCount - 1, -1, token);
}
int index = BinarySearch(records, table.RowCount, token & 0xFFFFFF);
var maskedToken = token & 0xFFFFFF;
int index = BinarySearch(records, table.RowCount, maskedToken);
if (index < 0)
{
return new Enumerator(null, 0, 1, -1);
}
int start = index;
while (start > 0 && (records[start - 1].FilterKey & 0xFFFFFF) == (token & 0xFFFFFF))
while (start > 0)
{
var maskedFilterKey = records [start - 1].FilterKey & 0xFFFFFF;
if (maskedFilterKey != maskedToken && maskedFilterKey != 0)
break;
start--;
}
int end = index;
int max = table.RowCount - 1;
while (end < max && (records[end + 1].FilterKey & 0xFFFFFF) == (token & 0xFFFFFF))
while (end < max)
{
var maskedFilterKey = records [end + 1].FilterKey & 0xFFFFFF;
if (maskedFilterKey != maskedToken && maskedFilterKey != 0)
break;
end++;
}
return new Enumerator(records, end, start - 1, token);
@@ -481,6 +489,13 @@ namespace IKVM.Reflection.Metadata
{
return mid;
}
else if (maskedValue == 0)
{
if (min > 0)
min--;
if (max < length - 1)
max++;
}
else if (maskedToken < maskedValue)
{
max = mid - 1;

View File

@@ -146,7 +146,7 @@ namespace IKVM.Reflection
System.Runtime.InteropServices.CallingConvention unmanagedCallingConvention = 0;
bool unmanaged;
byte flags = br.ReadByte();
switch (flags & 7)
switch (flags & 0xf)
{
case DEFAULT:
callingConvention = CallingConventions.Standard;
@@ -168,6 +168,10 @@ namespace IKVM.Reflection
unmanagedCallingConvention = System.Runtime.InteropServices.CallingConvention.FastCall;
unmanaged = true;
break;
case 0x09: // UNMANAGED
unmanagedCallingConvention = (System.Runtime.InteropServices.CallingConvention)0x9;
unmanaged = true;
break;
case VARARG:
callingConvention = CallingConventions.VarArgs;
unmanaged = false;

View File

@@ -1042,6 +1042,7 @@ namespace IKVM.Reflection
public ConstructorInfo GetConstructor(BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers)
{
ConstructorInfo ci1 = null;
bindingAttr |= BindingFlags.DeclaredOnly;
if ((bindingAttr & BindingFlags.Instance) != 0)
{
ci1 = GetConstructorImpl(ConstructorInfo.ConstructorName, bindingAttr, binder, types, modifiers);