diff --git a/src/Java.Interop/Java.Interop.csproj b/src/Java.Interop/Java.Interop.csproj
index d3fa840ea..9c9b6467a 100644
--- a/src/Java.Interop/Java.Interop.csproj
+++ b/src/Java.Interop/Java.Interop.csproj
@@ -60,6 +60,10 @@
TextTemplatingFileGenerator
JniPeerMembers.JniInstanceMethods_Invoke.cs
+
+ TextTemplatingFileGenerator
+ JniMarshal.SafeInvoke.cs
+
TextTemplatingFileGenerator
JniPeerMembers.JniFields.cs
@@ -86,6 +90,9 @@
JniPeerMembers.JniInstanceMethods_Invoke.tt
+
+ JniMarshal.SafeInvoke.tt
+
diff --git a/src/Java.Interop/Java.Interop/JniMarshal.SafeInvoke.cs b/src/Java.Interop/Java.Interop/JniMarshal.SafeInvoke.cs
new file mode 100644
index 000000000..df7075904
--- /dev/null
+++ b/src/Java.Interop/Java.Interop/JniMarshal.SafeInvoke.cs
@@ -0,0 +1,559 @@
+#nullable enable
+
+using System;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Java.Interop {
+
+ [SuppressMessage (
+ "Design",
+ "CA1031:Do not catch general exception types",
+ Justification = "Exceptions cannot cross a JNI boundary.")]
+ public static partial class JniMarshal {
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, T15 p15, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc (IntPtr jnienv, IntPtr self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, T15 p15, delegate* managed action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+ }
+}
diff --git a/src/Java.Interop/Java.Interop/JniMarshal.SafeInvoke.tt b/src/Java.Interop/Java.Interop/JniMarshal.SafeInvoke.tt
new file mode 100644
index 000000000..4510484c4
--- /dev/null
+++ b/src/Java.Interop/Java.Interop/JniMarshal.SafeInvoke.tt
@@ -0,0 +1,63 @@
+<#@ template language="C#" #>
+<#@ assembly name="System.Core" #>
+<#@ import namespace="System.Linq" #>
+#nullable enable
+
+using System;
+using System.Diagnostics;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Java.Interop {
+
+ [SuppressMessage (
+ "Design",
+ "CA1031:Do not catch general exception types",
+ Justification = "Exceptions cannot cross a JNI boundary.")]
+ public static partial class JniMarshal {
+<#
+ for (int i = 0; i <= 16; ++i) {
+ var types = Enumerable.Range (0, i).Select (v => "T" + v).ToArray ();
+ var parameters = Enumerable.Range (0, i).Select (v => "p" + v).ToArray ();
+ string typeParams = i == 0 ? "" : "<" + string.Join (", ", types) + ">";
+ string funcTypeParams = "<" + string.Join (", ", types.Concat (new [] { "TResult" })) + ">";
+ string methodParams = i == 0 ? "" : ", " + string.Join (", ", types.Zip (parameters, (t, p) => t + " " + p));
+ string delegateParams = i == 0 ? "" : ", " + string.Join (", ", types);
+ string invokeParams = i == 0 ? "" : ", " + string.Join (", ", parameters);
+#>
+
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe void SafeInvokeAction<#= typeParams #> (IntPtr jnienv, IntPtr self<#= methodParams #>, delegate* managed, void> action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return;
+
+ try {
+ action (jnienv, self<#= invokeParams #>);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+
+ [return: MaybeNull]
+ [DebuggerDisableUserUnhandledExceptions]
+ public static unsafe TResult SafeInvokeFunc<#= funcTypeParams #> (IntPtr jnienv, IntPtr self<#= methodParams #>, delegate* managed, TResult> action)
+ {
+ if (!JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
+ return default;
+
+ try {
+ return action (jnienv, self<#= invokeParams #>);
+ } catch (Exception __e) {
+ __r.OnUserUnhandledException (ref __envp, __e);
+ return default;
+ } finally {
+ JniEnvironment.EndMarshalMethod (ref __envp);
+ }
+ }
+<#
+ }
+#>
+ }
+}
diff --git a/src/Java.Interop/Java.Interop/JniMarshal.cs b/src/Java.Interop/Java.Interop/JniMarshal.cs
index 00556b233..acce99f2c 100644
--- a/src/Java.Interop/Java.Interop/JniMarshal.cs
+++ b/src/Java.Interop/Java.Interop/JniMarshal.cs
@@ -10,7 +10,7 @@
namespace Java.Interop {
- public static class JniMarshal {
+ public static partial class JniMarshal {
public static bool RecursiveEquals (object? objA, object? objB)
{
@@ -45,4 +45,3 @@ public static bool RecursiveEquals (object? objA, object? objB)
}
}
}
-
diff --git a/src/Java.Interop/PublicAPI.Unshipped.txt b/src/Java.Interop/PublicAPI.Unshipped.txt
index de95bcd1d..766f0b7ad 100644
--- a/src/Java.Interop/PublicAPI.Unshipped.txt
+++ b/src/Java.Interop/PublicAPI.Unshipped.txt
@@ -49,6 +49,40 @@ static Java.Interop.JniEnvironment.InstanceMethods.GetMethodID(Java.Interop.JniO
static Java.Interop.JniEnvironment.StaticFields.GetStaticFieldID(Java.Interop.JniObjectReference type, System.ReadOnlySpan name, System.ReadOnlySpan signature) -> Java.Interop.JniFieldInfo!
static Java.Interop.JniEnvironment.StaticMethods.GetStaticMethodID(Java.Interop.JniObjectReference type, System.ReadOnlySpan name, System.ReadOnlySpan signature) -> Java.Interop.JniMethodInfo!
*REMOVED*abstract Java.Interop.JniRuntime.JniValueManager.ActivatePeer(Java.Interop.IJavaPeerable? self, Java.Interop.JniObjectReference reference, System.Reflection.ConstructorInfo! cinfo, object?[]? argumentValues) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, T15 p15, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, T1 p1, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeAction(nint jnienv, nint self, T0 p0, delegate* action) -> void
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, T15 p15, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, T14 p14, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, T13 p13, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, T12 p12, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, T11 p11, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, T10 p10, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, T9 p9, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, T8 p8, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, T7 p7, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, T4 p4, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, T3 p3, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, T2 p2, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, T1 p1, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, T0 p0, delegate* action) -> TResult
+static Java.Interop.JniMarshal.SafeInvokeFunc(nint jnienv, nint self, delegate* action) -> TResult
abstract Java.Interop.JniRuntime.JniValueManager.ActivatePeer(Java.Interop.JniObjectReference reference, System.Type! type, System.Reflection.ConstructorInfo! cinfo, object?[]? argumentValues) -> void
abstract Java.Interop.JniRuntime.JniValueManager.ConstructPeerCore(Java.Interop.IJavaPeerable! peer, ref Java.Interop.JniObjectReference reference, Java.Interop.JniObjectReferenceOptions options) -> void
abstract Java.Interop.JniRuntime.JniValueManager.CreateValueCore(ref Java.Interop.JniObjectReference reference, Java.Interop.JniObjectReferenceOptions options, System.Type? targetType = null) -> object?
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt
index b2eb1827e..79bbf1b74 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt
@@ -56,22 +56,17 @@ public partial class MyClass {
return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_Count (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return __this.Count;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Count);
}
}
+ private static int __n_get_Count (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return __this.Count;
+ }
#pragma warning restore 0169
static Delegate? cb_set_Count_set_Count_I_V;
@@ -81,21 +76,17 @@ public partial class MyClass {
return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- __this.Count = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_Count_I);
}
}
+ private static void __n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ __this.Count = value;
+ }
#pragma warning restore 0169
public virtual unsafe int Count {
@@ -129,22 +120,17 @@ public partial class MyClass {
return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return JNIEnv.NewString (__this.Key);
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Key);
}
}
+ private static IntPtr __n_get_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return JNIEnv.NewString (__this.Key);
+ }
#pragma warning restore 0169
static Delegate? cb_set_Key_set_Key_Ljava_lang_String__V;
@@ -154,22 +140,18 @@ public partial class MyClass {
return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
- __this.Key = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, native_value, &__n_set_Key_Ljava_lang_String_);
}
}
+ private static void __n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
+ __this.Key = value;
+ }
#pragma warning restore 0169
public virtual unsafe string? Key {
@@ -229,22 +211,17 @@ public partial class MyClass {
return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return __this.AbstractCount;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_AbstractCount);
}
}
+ private static int __n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return __this.AbstractCount;
+ }
#pragma warning restore 0169
static Delegate? cb_set_AbstractCount_set_AbstractCount_I_V;
@@ -254,21 +231,17 @@ public partial class MyClass {
return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- __this.AbstractCount = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_AbstractCount_I);
}
}
+ private static void __n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ __this.AbstractCount = value;
+ }
#pragma warning restore 0169
public abstract int AbstractCount {
@@ -288,24 +261,19 @@ public partial class MyClass {
return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
- int __ret = __this.GetCountForKey (key);
- return __ret;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, native_key, &__n_GetCountForKey_Ljava_lang_String_);
}
}
+ private static int __n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
+ int __ret = __this.GetCountForKey (key);
+ return __ret;
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/class[@name='MyClass']/method[@name='GetCountForKey' and count(parameter)=1 and parameter[1][@type='java.lang.String']]"
@@ -331,22 +299,17 @@ public partial class MyClass {
return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return JNIEnv.NewString (__this.Key ());
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_Key);
}
}
+ private static IntPtr __n_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return JNIEnv.NewString (__this.Key ());
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/class[@name='MyClass']/method[@name='Key' and count(parameter)=0]"
@@ -379,21 +342,17 @@ public partial class MyClass {
return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- __this.AbstractMethod ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_AbstractMethod);
}
}
+ private static void __n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ __this.AbstractMethod ();
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/class[@name='MyClass']/method[@name='AbstractMethod' and count(parameter)=0]"
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt
index 3bc3a488f..a2862dff7 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt
@@ -137,22 +137,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_Count (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return __this.Count;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Count);
}
}
+ private static int __n_get_Count (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return __this.Count;
+ }
#pragma warning restore 0169
static Delegate? cb_set_Count_set_Count_I_V;
@@ -162,21 +157,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- __this.Count = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_Count_I);
}
}
+ private static void __n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ __this.Count = value;
+ }
#pragma warning restore 0169
IntPtr id_get_Count;
@@ -203,22 +194,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return JNIEnv.NewString (__this.Key);
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Key);
}
}
+ private static IntPtr __n_get_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return JNIEnv.NewString (__this.Key);
+ }
#pragma warning restore 0169
static Delegate? cb_set_Key_set_Key_Ljava_lang_String__V;
@@ -228,22 +214,18 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
- __this.Key = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, native_value, &__n_set_Key_Ljava_lang_String_);
}
}
+ private static void __n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
+ __this.Key = value;
+ }
#pragma warning restore 0169
IntPtr id_get_Key;
@@ -272,22 +254,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return __this.AbstractCount;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_AbstractCount);
}
}
+ private static int __n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return __this.AbstractCount;
+ }
#pragma warning restore 0169
static Delegate? cb_set_AbstractCount_set_AbstractCount_I_V;
@@ -297,21 +274,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- __this.AbstractCount = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_AbstractCount_I);
}
}
+ private static void __n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ __this.AbstractCount = value;
+ }
#pragma warning restore 0169
IntPtr id_get_AbstractCount;
@@ -338,24 +311,19 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
- int __ret = __this.GetCountForKey (key);
- return __ret;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, native_key, &__n_GetCountForKey_Ljava_lang_String_);
}
}
+ private static int __n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
+ int __ret = __this.GetCountForKey (key);
+ return __ret;
+ }
#pragma warning restore 0169
IntPtr id_GetCountForKey_Ljava_lang_String_;
@@ -378,22 +346,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- return JNIEnv.NewString (__this.Key ());
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_Key);
}
}
+ private static IntPtr __n_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ return JNIEnv.NewString (__this.Key ());
+ }
#pragma warning restore 0169
IntPtr id_Key;
@@ -411,21 +374,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- __this.AbstractMethod ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_AbstractMethod);
}
}
+ private static void __n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ __this.AbstractMethod ();
+ }
#pragma warning restore 0169
IntPtr id_AbstractMethod;
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt
index dabc2c6fa..b266160f0 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt
@@ -36,26 +36,21 @@ public partial class MyClass : Java.Lang.Object {
return cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Echo_arrayLjava_lang_CharSequence_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_Echo_arrayLjava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_messages)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
- var messages = (Java.Lang.ICharSequence[]?) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence));
- IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages));
- if (messages != null)
- JNIEnv.CopyArray (messages, native_messages);
- return __ret;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, native_messages, &__n_Echo_arrayLjava_lang_CharSequence_);
}
}
+ private static IntPtr __n_Echo_arrayLjava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_messages)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
+ var messages = (Java.Lang.ICharSequence[]?) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence));
+ IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages));
+ if (messages != null)
+ JNIEnv.CopyArray (messages, native_messages);
+ return __ret;
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='com.example']/class[@name='MyClass']/method[@name='echo' and count(parameter)=1 and parameter[1][@type='java.lang.CharSequence[]']]"
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt
index 890c627d0..1c657d1b1 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteClass.txt
@@ -56,22 +56,17 @@ public partial class MyClass {
return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_Count (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Count;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Count);
}
}
+ private static int __n_get_Count (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Count;
+ }
#pragma warning restore 0169
static Delegate cb_set_Count_set_Count_I_V;
@@ -81,21 +76,17 @@ public partial class MyClass {
return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.Count = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_Count_I);
}
}
+ private static void __n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.Count = value;
+ }
#pragma warning restore 0169
public virtual unsafe int Count {
@@ -129,22 +120,17 @@ public partial class MyClass {
return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return JNIEnv.NewString (__this.Key);
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Key);
}
}
+ private static IntPtr __n_get_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return JNIEnv.NewString (__this.Key);
+ }
#pragma warning restore 0169
static Delegate cb_set_Key_set_Key_Ljava_lang_String__V;
@@ -154,22 +140,18 @@ public partial class MyClass {
return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
- __this.Key = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, native_value, &__n_set_Key_Ljava_lang_String_);
}
}
+ private static void __n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
+ __this.Key = value;
+ }
#pragma warning restore 0169
public virtual unsafe string Key {
@@ -229,22 +211,17 @@ public partial class MyClass {
return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.AbstractCount;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_AbstractCount);
}
}
+ private static int __n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.AbstractCount;
+ }
#pragma warning restore 0169
static Delegate cb_set_AbstractCount_set_AbstractCount_I_V;
@@ -254,21 +231,17 @@ public partial class MyClass {
return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.AbstractCount = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_AbstractCount_I);
}
}
+ private static void __n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.AbstractCount = value;
+ }
#pragma warning restore 0169
public abstract int AbstractCount {
@@ -288,24 +261,19 @@ public partial class MyClass {
return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
- int __ret = __this.GetCountForKey (key);
- return __ret;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, native_key, &__n_GetCountForKey_Ljava_lang_String_);
}
}
+ private static int __n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
+ int __ret = __this.GetCountForKey (key);
+ return __ret;
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/class[@name='MyClass']/method[@name='GetCountForKey' and count(parameter)=1 and parameter[1][@type='java.lang.String']]"
@@ -331,22 +299,17 @@ public partial class MyClass {
return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return JNIEnv.NewString (__this.Key ());
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_Key);
}
}
+ private static IntPtr __n_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return JNIEnv.NewString (__this.Key ());
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/class[@name='MyClass']/method[@name='Key' and count(parameter)=0]"
@@ -379,21 +342,17 @@ public partial class MyClass {
return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.AbstractMethod ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_AbstractMethod);
}
}
+ private static void __n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.AbstractMethod ();
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/class[@name='MyClass']/method[@name='AbstractMethod' and count(parameter)=0]"
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt
index fce7a3833..5d59da94f 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDefaultInterfaceMethodInvoker.txt
@@ -14,21 +14,17 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable {
return cb_DoDefault_DoDefault_V ??= new _JniMarshal_PP_V (n_DoDefault);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
private static void n_DoDefault (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.DoDefault ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_DoDefault);
}
}
+ private static void __n_DoDefault (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.DoDefault ();
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='DoDefault' and count(parameter)=0]"
@@ -106,21 +102,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_DoDeclaration_DoDeclaration_V ??= new _JniMarshal_PP_V (n_DoDeclaration);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_DoDeclaration (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.DoDeclaration ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_DoDeclaration);
}
}
+ private static void __n_DoDeclaration (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.DoDeclaration ();
+ }
#pragma warning restore 0169
IntPtr id_DoDeclaration;
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt
index 22e295d12..d9a9e1476 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteDuplicateInterfaceEventArgs.txt
@@ -73,22 +73,17 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima
return cb_OnAnimationEnd_OnAnimationEnd_I_Z ??= new _JniMarshal_PPI_B (n_OnAnimationEnd_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static sbyte n_OnAnimationEnd_I (IntPtr jnienv, IntPtr native__this, int param1)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.OnAnimationEnd (param1) ? (sbyte)1 : (sbyte)0;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, param1, &__n_OnAnimationEnd_I);
}
}
+ private static sbyte __n_OnAnimationEnd_I (IntPtr jnienv, IntPtr native__this, int param1)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.OnAnimationEnd (param1) ? (sbyte)1 : (sbyte)0;
+ }
#pragma warning restore 0169
IntPtr id_OnAnimationEnd_I;
@@ -108,22 +103,17 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima
return cb_OnAnimationEnd_OnAnimationEnd_II_Z ??= new _JniMarshal_PPII_B (n_OnAnimationEnd_II);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static sbyte n_OnAnimationEnd_II (IntPtr jnienv, IntPtr native__this, int param1, int param2)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.OnAnimationEnd (param1, param2) ? (sbyte)1 : (sbyte)0;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, param1, param2, &__n_OnAnimationEnd_II);
}
}
+ private static sbyte __n_OnAnimationEnd_II (IntPtr jnienv, IntPtr native__this, int param1, int param2)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.OnAnimationEnd (param1, param2) ? (sbyte)1 : (sbyte)0;
+ }
#pragma warning restore 0169
IntPtr id_OnAnimationEnd_II;
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt
index 0d435338b..95e0067de 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterface.txt
@@ -137,22 +137,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_get_Count_get_Count_I ??= new _JniMarshal_PP_I (n_get_Count);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_Count (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Count;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Count);
}
}
+ private static int __n_get_Count (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Count;
+ }
#pragma warning restore 0169
static Delegate cb_set_Count_set_Count_I_V;
@@ -162,21 +157,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_set_Count_set_Count_I_V ??= new _JniMarshal_PPI_V (n_set_Count_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.Count = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_Count_I);
}
}
+ private static void __n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.Count = value;
+ }
#pragma warning restore 0169
IntPtr id_get_Count;
@@ -203,22 +194,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_get_Key_get_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_get_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return JNIEnv.NewString (__this.Key);
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Key);
}
}
+ private static IntPtr __n_get_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return JNIEnv.NewString (__this.Key);
+ }
#pragma warning restore 0169
static Delegate cb_set_Key_set_Key_Ljava_lang_String__V;
@@ -228,22 +214,18 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_set_Key_set_Key_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_set_Key_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
- __this.Key = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, native_value, &__n_set_Key_Ljava_lang_String_);
}
}
+ private static void __n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
+ __this.Key = value;
+ }
#pragma warning restore 0169
IntPtr id_get_Key;
@@ -272,22 +254,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_get_AbstractCount_get_AbstractCount_I ??= new _JniMarshal_PP_I (n_get_AbstractCount);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.AbstractCount;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_AbstractCount);
}
}
+ private static int __n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.AbstractCount;
+ }
#pragma warning restore 0169
static Delegate cb_set_AbstractCount_set_AbstractCount_I_V;
@@ -297,21 +274,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_set_AbstractCount_set_AbstractCount_I_V ??= new _JniMarshal_PPI_V (n_set_AbstractCount_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.AbstractCount = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_AbstractCount_I);
}
}
+ private static void __n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.AbstractCount = value;
+ }
#pragma warning restore 0169
IntPtr id_get_AbstractCount;
@@ -338,24 +311,19 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_GetCountForKey_GetCountForKey_Ljava_lang_String__I ??= new _JniMarshal_PPL_I (n_GetCountForKey_Ljava_lang_String_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
- int __ret = __this.GetCountForKey (key);
- return __ret;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, native_key, &__n_GetCountForKey_Ljava_lang_String_);
}
}
+ private static int __n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
+ int __ret = __this.GetCountForKey (key);
+ return __ret;
+ }
#pragma warning restore 0169
IntPtr id_GetCountForKey_Ljava_lang_String_;
@@ -378,22 +346,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_Key_Key_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_Key);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_Key (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return JNIEnv.NewString (__this.Key ());
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_Key);
}
}
+ private static IntPtr __n_Key (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return JNIEnv.NewString (__this.Key ());
+ }
#pragma warning restore 0169
IntPtr id_Key;
@@ -411,21 +374,17 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
return cb_AbstractMethod_AbstractMethod_V ??= new _JniMarshal_PP_V (n_AbstractMethod);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.AbstractMethod ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_AbstractMethod);
}
}
+ private static void __n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.AbstractMethod ();
+ }
#pragma warning restore 0169
IntPtr id_AbstractMethod;
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt
index 82f3b0b88..ac082d8eb 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultMethod.txt
@@ -10,21 +10,17 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable {
return cb_DoSomething_DoSomething_V ??= new _JniMarshal_PP_V (n_DoSomething);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
private static void n_DoSomething (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.DoSomething ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_DoSomething);
}
}
+ private static void __n_DoSomething (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.DoSomething ();
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='java.code']/interface[@name='IMyInterface']/method[@name='DoSomething' and count(parameter)=0]"
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt
index 6beca372d..67421f990 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultProperty.txt
@@ -10,22 +10,17 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable {
return cb_get_Value_get_Value_I ??= new _JniMarshal_PP_I (n_get_Value);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
private static int n_get_Value (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Value);
}
}
+ private static int __n_get_Value (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Value;
+ }
#pragma warning restore 0169
private static Delegate cb_set_Value_set_Value_I_V;
@@ -35,21 +30,17 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable {
return cb_set_Value_set_Value_I_V ??= new _JniMarshal_PPI_V (n_set_Value_I);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
private static void n_set_Value_I (IntPtr jnienv, IntPtr native__this, int value)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.Value = value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, value, &__n_set_Value_I);
}
}
+ private static void __n_set_Value_I (IntPtr jnienv, IntPtr native__this, int value)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.Value = value;
+ }
#pragma warning restore 0169
virtual unsafe int Value {
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt
index 1f91b157c..488953adf 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceDefaultPropertyGetterOnly.txt
@@ -10,22 +10,17 @@ public partial interface IMyInterface : IJavaObject, IJavaPeerable {
return cb_get_Value_get_Value_I ??= new _JniMarshal_PP_I (n_get_Value);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
private static int n_get_Value (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Value;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_get_Value);
}
}
+ private static int __n_get_Value (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Value;
+ }
#pragma warning restore 0169
virtual unsafe int Value {
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt
index a0888458a..3a4dfc43f 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteInterfaceRedeclaredDefaultMethod.txt
@@ -69,21 +69,17 @@ internal partial class IMyInterface2Invoker : global::Java.Lang.Object, IMyInter
return cb_DoSomething_DoSomething_V ??= new _JniMarshal_PP_V (n_DoSomething);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_DoSomething (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.DoSomething ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_DoSomething);
}
}
+ private static void __n_DoSomething (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.DoSomething ();
+ }
#pragma warning restore 0169
IntPtr id_DoSomething;
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt
index 198f75281..8c8faaf17 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteMethodWithCharSequenceArrays.txt
@@ -36,26 +36,21 @@ public partial class MyClass : Java.Lang.Object {
return cb_echo_Echo_arrayLjava_lang_CharSequence__arrayLjava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Echo_arrayLjava_lang_CharSequence_);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static IntPtr n_Echo_arrayLjava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_messages)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- var messages = (Java.Lang.ICharSequence[]) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence));
- IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages));
- if (messages != null)
- JNIEnv.CopyArray (messages, native_messages);
- return __ret;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, native_messages, &__n_Echo_arrayLjava_lang_CharSequence_);
}
}
+ private static IntPtr __n_Echo_arrayLjava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_messages)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ var messages = (Java.Lang.ICharSequence[]) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence));
+ IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages));
+ if (messages != null)
+ JNIEnv.CopyArray (messages, native_messages);
+ return __ret;
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='com.example']/class[@name='MyClass']/method[@name='echo' and count(parameter)=1 and parameter[1][@type='java.lang.CharSequence[]']]"
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt
index a29ac7411..3175217a2 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceClass.txt
@@ -104,22 +104,17 @@ internal partial class IParentInvoker : global::Java.Lang.Object, IParent {
return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetBar (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Bar;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_GetBar);
}
}
+ private static int __n_GetBar (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Bar;
+ }
#pragma warning restore 0169
IntPtr id_getBar;
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt
index 317bde11f..6e87c1e9f 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteNestedInterfaceTypes.txt
@@ -80,22 +80,17 @@ public partial interface IParent : IJavaObject, IJavaPeerable {
return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetBar (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Bar;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_GetBar);
}
}
+ private static int __n_GetBar (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Bar;
+ }
#pragma warning restore 0169
IntPtr id_getBar;
@@ -173,22 +168,17 @@ internal partial class IParentInvoker : global::Java.Lang.Object, IParent {
return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetBar (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Bar;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_GetBar);
}
}
+ private static int __n_GetBar (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Bar;
+ }
#pragma warning restore 0169
IntPtr id_getBar;
diff --git a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt
index 3e2c6f08a..9c5353030 100644
--- a/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt
+++ b/tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1/WriteUnnestedInterfaceTypes.txt
@@ -71,22 +71,17 @@ internal partial class IParentChildInvoker : global::Java.Lang.Object, IParentCh
return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetBar (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Bar;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_GetBar);
}
}
+ private static int __n_GetBar (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Bar;
+ }
#pragma warning restore 0169
IntPtr id_getBar;
@@ -173,22 +168,17 @@ internal partial class IParentInvoker : global::Java.Lang.Object, IParent {
return cb_getBar_GetBar_I ??= new _JniMarshal_PP_I (n_GetBar);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static int n_GetBar (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return default;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- return __this.Bar;
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- return default;
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ return global::Java.Interop.JniMarshal.SafeInvokeFunc (jnienv, native__this, &__n_GetBar);
}
}
+ private static int __n_GetBar (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ return __this.Bar;
+ }
#pragma warning restore 0169
IntPtr id_getBar;
diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs
index b69bb0ca2..f83bcd5db 100644
--- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs
+++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.BasePublicClass.cs
@@ -53,21 +53,17 @@ static Delegate GetBaseMethodHandler ()
return cb_baseMethod_BaseMethod_V ??= new _JniMarshal_PP_V (n_BaseMethod);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_BaseMethod (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.BaseMethod ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_BaseMethod);
}
}
+ private static void __n_BaseMethod (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.BaseMethod ();
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='BasePublicClass']/method[@name='baseMethod' and count(parameter)=0]"
diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs
index e47fcc3fd..8ba4146de 100644
--- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs
+++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.ExtendPublicClass.cs
@@ -70,21 +70,17 @@ static Delegate GetFooHandler ()
return cb_foo_Foo_V ??= new _JniMarshal_PP_V (n_Foo);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_Foo (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.Foo ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_Foo);
}
}
+ private static void __n_Foo (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.Foo ();
+ }
#pragma warning restore 0169
// Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='ExtendPublicClass']/method[@name='foo' and count(parameter)=0]"
diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs
index b678796a6..652e6a115 100644
--- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs
+++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.IExtendedInterface.cs
@@ -57,21 +57,17 @@ static Delegate GetExtendedMethodHandler ()
return cb_extendedMethod_ExtendedMethod_V ??= new _JniMarshal_PP_V (n_ExtendedMethod);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_ExtendedMethod (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.ExtendedMethod ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_ExtendedMethod);
}
}
+ private static void __n_ExtendedMethod (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
+ __this.ExtendedMethod ();
+ }
#pragma warning restore 0169
public unsafe void ExtendedMethod ()
@@ -90,21 +86,17 @@ static Delegate GetBaseMethodHandler ()
return cb_baseMethod_BaseMethod_V ??= new _JniMarshal_PP_V (n_BaseMethod);
}
- [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]
static void n_BaseMethod (IntPtr jnienv, IntPtr native__this)
{
- if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))
- return;
-
- try {
- var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
- __this.BaseMethod ();
- } catch (global::System.Exception __e) {
- __r.OnUserUnhandledException (ref __envp, __e);
- } finally {
- global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);
+ unsafe {
+ global::Java.Interop.JniMarshal.SafeInvokeAction (jnienv, native__this, &__n_BaseMethod);
}
}
+ private static void __n_BaseMethod (IntPtr jnienv, IntPtr native__this)
+ {
+ var __this = global::Java.Lang.Object.GetObject