Imported Upstream version 4.8.0.309

Former-commit-id: 5f9c6ae75f295e057a7d2971f3a6df4656fa8850
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2016-11-10 13:04:39 +00:00
parent ee1447783b
commit 94b2861243
4912 changed files with 390737 additions and 49310 deletions

View File

@@ -55,6 +55,11 @@
<type fullname="System.Diagnostics.StackFrame" />
<type fullname="System.Diagnostics.StackTrace" />
<type fullname="System.DivideByZeroException" />
<!-- debugger-agent.c: create_event_list -->
<type fullname="System.Diagnostics.DebuggerNonUserCodeAttribute"/>
<type fullname="System.Diagnostics.DebuggerHiddenAttribute"/>
<type fullname="System.Diagnostics.DebuggerStepThroughAttribute"/>
<type fullname="System.DllNotFoundException" />
<type fullname="System.Double" preserve="fields" />
<type fullname="System.Enum" preserve="fields">
@@ -111,8 +116,18 @@
<type fullname="System.String" preserve="fields">
<method name="CreateString" />
<method name="InternalAllocateStr" />
<method name="FastAllocateString" />
<method name="memcpy" />
<method name="memset" />
<method name="bzero" />
<method name="bzero_aligned_1" />
<method name="bzero_aligned_2" />
<method name="bzero_aligned_4" />
<method name="bzero_aligned_8" />
<method name="memcpy_aligned_1" />
<method name="memcpy_aligned_2" />
<method name="memcpy_aligned_4" />
<method name="memcpy_aligned_8" />
</type>
<type fullname="System.SystemException" />
<type fullname="System.Type" preserve="fields">
@@ -130,7 +145,9 @@
<type fullname="System.Variant" preserve="fields" feature="com">
<method name="Clear" />
</type>
<type fullname="System.Version" />
<type fullname="System.Version">
<method signature="System.Void .ctor(System.Int32,System.Int32,System.Int32,System.Int32)" />
</type>
<type fullname="System.Void" />
<type fullname="System.__ComObject" feature="com" />
@@ -177,7 +194,9 @@
</type>
<type fullname="System.Reflection.AssemblyName" preserve="fields" />
<type fullname="System.Reflection.ConstructorInfo" preserve="fields" />
<type fullname="System.Reflection.CustomAttributeData" preserve="fields" />
<type fullname="System.Reflection.CustomAttributeData" preserve="fields">
<method signature="System.Void .ctor(System.Reflection.ConstructorInfo,System.Reflection.Assembly,System.IntPtr,System.UInt32)" />
</type>
<type fullname="System.Reflection.CustomAttributeNamedArgument" preserve="fields" />
<type fullname="System.Reflection.CustomAttributeTypedArgument" preserve="fields" />
<type fullname="System.Reflection.EventInfo" preserve="fields">
@@ -210,6 +229,9 @@
<method name="StaticGetterAdapterFrame" />
</type>
<type fullname="System.Reflection.ParameterInfo" preserve="fields" />
<!-- reflection.c: ves_icall_get_parameter_info -->
<type fullname="System.Reflection.MonoParameterInfo" preserve="fields" />
<type fullname="System.Reflection.PropertyInfo" preserve="fields" />
<type fullname="System.Reflection.ReflectionTypeLoadException" />
<type fullname="System.Reflection.TargetException" />
@@ -262,6 +284,9 @@
-->
<type fullname="System.Runtime.CompilerServices.InternalsVisibleToAttribute" />
<type fullname="System.Runtime.CompilerServices.RuntimeWrappedException">
<method signature="System.Void .ctor(System.Object)" />
</type>
<!-- <type fullname="System.Runtime.CompilerServices.RequiredAttributeAttribute" />
<type fullname="System.Runtime.CompilerServices.RuntimeHelpers" />
<type fullname="System.Runtime.CompilerServices.TypeForwardedToAttribute" /> -->
@@ -290,12 +315,17 @@
<type fullname="System.Runtime.Remoting.Messaging.CallContext">
<method name="SetCurrentCallContext" />
</type>
<type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields" />
<type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields">
<method name="InitMessage" />
</type>
<type fullname="System.Runtime.Remoting.Proxies.RealProxy" preserve="fields">
<method name="PrivateInvoke" />
<method name="GetAppDomainTarget" />
</type>
<type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields" />
<type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields">
<method name="LoadRemoteFieldNew" />
<method name="StoreRemoteField" />
</type>
<type fullname="System.Runtime.Remoting.RemotingServices">
<method name="SerializeCallData" />
<method name="DeserializeCallData" />
@@ -317,6 +347,7 @@
<type fullname="System.Threading.Monitor">
<method name="Enter" />
<method name="Exit" />
<method name="enter_with_atomic_var" />
</type>
<!--
@@ -338,6 +369,9 @@
<type fullname="System.Threading.WaitHandle" preserve="fields">
<method name="set_Handle" />
</type>
<type fullname="System.Threading._ThreadPoolWaitCallback">
<method name="PerformWaitCallback"/>
</type>
<type fullname="System.Text.StringBuilder" preserve="fields" />
@@ -361,7 +395,12 @@
<type fullname="Mono.Interop.ComInteropProxy" feature="com" />
<type fullname="Mono.Interop.IDispatch" feature="com" />
<type fullname="Mono.Interop.IUnknown" feature="com" />
<type fullname="Mono.Interop.IUnknown" feature="com"/>
<!-- by convention (and see #34671) -->
<type fullname="Mono.Runtime" />
<type fullname="Mono.RuntimeStructs/HandleStackMark" />
<type fullname="Mono.RuntimeStructs/MonoError" />
</assembly>
</linker>

View File

@@ -69,29 +69,27 @@ namespace Mono.Linker.Steps {
protected virtual void InitializeAssembly (AssemblyDefinition assembly)
{
MarkAssembly (assembly);
foreach (TypeDefinition type in assembly.MainModule.Types) {
if (!Annotations.IsMarked (type))
continue;
foreach (TypeDefinition type in assembly.MainModule.Types)
InitializeType (type);
}
}
void InitializeType (TypeDefinition type)
{
if (type.HasNestedTypes) {
foreach (var nested in type.NestedTypes)
InitializeType (nested);
}
if (!Annotations.IsMarked (type))
return;
MarkType (type);
if (type.HasFields)
InitializeFields (type);
if (type.HasMethods)
InitializeMethods (type.Methods);
if (type.HasNestedTypes) {
foreach (var nested in type.NestedTypes) {
if (Annotations.IsMarked (nested))
InitializeType (nested);
}
}
}
void InitializeFields (TypeDefinition type)
@@ -520,8 +518,8 @@ namespace Mono.Linker.Steps {
MarkFields (type, type.IsEnum);
if (type.HasInterfaces) {
foreach (TypeReference iface in type.Interfaces)
MarkType (iface);
foreach (var iface in type.Interfaces)
MarkType (iface.InterfaceType);
}
if (type.HasMethods) {

View File

@@ -129,7 +129,7 @@ namespace Mono.Linker.Steps {
static FileInfo GetOriginalAssemblyFileInfo (AssemblyDefinition assembly)
{
return new FileInfo (assembly.MainModule.FullyQualifiedName);
return new FileInfo (assembly.MainModule.FileName);
}
static void CopyAssembly (FileInfo fi, string directory, bool symbols)

View File

@@ -174,6 +174,14 @@ namespace Mono.Linker.Steps {
Annotations.Mark (type);
if (type.IsNested) {
var parent = type;
while (parent.IsNested) {
parent = parent.DeclaringType;
Annotations.Mark (parent);
}
}
switch (preserve) {
case TypePreserve.Nothing:
if (!nav.HasChildren)

View File

@@ -152,7 +152,7 @@ namespace Mono.Linker.Steps {
// at this stage reference might include things that can't be resolved
// and if it is (resolved) it needs to be kept only if marked (#16213)
if ((td != null) && Annotations.IsMarked (td)) {
scope = assembly.MainModule.Import (td).Scope;
scope = assembly.MainModule.ImportReference (td).Scope;
if (tr.Scope != scope)
changes = true;
hash.Add (tr, scope);
@@ -163,7 +163,7 @@ namespace Mono.Linker.Steps {
var td = et.Resolve ();
IMetadataScope scope = et.Scope;
if ((td != null) && Annotations.IsMarked (td)) {
scope = assembly.MainModule.Import (td).Scope;
scope = assembly.MainModule.ImportReference (td).Scope;
hash.Add (td, scope);
}
}

View File

@@ -59,8 +59,8 @@ namespace Mono.Linker.Steps {
if (!type.HasInterfaces)
return;
foreach (TypeReference @interface in type.Interfaces) {
var iface = @interface.Resolve ();
foreach (var @interface in type.Interfaces) {
var iface = @interface.InterfaceType.Resolve ();
if (iface == null || !iface.HasMethods)
continue;
@@ -160,8 +160,8 @@ namespace Mono.Linker.Steps {
if (!type.HasInterfaces)
yield break;
foreach (TypeReference interface_ref in type.Interfaces) {
TypeDefinition @interface = interface_ref.Resolve ();
foreach (var interface_ref in type.Interfaces) {
TypeDefinition @interface = interface_ref.InterfaceType.Resolve ();
if (@interface == null)
continue;

View File

@@ -65,7 +65,7 @@ namespace Mono.Linker {
public void CacheAssembly (AssemblyDefinition assembly)
{
_assemblies [assembly.Name.Name] = assembly;
base.AddSearchDirectory (Path.GetDirectoryName (assembly.MainModule.FullyQualifiedName));
base.AddSearchDirectory (Path.GetDirectoryName (assembly.MainModule.FileName));
}
}
}

View File

@@ -178,7 +178,7 @@ namespace Mono.Linker {
if (_symbolReaderProvider != null) {
var symbolReader = _symbolReaderProvider.GetSymbolReader (
assembly.MainModule,
assembly.MainModule.FullyQualifiedName);
assembly.MainModule.FileName);
_annotations.AddSymbolReader (assembly, symbolReader);
assembly.MainModule.ReadSymbols (symbolReader);