xamarin-macios/tools/linker
Sebastien Pouliot e72b654890 [linker] Inline BinaryCompatibility.TargetsAtLeast_Desktop_V4_5[_1] (#1518)
This is a more interesting case since the inlining of 2 property getters
has a deeper impact and removes other types/methods from the final app.

Here we don't care what's inside the code we replace - only that it
always return a constant boolean after evaluation. That _constant_ is
something we can add tests to ensure we continue to behave identically.

```
--- before	2017-01-16 14:58:12.000000000 -0500
+++ after	2017-01-16 14:58:09.000000000 -0500
@@ -1580,7 +1580,6 @@
 System.String System.AppDomain::get_BaseDirectory()
 System.String System.AppDomain::get_FriendlyName()
 System.String System.AppDomain::getFriendlyName()
-System.String System.AppDomain::GetTargetFrameworkName()
 System.String System.AppDomain::ToString()
 System.UnhandledExceptionEventHandler System.AppDomain::UnhandledException
 System.UnhandledExceptionEventHandler System.AppDomain::UnhandledException
@@ -11949,54 +11948,12 @@
 System.Reflection.FieldInfo System.Runtime.Serialization.ValueTypeFixupInfo::ParentField()
 System.Runtime.Serialization.ValueTypeFixupInfo
 System.Void System.Runtime.Serialization.ValueTypeFixupInfo::.ctor(System.Int64,System.Reflection.FieldInfo,System.Int32[])
-System.Runtime.Versioning.BinaryCompatibility
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Desktop_V4_5
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Desktop_V4_5_1
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Desktop_V4_5_2
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Desktop_V4_5_3
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Desktop_V4_5_4
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Desktop_V5_0
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Phone_V7_1
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Phone_V8_0
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Silverlight_V4
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Silverlight_V5
-System.Boolean System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::TargetsAtLeast_Silverlight_V6
-System.Boolean System.Runtime.Versioning.BinaryCompatibility::get_TargetsAtLeast_Desktop_V4_5()
-System.Boolean System.Runtime.Versioning.BinaryCompatibility::get_TargetsAtLeast_Desktop_V4_5_1()
-System.Boolean System.Runtime.Versioning.BinaryCompatibility::ParseTargetFrameworkMonikerIntoEnum(System.String,System.Runtime.Versioning.TargetFrameworkId&,System.Int32&)
-System.Boolean System.Runtime.Versioning.BinaryCompatibility::TargetsAtLeast_Desktop_V4_5()
-System.Boolean System.Runtime.Versioning.BinaryCompatibility::TargetsAtLeast_Desktop_V4_5_1()
-System.Int32 System.Runtime.Versioning.BinaryCompatibility::AppWasBuiltForVersion()
-System.Int32 System.Runtime.Versioning.BinaryCompatibility::get_AppWasBuiltForVersion()
-System.Int32 System.Runtime.Versioning.BinaryCompatibility::s_AppWasBuiltForVersion
-System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap
-System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap System.Runtime.Versioning.BinaryCompatibility::s_map
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.BinaryCompatibility::AppWasBuiltForFramework()
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.BinaryCompatibility::get_AppWasBuiltForFramework()
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.BinaryCompatibility::s_AppWasBuiltForFramework
-System.Void System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::.ctor()
-System.Void System.Runtime.Versioning.BinaryCompatibility/BinaryCompatibilityMap::AddQuirksForFramework(System.Runtime.Versioning.TargetFrameworkId,System.Int32)
-System.Void System.Runtime.Versioning.BinaryCompatibility::.cctor()
-System.Void System.Runtime.Versioning.BinaryCompatibility::ParseFrameworkName(System.String,System.String&,System.Int32&,System.String&)
-System.Void System.Runtime.Versioning.BinaryCompatibility::ReadTargetFrameworkId()
-System.Runtime.Versioning.CompatibilitySwitch
-System.String System.Runtime.Versioning.CompatibilitySwitch::GetValueInternal(System.String)
 System.Runtime.Versioning.TargetFrameworkAttribute
 System.String System.Runtime.Versioning.TargetFrameworkAttribute::_frameworkDisplayName
 System.String System.Runtime.Versioning.TargetFrameworkAttribute::_frameworkName
 System.String System.Runtime.Versioning.TargetFrameworkAttribute::FrameworkDisplayName()
 System.Void System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(System.String)
 System.Void System.Runtime.Versioning.TargetFrameworkAttribute::set_FrameworkDisplayName(System.String)
-System.Int32 System.Runtime.Versioning.TargetFrameworkId::value__
-System.Runtime.Versioning.TargetFrameworkId
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::NetCore
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::NetFramework
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::NotYetChecked
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::Phone
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::Portable
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::Silverlight
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::Unrecognized
-System.Runtime.Versioning.TargetFrameworkId System.Runtime.Versioning.TargetFrameworkId::Unspecified
 System.IntPtr System.RuntimeArgumentHandle::args
 System.RuntimeArgumentHandle
 System.Boolean System.RuntimeFieldHandle::Equals(System.Object)
```

```
Statistics

Native subtotal           35,729,800   35,728,760       -1,040       0.00 %
    Executable            29,270,272   29,270,240          -32       0.00 %
    AOT data *.aotdata     6,459,528    6,458,520       -1,008      -0.02 %

Managed *.dll/exe          4,537,344    4,532,736       -4,608      -0.10 %

TOTAL                     40,581,685   40,576,037       -5,648      -0.01 %
```
2017-01-19 08:45:19 -05:00
..
Descriptors [linker] Update mscorlib.xml to preserve generic collection interfaces. Fixes #50290 (#1384) (#1427) 2017-01-03 13:03:29 -05:00
MonoTouch.Tuner [linker] Inline BinaryCompatibility.TargetsAtLeast_Desktop_V4_5[_1] (#1518) 2017-01-19 08:45:19 -05:00
ApplyPreserveAttribute.cs Build mmp. 2016-04-24 14:47:26 -04:00
BaseProfile.cs Build mmp. 2016-04-24 14:47:26 -04:00
ChangeLog Build mmp. 2016-04-24 14:47:26 -04:00
CoreHttpMessageHandler.cs [linker] Update BaseSubStep subclasses to use ExceptionalSubStep (#1507) 2017-01-16 11:42:41 -05:00
CoreMarkStep.cs [mtouch/mmp] Fix build after breaking cecil update in mono. 2016-09-01 18:28:35 +02:00
CoreOptimizeGeneratedCode.cs [mtouch][linker] Use correct error code for CoreOptimizeGeneratedCode (#915) 2016-09-28 23:16:03 -04:00
CorePreserveCode.cs Build mmp. 2016-04-24 14:47:26 -04:00
CoreRemoveAttributes.cs Build mmp. 2016-04-24 14:47:26 -04:00
CoreRemoveSecurity.cs Build mmp. 2016-04-24 14:47:26 -04:00
ExceptionalSubStep.cs [mtouch][linker] Provide a more specific error code when OptimizeGeneratedCodeSubStep fails (#903) 2016-09-28 11:46:14 -04:00
MarkNSObjects.cs [linker] Update BaseSubStep subclasses to use ExceptionalSubStep (#1507) 2017-01-16 11:42:41 -05:00
MobileExtensions.cs Build mmp. 2016-04-24 14:47:26 -04:00
MobileMarkStep.cs [mtouch/mmp] Share code between link contexts. 2017-01-18 10:48:11 +01:00
MobileProfile.cs Update list of Facade assemblies. (#916) 2016-09-29 16:12:31 +02:00
MobileRemoveAttributes.cs Build mmp. 2016-04-24 14:47:26 -04:00
MobileResolveMainAssemblyStep.cs [linker] Fix debugging of watchOS apps when link all is used. Fixes #40641 (#3) 2016-04-26 19:01:49 -04:00
MobileSweepStep.cs Build mmp. 2016-04-24 14:47:26 -04:00
ObjCExtensions.cs Fix EveryFrameworkSmokeTests test with MediaPlayerLibrary (#1418) 2016-12-28 08:46:46 -06:00
README.linker Build mmp. 2016-04-24 14:47:26 -04:00
RemoveSelectors.cs Build mmp. 2016-04-24 14:47:26 -04:00
RemoveUserResourcesSubStep.cs [mtouch][mmp] Unify user resources removal as a link step (#1026) 2016-11-01 13:11:25 -04:00

README.linker

README.linker

Q: Why some stuff is not linked out ?

A: In most case this is because:
	a) the BCL uses it internally
	b) the mono runtime depends on the type, methods, class layout


= mscorlib.dll =

System.Security.PermissionSet
	* Assembly has (3) fields of that type
	* mscorlib.xml preserve all fields from Assembly (object-internals.h)
	* code is "stubified" by the linker
System.Security.Policy.ApplicationTrust: 
	* Used as a field in AppDomainSetup;
	* Field also exists in unmanaged code (domain-internals.h);
	* mscorlib.xml preserve all fields from AppDomainSetup
	* only the default .ctor remains and is stubified by the linker
System.Security.Policy.Evidence
	* Used by AppDomain.Load[Assembly]
	* Used by Assembly.LoadWithPartialName overloads
	* code is "stubified" by the linker


= System.dll =

System.Text.RegularExpressions.*
	* Included because there is 2 regex in UriParser