Imported Upstream version 4.2.1.36

Former-commit-id: f3008ca867fe7e4b7ae9b9a8844c0ad5798925a9
This commit is contained in:
Xamarin Public Jenkins
2015-09-24 06:06:07 -04:00
committed by Jo Shields
parent afe402035c
commit ea5caba957
172 changed files with 6570 additions and 11015 deletions

View File

@@ -1133,7 +1133,7 @@ namespace IKVM.Reflection.Emit
}
}
internal void WriteMetadata(MetadataWriter mw, out int guidHeapOffset)
internal void WriteMetadata(MetadataWriter mw, out uint guidHeapOffset)
{
mw.Write(0x424A5342); // Signature ("BSJB")
mw.Write((ushort)1); // MajorVersion

View File

@@ -142,6 +142,11 @@ namespace IKVM.Reflection.Emit
throw new NotImplementedException();
}
public override CustomModifiers[] __GetGenericParameterConstraintCustomModifiers()
{
throw new NotImplementedException();
}
public override GenericParameterAttributes GenericParameterAttributes
{
get

View File

@@ -239,6 +239,11 @@ namespace IKVM.Reflection.Reader
throw new InvalidOperationException();
}
public override CustomModifiers[] __GetGenericParameterConstraintCustomModifiers()
{
throw new InvalidOperationException();
}
public override GenericParameterAttributes GenericParameterAttributes
{
get { throw new InvalidOperationException(); }
@@ -331,6 +336,24 @@ namespace IKVM.Reflection.Reader
return list.ToArray();
}
public override CustomModifiers[] __GetGenericParameterConstraintCustomModifiers()
{
IGenericContext context = (this.DeclaringMethod as IGenericContext) ?? this.DeclaringType;
List<CustomModifiers> list = new List<CustomModifiers>();
foreach (int i in module.GenericParamConstraint.Filter(this.MetadataToken))
{
CustomModifiers mods = new CustomModifiers();
int metadataToken = module.GenericParamConstraint.records[i].Constraint;
if ((metadataToken >> 24) == TypeSpecTable.Index)
{
int index = (metadataToken & 0xFFFFFF) - 1;
mods = CustomModifiers.Read(module, module.GetBlob(module.TypeSpec.records[index]), context);
}
list.Add(mods);
}
return list.ToArray();
}
public override GenericParameterAttributes GenericParameterAttributes
{
get { return (GenericParameterAttributes)module.GenericParam.records[index].Flags; }

View File

@@ -150,6 +150,7 @@ namespace IKVM.Reflection
Type[] args = new Type[br.ReadCompressedUInt()];
for (int i = 0; i < args.Length; i++)
{
CustomModifiers.Skip(br);
args[i] = ReadType(module, br, context);
}
return args;

View File

@@ -459,6 +459,11 @@ namespace IKVM.Reflection
throw new InvalidOperationException();
}
public virtual CustomModifiers[] __GetGenericParameterConstraintCustomModifiers()
{
throw new InvalidOperationException();
}
public virtual GenericParameterAttributes GenericParameterAttributes
{
get { throw new InvalidOperationException(); }

View File

@@ -36,7 +36,7 @@ namespace IKVM.Reflection.Writer
internal void Write(MetadataWriter mw)
{
int pos = mw.Position;
uint pos = mw.Position;
WriteImpl(mw);
Debug.Assert(mw.Position == pos + unalignedlength);
int align = Length - unalignedlength;
@@ -136,7 +136,7 @@ namespace IKVM.Reflection.Writer
{
if (table != null && table.RowCount > 0)
{
int pos = mw.Position;
uint pos = mw.Position;
table.Write(mw);
Debug.Assert(mw.Position - pos == table.GetLength(mw));
}

View File

@@ -48,9 +48,9 @@ namespace IKVM.Reflection.Writer
get { return moduleBuilder; }
}
internal int Position
internal uint Position
{
get { return (int)stream.Position; }
get { return (uint)stream.Position; }
}
internal void Write(ByteBuffer bb)

View File

@@ -313,7 +313,7 @@ namespace IKVM.Reflection.Writer
}
stream.Seek(text.PointerToRawData, SeekOrigin.Begin);
int guidHeapOffset;
uint guidHeapOffset;
code.Write(mw, sdata.VirtualAddress, out guidHeapOffset);
if (sdata.SizeOfRawData != 0)

View File

@@ -275,7 +275,7 @@ namespace IKVM.Reflection.Writer
}
}
internal void Write(MetadataWriter mw, uint sdataRVA, out int guidHeapOffset)
internal void Write(MetadataWriter mw, uint sdataRVA, out uint guidHeapOffset)
{
// Now that we're ready to start writing, we need to do some fix ups
moduleBuilder.TypeRef.Fixup(moduleBuilder);