b2bcad7a94
* [ObjCRuntime] Add a BindingImplAttribute. * [linker] Make ProviderToString an extension method on ICustomAttributeProvider to make it more discoverable. * [generator] Use [BindingImpl] instead of [CompilerGenerated]. The entire diff is big (89MB), so it can't be gisted. However, most of it is either removal of `using System.Runtime.CompilerServices;` or the change from `[CompilerGenerated]` to `[BindingImpl (...)]` like this: https://gist.github.com/rolfbjarne/8bfda3ed37b956d0342a1c1e9b079244 If I remove those parts of the diff, there's nothing significant left: https://gist.github.com/rolfbjarne/4156164d6bdb1376366200394eb8a091 * [linker] Teach the linker about the new [BindingImpl] attribute. In addition to the existing logic where the linker would optimize some [CompilerGenerated] code (sometimes with additional requirements), it will now also optimize all [BindingImpl (Optimizable)] code (without any additional requirements). * [tests] Add tests to make sure [BindingImpl (Optimizable)] works as expected. * [linker] Check for [BindingImpl] before [CompilerGenerated] and stop checking for [CompilerGenerated] in XAMCORE_4_0. Check for [BindingImpl] before checking for [CompilerGenerated], since the former is more common. Also stop checking for [CompilerGenerated] (at least to mean that code is optimizable) in our next non-compatible evolutionary leap (XAMCORE_4_0): * [introspection] Impl a better typo check. |
||
---|---|---|
.. | ||
Descriptors | ||
MonoTouch.Tuner | ||
ApplyPreserveAttribute.cs | ||
BaseProfile.cs | ||
ChangeLog | ||
CoreHttpMessageHandler.cs | ||
CoreMarkStep.cs | ||
CoreOptimizeGeneratedCode.cs | ||
CorePreserveCode.cs | ||
CoreRemoveAttributes.cs | ||
CoreRemoveSecurity.cs | ||
ExceptionalSubStep.cs | ||
MarkNSObjects.cs | ||
MobileExtensions.cs | ||
MobileMarkStep.cs | ||
MobileProfile.cs | ||
MobileRemoveAttributes.cs | ||
MobileResolveMainAssemblyStep.cs | ||
MobileSweepStep.cs | ||
ObjCExtensions.cs | ||
README.linker | ||
RemoveSelectors.cs | ||
RemoveUserResourcesSubStep.cs |
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