Граф коммитов

5247 Коммитов

Автор SHA1 Сообщение Дата
Rolf Bjarne Kvinge 3835e1dafb
[tests] Point MSBuild to the right Xamarin.Mac location when building packaged Xamarin.Mac tests. Fixes maccore#1115. (#5090)
* [tests] Point MSBuild to the right Xamarin.Mac location when building packaged Xamarin.Mac tests. Fixes maccore#1115.

Fixes https://github.com/xamarin/maccore/issues/1115.

* [xharness] Ensure all makefile targets set the proper environment variables.
2018-11-07 09:34:16 +01:00
Emanuel Fernandez Dell'Oca e840eb31d3 [msbuild] Removes CompileEntitlements target inputs (#5096)
Since we don't require projects to contain an Entitlement.plist file we cannot use that as input, because if that file does not exist the CompileEntitlements target will be skipped. This target runs the CompileEntitlements task that generates a new Entitlements file, and that file is required to deploy the app to a device because it contains the application-identifier entitlement.

Fixes #5094
2018-11-07 08:33:18 +01:00
Sebastien Pouliot 47ff8fd1eb
Update dependencies to their heads (#5091)
Commit list for xamarin/Xamarin.MacDev:

* xamarin/Xamarin.MacDev@49a17b1 VSTS 702327: Launch image sizes for iPhone XS Max and iPhone XR (#35)
* xamarin/Xamarin.MacDev@95599c5 Added new Xcode10 Watch Complication values (#34)
* xamarin/Xamarin.MacDev@59b15be Use Version.TryParse
* xamarin/Xamarin.MacDev@2dd5fa0 Merge pull request #32 from xamarin/vsts-692176
* xamarin/Xamarin.MacDev@a97390f VSTS-692176: Add missing AutoFill Credential Provider entitlement
* xamarin/Xamarin.MacDev@19b14f6 Added API to get the recommended Xcode version value

Diff: 39ea45bad4...49a17b1cbb

Commit list for mono/mono:

* mono/mono@4d7b7ab375 [ci] Fix Windows .msi build
* mono/mono@21dc7470bc [bcl] avoid false pinning in GCTest (#11534)
* mono/mono@d9779c1df6 [interp] accept typed-by-ref as return type from a JIT call (#11538)
* mono/mono@e7e14a7929 [interp] transform delegate invoke in method body too (#11549)
* mono/mono@cadeaf43da [ci] Switch to new syntax of Azure Storage plugin

Diff: 709b46e333...4d7b7ab375

Commit list for xamarin/maccore:

* xamarin/maccore@e73094e632 Update maciostools to head (#1117)
* xamarin/maccore@4902ebbdbd Merge pull request #1105 from xamarin/swift-o-matic-optional-virtual-constructor
* xamarin/maccore@76ecea4760 Added IsOptional property.
* xamarin/maccore@77d93295bd Added a test where the init fails to ensure both paths work.
* xamarin/maccore@3d989b1ca4 Support for optional constructors in virtual classes.
* xamarin/maccore@bfdc782d0e Merge pull request #1100 from xamarin/swift-o-matic-constructor-mulligan
* xamarin/maccore@cf8025724d Added field and prop for ClassHandle
* xamarin/maccore@dc2e3f32fe Trimmed down ObjC constructors.
* xamarin/maccore@b53827c151 [SoM] Document CI a bit. (#1101)
* xamarin/maccore@46d01c8c10 [SoM] Provision XI and Mono as well. (#1099)
* xamarin/maccore@b4455eafcb bye bye old code.
* xamarin/maccore@34730dfeac Lots of changes for constructor refactoring.
* xamarin/maccore@bd09006725 Merge pull request #1096 from xamarin/swift-o-matic-required-init
* xamarin/maccore@2af91dc79a Label those asserts!
* xamarin/maccore@ea5b501a47 It looks like cmake isn't there?
* xamarin/maccore@b50285719f Support for required init methods
* xamarin/maccore@6e7187da41 [install-qa-provisioning-profiles] Create directory before trying to create files in it. (#1095)
* xamarin/maccore@8addb4a338 Merge pull request #1092 from xamarin/swift-o-matic-objc-methods
* xamarin/maccore@9dc7111497 Removed dead code, added nfloat.
* xamarin/maccore@663279065d Removed dead code.
* xamarin/maccore@3852918abc Added code to import C# methods defined in ObjC bindings.

Diff: b35c3a8d76...e73094e632
2018-11-06 13:28:41 -05:00
Rolf Bjarne Kvinge 27688e8d5b
[xharness] Fix the generation of the Mac makefile to export the right variables to use the locally build Xamarin.Mac. (#5087) 2018-11-06 15:06:58 +01:00
Rolf Bjarne Kvinge 012a0650b6
[mtouch] Fix formatting for MT0079 and update the MT4134 test to take into account the warning. Fixes maccore#1116. (#5089)
Fixes https://github.com/xamarin/maccore/issues/1116.
2018-11-06 15:06:10 +01:00
Rolf Bjarne Kvinge 1ca7da537d Mono 5.16.0.87+ breaks us, so make sure we don't use it for now. (#5088) 2018-11-06 09:05:02 -05:00
Bernhard Urban b9170ae434 [tests] enable monotouch-test with --interpreter=-mscorlib on Jenkins (#5051)
aka. mixed mode
2018-11-06 13:22:17 +01:00
Rolf Bjarne Kvinge 1b32a8dba5
[monotouch-test] Improve diagnostic output when MessageHandlerTest fails. (#5085)
Reference: https://github.com/xamarin/xamarin-macios/issues/4013
2018-11-06 09:57:35 +01:00
Rolf Bjarne Kvinge ac54b7d065
[monotouch-test] Improve VTDecompressionSessionTests asserts to print better info in case of failure. (#5083)
Showing the actual failed value is much more helpful than just "sorry, it failed".

See https://github.com/xamarin/xamarin-macios/issues/4900.
2018-11-06 09:53:59 +01:00
Sebastien Pouliot 21f3545437
Bump mono 2018-06 before P2 branch (#5084)
Commit list for mono/mono:

* mono/mono@709b46e333 [tests] reduce recursion depth (#11484)
* mono/mono@b291519422 [crash] Fix async setting for crash reporter
* mono/mono@149206a5ee [crash] Fix merp invocation (#11436)
* mono/mono@2f2615ffc8 [2018-06] [delegates] do not use CEE_CALLVIRT for non-virtual methods (#11450)
* mono/mono@47eb7c55eb [2018-06] [interp] Overflow fixes (#11426)

Diff: 3ae42fc38d...709b46e333
2018-11-05 17:52:16 -05:00
Sebastien Pouliot 121fe236ba
[scenekit] Fix `SCNAction.TimingFunction` signature to `Func<float,float>`. Fixes #5058 (#5068)
This was incorrectly bound as `Action<float>`.
Added unit test for the API compatibility stubs.

reference: https://github.com/xamarin/xamarin-macios/issues/5058

* [tests] Adjust test not to fail

reference: https://github.com/xamarin/xamarin-macios/issues/5072
2018-11-05 14:20:03 -05:00
Sam Schwarz d0d28f8200 Without this added the azure links in the side panel won't work. This step can also be updated to the new pipeline syntax using the pipeline syntax generator. (#5081) 2018-11-05 19:22:24 +01:00
Rolf Bjarne Kvinge 38bae20618
Fix min macOS version confusion. (#5080)
* MIN_OSX_SDK_VERSION: the minimum macOS version we support for running macOS apps.
* MIN_OSX_VERSION_FOR_MAC: the minimum macOS version we support for running XM/XI themselves.

Change our build to make sure the above is respected, and in particular:

* The mac32 and mac64 builds must use MIN_OSX_SDK_VERSION.
* The runtime/ build must use MIN_OSX_SDK_VERSION.
* The tools64 build should use MIN_OSX_VERSION_FOR_MAC.

Also document a bit better the various version variables.
2018-11-05 14:46:41 +01:00
Rolf Bjarne Kvinge ef8f1dcbfe
[mtouch/mmp] Unify Xcode lookup & verification code in mtouch and mmp. (#5077)
Share all the code to find and verify Xcode between mtouch and mmp.

Also print out the actual product version when logging which Xcode was used
(to make it easier to detect if a beta version is in use).
2018-11-05 08:16:29 +01:00
Chris Hamons 366281e8b7
[mmp] Remove duplicate libmono-system-native.a logic (#5073)
- https://github.com/xamarin/xamarin-macios/pull/4980 and the mono branch merge both added it
- However both copies were not the same, one was conditional and one added an extra -u option
- This collapses them into one check
2018-11-02 09:07:50 -05:00
Matt Ward 8339b0075d NSUrlSessionHandler - Support basic auth and multiple auth headers (#5052)
If the challenge is for basic authentication then try to get the
credentials for this authentication type.

Also handle multiple WWW-Authenticate headers, such as:

WWW-Authenticate: Negotiate,  NTLM

If the credentials provided on the NSUrlSessionHandler are not
available for a specific authentication type, or if the authentication
method is not supported, then reject the protection space. This allows
the next authentication challenge to be sent to the DidReceiveChallenge
method. Also handle a null reference exception that could occur if
there were no credentials available for the authentication type.
2018-11-02 09:00:45 -04:00
Vincent Dondain f389c03970 [msbuild] Don't log notices as errors (#5067)
- Fixes #5065: [Xcode10.1]Could not get traitsetID for iPhone11,6 error while building with Xcode10.1 and new iOS device
  (https://github.com/xamarin/xamarin-macios/issues/5065).
- `actool` in Xcode 10.1 now outputs some `com.apple.actool.notices` (we might not have hit that before) and those make the task fail because we log them as errors (we shouldn't).

* Lower notice to LogMessage

Update other LogMessage to output "tool notice :"
2018-11-01 14:08:31 -04:00
Sebastien Pouliot f60fcbbb16
Merge pull request #5066 from spouliot/xcode10.1-master
Merge xcode10.1 into master
2018-11-01 14:00:53 -04:00
Rolf Bjarne Kvinge fdc691d771 [jenkins] Remove any system versions of XI/XM to make absolutely sure nothing in our build requires them. (#5059) 2018-10-31 17:47:28 -04:00
Sebastien Pouliot 2dec2c0193 [xtro] Move remaining todo (MPS) to ignore 2018-10-31 17:28:24 -04:00
Sebastien Pouliot 3ab481ea70 Merge xcode10.1 into master
Also update apidiff from d15-9 since it's both frozen and includes xcode10.1
2018-10-31 15:54:48 -04:00
Emanuel Fernandez Dell'Oca 2922becfd2 [msbuild] VS Incremental build fixes (#5054)
Most of these changes are needed from VS to make incremental builds work.

The problem here is VS runs MSBuild on Windows and remotes (most of) the task executions to the Mac. Since MSBuild is running on Windows the inputs and outputs are checked there, but the output files won't be created on Windows unless those are explicitly declared as output ITaskItems of a task. VS don't copy every file created on the Mac back to Windows because that will increase the build time unnecessarily.

For instance, the _GenerateFrameworkDebugSymbols target was using the Info.plist file created by the dsymutil tool as output, but that file was not declared as ITaskItem output of the DsymUtil task so VS didn't know that file should be created on Windows.

This doesn't mean every task should have an output property declaring ITaskItems, but if you're writing a target that will use certain files as output those files should be output of one of the tasks that target is running.

Partial fix for https://dev.azure.com/devdiv/DevDiv/_workitems/edit/710309.
2018-10-31 15:05:07 -04:00
Michiel Sioen def919add8 [coregraphics] Added ScreenImage overload for Xamarin Mac allowing for more options (#5056) 2018-10-31 11:12:44 -04:00
monojenkins 4b89f459a7 [tests] Fix some tests to succeed when run on macOS 10.14 (#5060)
Public bots were updated today.

Fixes https://github.com/xamarin/maccore/issues/1106
Fixes https://github.com/xamarin/maccore/issues/1107
2018-10-31 10:45:46 -04:00
Sebastien Pouliot 0304219723
[tests] Fix some tests to succeed when run on macOS 10.14 (#5057)
Public bots were updated today.

Fixes https://github.com/xamarin/maccore/issues/1106
Fixes https://github.com/xamarin/maccore/issues/1107
2018-10-31 08:32:36 -04:00
Sebastien Pouliot cbfb047adc
Update for Xcode 10.1 final release, including last minute Pen/Tap API (#5055) 2018-10-30 21:12:54 -04:00
Rolf Bjarne Kvinge c69c74b3d3
Clone files if possible whenever it makes sense. (#5049)
Cloning is faster when supported, and it also saves disk space.
2018-10-29 16:09:30 +01:00
Bernhard Urban 15849eeff8 Bump to mono:2018-06 (#5050)
Commit list for mono/mono:

* mono/mono@3ae42fc38d [2018-06] [aot] add unbox_arbitrary_trampoline for fullaot/interp mixed mode (#11362)
* mono/mono@c4f7644e97 [tests] lower recursion depth of PerformNoPinAction (#11325)
* mono/mono@adeaf3e033 [SDKS, LLVM] Disable detection and use of libxml2 (#11341)
* mono/mono@32d1539629 [runtime] Don't init classes in ves_icall_RuntimeTypeHandle_is_subclass_of

Diff: c0fe724379...3ae42fc38d
2018-10-29 08:37:13 -04:00
Rolf Bjarne Kvinge aa668710f7 [iTunesLibrary] Fix typo & confusion. (#5046)
I'm not sure why we have an entry in our list of frameworks claiming that
iTunesLibrary was introduced in macOS 10.9, when we didn't have any bindings
for the library back then.

In any case we also have an entry for iTunesLibrary in our list of frameworks
claiming that iTunesLibrary was introduced in macOS 10.14.

I looked at some of Apple's documentation for the types in iTunesLibrary, and
they all claim to be introduced in macOS 10.13 [2].

And to make matters even more interesting, Apple's documentation for the
framework itself states the library is in
/Library/Frameworks/iTunesLibrary.framework, and ships with iTunes 11.0+ [1]
(which is introduced in 2012).

Then I looked at a macOS 10.14 machine, and the framework is available at
/System/Library/Frameworks/iTunesLibrary.framework, and
/Library/Frameworks/iTunesLibrary.framework is just a symlink there
(/System/Library/Frameworks/iTunesLibrary.framework does not exist on my macOS
10.13 machines, while /Library/Frameworks/iTunesLibrary.framework does). From
this I conclude that the framework was converted into a
system framework in macOS 10.14, and as such our claim that the framework was
introduced in 10.14 is at least somewhat right.

So treat iTunesLibrary as any other framework introduced in macOS 10.14, and
remove our (duplicated) framework entry for 10.9 (for which we didn't have any
bindings anyway).

Also fix the path to the framework, I'm wonder how this got past our tests in
the first place.

[1] https://developer.apple.com/documentation/ituneslibrary: "... located at /Library/Frameworks/iTunesLibrary.framework ... The iTunes Library framework is available to users running iTunes v11.0 or above."
[2] https://developer.apple.com/documentation/ituneslibrary/itlibrary?language=objc
2018-10-26 17:22:03 -04:00
Sebastien Pouliot 917214828d
[xharness] Log the environment variables in the execution logs (#5045)
While trying to debug an msbuild unit tests it was not possible to
successfully copy/paste the command from the execution log and
run it in a shell.

It's not that hard to run xharness and figure it out - but the
same can happen on bots (which could be harder).

So that little change prints out the host and xharness changes
to the environment variables to make copy/pasters life even
lazier :)
2018-10-26 13:34:08 -04:00
Sebastien Pouliot eaa6435e89
[msbuild] Avoid an NRE in BtouchTask when an invalid extra argument is provided (#5041)
The task itself should not throw. An invalid argument is an error that
should (and is) reported by `btouch` itself (and the task picks it up).
This makes the error reporting much more useful and the way an exception
is reported, from Windows, is also confusing
```
MessagingRemoteException: An error occured on client Build4110732 while executing a reply for topic xvs/Build/4.11.0.732/execute-task/ClassLibrary1/6e85b94002fBTouch ArgumentNullException: Value cannot be null.
```

Unit tests added.

Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/656983
2018-10-26 13:18:05 -04:00
Chris Hamons 12262c4cba
[macos] Add NSScrollView.AddFloatingSubview (#5040)
- https://github.com/xamarin/xamarin-macios/issues/5039
2018-10-25 11:56:23 -05:00
Rolf Bjarne Kvinge 35df3a5294
[introspection] Fix a few issues found on iPad Air 2 with iOS 12. (#5034)
* [introspection] MPSCnnBinaryKernel's kernelHeight/kernelWidth are missing on iOS too.

* [introspection] CoreNFC is not even available on all devices.
2018-10-25 17:47:05 +02:00
Rolf Bjarne Kvinge 2b85aaef56
[tests] Only build exactly what's neded for running XM tests on older bots. (#5038)
Also build what we can in parallel (and manually building shared dependencies first).
2018-10-25 17:17:03 +02:00
Jeffrey Stedfast d836c8867d [msbuild] Always set IOSDebugOverWiFi to true for WatchOS apps/extensions (#5035)
Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/712824
2018-10-24 20:11:17 -04:00
Vincent Dondain 51e7a47700 [coregraphics] Make MatrixOrder a normal enum instead of a nested enum (#5036)
This enum might prove useful to other APIs in the future so move outside of `CGAffineTransform`.
2018-10-24 20:10:55 -04:00
Rolf Bjarne Kvinge 74576fa5ca
[Metal/SpriteKit] Fix availability attributes on a few API. (#5033) 2018-10-24 23:58:14 +02:00
Bernhard Urban 9688c42e2d Bump mono and enable monotouch-test with interpreter (#5023)
* Bump Mono 2018-06

Commit list for mono/mono:

* mono/mono@c0fe724379 [aot] Reenable recursion checking when initing shared got entries (#11295)
* mono/mono@f55f7e53e3 [interp] use unsigned conversion for nuint (#11285)
* mono/mono@5986920bdb [2018-06] [arm64] Remove the limitation on the number of nullable arguments for dyncalls (#11266)
* mono/mono@665a308c39 [WinForms] Propagate the flags from DrawTextInternal to MeasureTextInternal (#11251)
* mono/mono@5ed4143b4f [2018-06] Crash Reporter V2 (#11162)
* mono/mono@f0db92c2b6 [interp] Implement interpreter entry trampolines on amd64 (#10978) (#11165)
* mono/mono@c1f1a7bfed [ci] Move OSX .pkg build to a separate bot pool
* mono/mono@d80ced607b [aot] Ensure shared got entries are initialized before loading methods (#11225)
* mono/mono@d07c626a74 [pkg] Add preinstall which removes existing Mono of the same version (#11209)
* mono/mono@cda3acc57c [sdks] futimens and futimes symbols are missing on anything earlier than 10.13 (#11174)
* mono/mono@226e91a064 Bump xunit-binaries

Diff: 2343f26706...c0fe724379

* [tests] enable monotouch-test with --interpreter on Jenkins
2018-10-24 15:24:22 -04:00
Rolf Bjarne Kvinge 0ddc3553d3
[Foundation] Fix compiler warnings in NSUrlSessionHandler. (#5032)
Fix these warnings:

    src/Foundation/NSUrlSessionHandler.cs(71,57): warning CS3001: Argument type 'NSUrlSessionConfiguration' is not CLS-compliant
    src/Foundation/NSUrlSessionHandler.cs(89,14): warning CS0618: 'NSUrlSession.FromConfiguration(NSUrlSessionConfiguration, NSUrlSessionDelegate, NSOperationQueue)' is obsolete: 'Use the overload with a 'INSUrlSessionDelegate' parameter.'
2018-10-24 07:54:50 +02:00
Rolf Bjarne Kvinge ad67a39104
[runtime] Improve diagnostics/behavior in case of failure to contact the IDE when debugging. (#5029)
When debugging watchOS apps on device, we wait forever [1] for a connection to
be established to the IDE (iOS apps wait for only 2 seconds, but that's
because the app will be killed after a while, which we avoid on watchOS by
attaching the native debugger).

Unfortunately our error handling was not quite optimal, which meant that if
the connection to the IDE failed, we'd wait forever instead of launching the
app without attaching the debugger.

So improve this, by printing "Waiting for connection to the IDE..." messages
while trying to connect, and printing detailed log messages if the
connection attempt fails (as well as terminating the wait and launching the
watch app).

[1] In this case forever technically means "1 hour".
2018-10-24 07:52:58 +02:00
Sebastien Pouliot d2a9a57bb9
[mtouch] Display a specific error is a .framework binary is invalid. Fixes #5028 (#5031)
Instead of a generic `MT0000` caused by an exception reading the magic
numbers of the binary framework file.

This was caused be uncompressing an archive, with a symlink, into a
file system that does not support symlinks (on Windows).

ref: https://github.com/xamarin/xamarin-macios/issues/5028
2018-10-23 14:15:58 -04:00
Sebastien Pouliot b403da0d85
[uikit] Preserve method associated with `updateSearchResultsForSearchController:`. Fixes #5024 (#5027)
This method is called back from iOS (or tvOS) so there's no managed
reference pointing to it. However we know that if it's (private inner)
type is present it's because the callback (from native) is possible so
we can preserve the method conditionally (to the type presence).

https://github.com/xamarin/xamarin-macios/issues/5024
2018-10-22 21:54:54 -04:00
Rolf Bjarne Kvinge 74102bce2d Use the zlib-helper.o library built by mono, instead of building our own. (#5021)
This also makes it possible to simplify/remove some of our build logic.
2018-10-22 19:52:45 -04:00
Jeffrey Stedfast 0cbf9609a1
Update mtouch-errors.md 2018-10-22 10:22:52 -04:00
Jeffrey Stedfast 502d811c43
Update mtouch-errors.md 2018-10-22 10:20:57 -04:00
Rolf Bjarne Kvinge d899d4fb70
Remove bitrotted support for a separate mono submodule for watchOS support. (#5022)
Unce upon a time we used a separate mono submodule for watchOS support, to make
development of watchOS support easier (we referenced mono/master, to avoid
backporting fixes for watchOS support through various release branches in
mono).

This only worked until our watchOS support became stable, since then we had to
start using a stable version of mono for watchOS support.

This means that our build support for using a separate mono clone for watchOS
support is no longer needed; and in any case it's broken because of build
changes done later.
2018-10-22 16:14:26 +02:00
Vincent Dondain f87f3b88f8 [coregraphics] Add 'MatrixOrder' overload for Scale, Rotate and Translate (#5011)
- Fixes #4698: CGAffineTransform.Scale does not work like Swift's .scaledBy(x:y:)
  (https://github.com/xamarin/xamarin-macios/issues/4698)
- 'Scale' monotouch-test now covers the new overload for the new multiplication order.
- Changed the Scale test's values so we have different values for 'x0' (it was always 0 before) and so it matches the test case from the bug report.

* Same fix for Rotate and Translate
2018-10-22 08:42:52 -04:00
Rolf Bjarne Kvinge c378d6baa5
Add a UserType flag for registered types, and use it to improve the performance for is_user_type. (#5017)
* Refactor type map to have a separate flag field for each type instead of magic location in the array.

Refactor the type map to have a separate flag field for each type instead of a
magic location in the array. This simplifies some code, but also allows us to
introduce more flags in the future (which becomes increasingly complex if the
location in the array is to determine yet another value).

This has neglible performance impacts.

* Add a UserType flag for registered types, and use it to improve the performance for is_user_type.

Reflection in the Objective-C runtime is apparently quite slow, so try to
avoid it by computing the information we need for determining whether a
particular Objective-C type represents a user type or not in the static
registrar.

We store this information in a flag for the type in question in the type map,
and use a binary search to search the type map when needed.

This provides a significant improvement, in particular in the dontlink
scenario (probably because there are many more Objective-C types in the app,
which made Objective-C reflection slow). In fact, it somehow made the dontlink
scenario so fast that it's faster than the linkall scenario (which also
improved, but not nearly as much). While quite inexplicable, it's a consistent
result I've seen over multiple test runs.

Numbers
=======

Test case: 004283d7b6

Fix 1 refers to PR #5009.
Fix 2 refers to PR #5013.
Fix 3 refers to PR #5016.
Fix 4 is this fix.

iPad Air 2
----------

| Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
| ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
| Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |       148 ms |                     24 ms (14%) |           329 ms (69%) |
| Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |       146 ms |                     55 ms (27%) |           592 ms (80%) |

iPhone X
--------

| Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | After fix 4  | Improvement from fix 3 to fix 4 | Cumulative improvement |
| ------------------- | ------ | ----------: | -----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
| Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |        29 ms |                      2 ms ( 6%) |            69 ms (70%) |
| Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |        28 ms |                     15 ms (35%) |           169 ms (86%) |

When linking all assemblies, the type map has 24 entries, and when not linking
at all it has 2993 entries.

This is part 4 (the last) of multiple fixes for #4936.

The total speed-up is 69-86% (3-7x faster).
2018-10-22 07:57:16 +02:00
Rolf Bjarne Kvinge 097e3fc9ce
[Class] Cache the IntPtr constructors in a dictionary. (#5016)
Using reflection to find these constructors is computation-intensitive, so
cache the results.

Numbers
=======

Test case: 004283d7b6

Fix 1 refers to PR #5009.
Fix 2 refers to PR #5013.
Fix 3 is this fix.

iPad Air 2
----------

| Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
| ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
| Release (link all)  | 477 ms |      481 ms |       224 ms |       172 ms |                     52 ms (23%) |           305 ms (64%) |
| Release (dont link) | 738 ms |      656 ms |       377 ms |       201 ms |                    176 ms (47%) |           537 ms (73%) |

iPhone X
--------

| Configuration       | Before | After fix 1 | After fix 2  | After fix 3  | Improvement from fix 2 to fix 3 | Cumulative improvement |
| ------------------- | ------ | ----------: | -----------: | -----------: | ------------------------------: | ---------------------: |
| Release (link all)  |  98 ms |       99 ms |        42 ms |        31 ms |                     11 ms (26%) |            67 ms (68%) |
| Release (dont link) | 197 ms |      153 ms |        91 ms |        43 ms |                     48 ms (53%) |           154 ms (78%) |

When linking all assemblies, the type map has 24 entries, and when not linking
at all it has 2993 entries.

This is part 3 of multiple fixes for #4936.
2018-10-19 18:33:45 +02:00
Rolf Bjarne Kvinge 1279dd1eaa
Get the F# binaries from macios-binaries instead of building them every time. (#5015)
It's still possible to build from source if desired.

Also remove the fsharp submodule (it will be cloned manually only if building
from source).
2018-10-19 16:54:44 +02:00