xamarin-macios/runtime
Rolf Bjarne Kvinge c8ed014af7
[runtime] Improve exception creation. (#5944)
* [runtime] Add an inner exception parameter to Runtime.CreateProductException.

This allows us to simplify code by using inner (and outer) exceptions as
a means to provide information instead of passing extra information
around in order to create decent exceptions.

One example is how we pass the selector and method name to the method
that converts from a native id to a managed NSObject instance: passing
this information is not necessary anymore if we can use two exceptions,
one for the failure to convert from an id to a NSObject instance,
wrapped in a second that tells which method/selector call ran into this
conversion problem.

* [runtime] Throw better exceptions when the dynamic registrar can't marshal something.

* [runtime] Throw a better exception when something goes wrong when trying to marshal a return value.

* [runtime] Use inner exceptions to convey failure information instead of trying to create a single exception with all we know.

* Fix merge problem.
2019-04-26 11:16:23 +02:00
..
xamarin [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
xamarin-classic Make a copy of the static registrar and the runtime headers for Xamarin.Mac/Classic. (#5945) 2019-04-25 18:08:10 +02:00
.gitignore Remove zlib-helper from runtime/ 2019-02-05 01:46:02 +01:00
COOP.md Remove zlib-helper from runtime/ 2019-02-05 01:46:02 +01:00
Delegates.cs.t4 [runtime] Mark managed callback functions if they're only used in the dynamic registrar. 2018-02-15 10:18:32 +01:00
EXCEPTIONS.md [runtime] Improve documentation about exceptions a little bit. 2016-06-08 20:11:07 +02:00
Makefile Make a copy of the static registrar and the runtime headers for Xamarin.Mac/Classic. (#5945) 2019-04-25 18:08:10 +02:00
README.md Initial review pass for COOP for watchOS. 2016-05-26 17:47:10 +02:00
Xamarin.framework-ios.Info.plist Create a Xamarin[-debug].framework. 2017-02-10 14:29:09 +01:00
Xamarin.framework-tvos.Info.plist Create a Xamarin[-debug].framework. 2017-02-10 14:29:09 +01:00
Xamarin.framework-watchos.Info.plist Create a Xamarin[-debug].framework. 2017-02-10 14:29:09 +01:00
bindings-generator.cs Merge branch 'xcode10.2' into master-merge-xcode10.2 2019-04-03 13:57:31 -04:00
bindings-generator.csproj Merge xcode9 into d15-4[-xi] (#2710) 2017-09-15 17:53:16 -04:00
bindings.h [MetalPerformanceShaders] Update bindings from Xcode 9.2 to 10.2 - Part 1 of 2 2019-01-29 15:37:49 -05:00
bindings.m Merge xcode9 into d15-4[-xi] (#2710) 2017-09-15 17:53:16 -04:00
delegates.h.t4 [runtime] Mark managed callback functions if they're only used in the dynamic registrar. 2018-02-15 10:18:32 +01:00
delegates.inc.t4 [runtime] Throw a managed exception instead of trying to call a null function pointer if the runtime tries to call a function that has been linked away. (#4770) 2018-09-10 10:56:02 +02:00
delegates.t4 [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
exports.t4 [runtime] Use mono_array_setref instead of mono_array_set. (#5782) 2019-03-18 15:00:32 +01:00
extension-main.m [runtime] Clean up public symbols. Fixes #5124. (#5155) 2018-11-21 11:48:15 -05:00
frameworks.h [registrar] Add support for the BindAs attribute. 2017-07-04 07:35:29 +02:00
launcher.h Build our runtime. 2016-04-24 14:47:24 -04:00
launcher.m [launcher] Pass --use-map-jit to mono on XM app startup 2019-04-12 18:06:28 +02:00
libmonotouch.csproj Remove zlib-helper from runtime/ 2019-02-05 01:46:02 +01:00
libxammac.csproj [Mac] Add support for os x extensions (#83) 2016-05-25 17:20:33 -04:00
main-internal.h [Mac] Add support for os x extensions (#83) 2016-05-25 17:20:33 -04:00
mono-runtime.h.t4 [runtime] Use mono_array_setref instead of mono_array_set. (#5782) 2019-03-18 15:00:32 +01:00
mono-runtime.m.t4 [runtime] Clean up public symbols. Fixes #5124. (#5155) 2018-11-21 11:48:15 -05:00
monotouch-debug.h [runtime] Only enable debugging on watchOS devices if a native debugger is also attached. 2016-09-05 10:05:00 +02:00
monotouch-debug.m [runtime] Disable debugging by default for watchOS apps on device. (#5184) 2018-11-27 16:30:32 -05:00
monotouch-main.m [runtime] Clean up public symbols. Fixes #5124. (#5155) 2018-11-21 11:48:15 -05:00
monotouch-support.h [runtime] Add dummy _stret symbols for iOS/ARM64 (#66) 2016-05-18 16:51:45 -04:00
nsstring-localization.m Build our runtime. 2016-04-24 14:47:24 -04:00
product.h Build our runtime. 2016-04-24 14:47:24 -04:00
runtime-generated.h.t4 [runtime] Mark managed callback functions if they're only used in the dynamic registrar. 2018-02-15 10:18:32 +01:00
runtime-internal.h [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
runtime.m [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
shared.h [runtime] Clean up public symbols. Fixes #5124. (#5155) 2018-11-21 11:48:15 -05:00
shared.m [runtime] Use a single mono profiler for both newrefcount and NSAutoreleasePool thread hooks. (#5495) 2019-01-28 15:06:40 +01:00
slinked-list.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-i386-asm.s [runtime] Rename CallState to XamarinCallState to keep the public namespace cleaner. (#5940) 2019-04-23 16:53:35 +01:00
trampolines-i386-objc_msgSend-copyframe.inc [runtime] Don't store xmm registers where we store other registers. 2016-05-17 11:24:02 +02:00
trampolines-i386-objc_msgSend-post.inc [runtime] Make sure the stack is correctly aligned to 16 bytes. 2016-05-17 11:24:03 +02:00
trampolines-i386-objc_msgSend-pre.inc [runtime] Make sure the stack is correctly aligned to 16 bytes. 2016-05-17 11:24:03 +02:00
trampolines-i386-objc_msgSend.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSendSuper.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSendSuper_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSend_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386.h [runtime] Rename CallState to XamarinCallState to keep the public namespace cleaner. (#5940) 2019-04-23 16:53:35 +01:00
trampolines-i386.m [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
trampolines-internal.h [registrar] Add support for the BindAs attribute. 2017-07-04 07:35:29 +02:00
trampolines-invoke.m [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
trampolines-varargs.h [runtime] Rename CallState to XamarinCallState to keep the public namespace cleaner. (#5940) 2019-04-23 16:53:35 +01:00
trampolines-varargs.m [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
trampolines-x86_64-asm.s [runtime] Make the existing trampolines exception-aware. 2016-05-17 11:20:26 +02:00
trampolines-x86_64-objc_msgSend-copyframe.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend-post.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend-pre.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSendSuper.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSendSuper_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64.h [runtime] Rename CallState to XamarinCallState to keep the public namespace cleaner. (#5940) 2019-04-23 16:53:35 +01:00
trampolines-x86_64.m [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
trampolines.m [runtime] Improve exception creation. (#5944) 2019-04-26 11:16:23 +02:00
xamarin-support.m [runtime] Only write to NSLog in chunks of max 4096 characters. Fixes maccore#1014. (#4897) 2018-10-04 17:18:09 +02:00

README.md

Native runtime

This directory contains the native runtime for Xamarin.iOS and Xamarin.Mac.

Cooperative GC

See COOP.md

Generated code

A few files are generated automatically:

delegates.h|inc, Delegates.cs

These files contain the code required to glue the native runtime and the managed runtime.

mono-runtime.m, xamarin/mono-runtime.h

These files contain code that makes other code, consumers of the mono runtime, oblivious to whether the mono runtime is linked statically, dynamically, or using dlopen at runtime.

If you need to use a new function from the Mono headers, add it to exports.t4.

If you need a new enum / constant / typedef / etc, add it to mono-runtime.h.t4.

Shipped headers

These are the headers shipped with XI/XM (they're not for public consumption, but we need them to build generated code on customers machine, in particular main.m and registrar.m)

xamarin/runtime.h xamarin/trampolines.h xamarin/main.h xamarin/xamarin.h