diff --git a/src/Java.Interop/Java.Interop/JniMarshal.cs b/src/Java.Interop/Java.Interop/JniMarshal.cs index 00556b233..002b02bcd 100644 --- a/src/Java.Interop/Java.Interop/JniMarshal.cs +++ b/src/Java.Interop/Java.Interop/JniMarshal.cs @@ -10,6 +10,10 @@ namespace Java.Interop { + [global::System.Diagnostics.CodeAnalysis.SuppressMessage ( + "Design", + "CA1031:Do not catch general exception types", + Justification = "Exceptions cannot cross a JNI boundary.")] public static class JniMarshal { public static bool RecursiveEquals (object? objA, object? objB) @@ -43,6 +47,532 @@ public static bool RecursiveEquals (object? objA, object? objB) } return false; } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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); + } + } + + [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/PublicAPI.Unshipped.txt b/src/Java.Interop/PublicAPI.Unshipped.txt index 359f5560e..126e69e2a 100644 --- a/src/Java.Interop/PublicAPI.Unshipped.txt +++ b/src/Java.Interop/PublicAPI.Unshipped.txt @@ -36,3 +36,37 @@ static Java.Interop.JniEnvironment.StaticFields.GetStaticFieldID(Java.Interop.Jn 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 virtual Java.Interop.JniRuntime.JniValueManager.ActivatePeer(Java.Interop.JniObjectReference reference, System.Type! type, 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 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 (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.BaseMethod (); + } #pragma warning restore 0169 public unsafe void BaseMethod () diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs index 47bbc8901..edf9b90f7 100644 --- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs +++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.PublicClass.cs @@ -64,21 +64,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 public unsafe void Foo () @@ -144,21 +140,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='PublicClass']/method[@name='foo' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs index 9e576a2cd..411928bc9 100644 --- a/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs +++ b/tests/generator-Tests/expected.xaji/AccessModifiers/Xamarin.Test.TestClass.cs @@ -70,21 +70,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='TestClass']/method[@name='baseMethod' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs index 98acbff49..ab7a8784b 100644 --- a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs +++ b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AbsSpinner.cs @@ -53,22 +53,17 @@ static Delegate GetGetAdapterHandler () return cb_getAdapter_GetAdapter_Lxamarin_test_SpinnerAdapter_ ??= new _JniMarshal_PP_L (n_GetAdapter); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetAdapter (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.ToLocalJniHandle (__this.Adapter); - } 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_GetAdapter); } } + private static IntPtr __n_GetAdapter (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Adapter); + } #pragma warning restore 0169 static Delegate cb_setAdapter_SetAdapter_Lxamarin_test_SpinnerAdapter__V; @@ -78,22 +73,18 @@ static Delegate GetSetAdapter_Lxamarin_test_SpinnerAdapter_Handler () return cb_setAdapter_SetAdapter_Lxamarin_test_SpinnerAdapter__V ??= new _JniMarshal_PPL_V (n_SetAdapter_Lxamarin_test_SpinnerAdapter_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetAdapter_Lxamarin_test_SpinnerAdapter_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) { - 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 adapter = (global::Xamarin.Test.ISpinnerAdapter)global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); - __this.Adapter = adapter; - } 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_adapter, &__n_SetAdapter_Lxamarin_test_SpinnerAdapter_); } } + private static void __n_SetAdapter_Lxamarin_test_SpinnerAdapter_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var adapter = (global::Xamarin.Test.ISpinnerAdapter)global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); + __this.Adapter = adapter; + } #pragma warning restore 0169 public override unsafe global::Xamarin.Test.ISpinnerAdapter Adapter { diff --git a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs index 275b36add..06c4c5502 100644 --- a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs +++ b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.AdapterView.cs @@ -54,22 +54,17 @@ static Delegate GetGetAdapterHandler () return cb_getAdapter_GetAdapter_Lxamarin_test_Adapter_ ??= new _JniMarshal_PP_L (n_GetAdapter); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetAdapter (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.ToLocalJniHandle (__this.RawAdapter); - } 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_GetAdapter); } } + private static IntPtr __n_GetAdapter (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.RawAdapter); + } #pragma warning restore 0169 static Delegate cb_setAdapter_SetAdapter_Lxamarin_test_Adapter__V; @@ -79,22 +74,18 @@ static Delegate GetSetAdapter_Lxamarin_test_Adapter_Handler () return cb_setAdapter_SetAdapter_Lxamarin_test_Adapter__V ??= new _JniMarshal_PPL_V (n_SetAdapter_Lxamarin_test_Adapter_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetAdapter_Lxamarin_test_Adapter_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) { - 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 adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); - __this.RawAdapter = adapter; - } 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_adapter, &__n_SetAdapter_Lxamarin_test_Adapter_); } } + private static void __n_SetAdapter_Lxamarin_test_Adapter_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); + __this.RawAdapter = adapter; + } #pragma warning restore 0169 protected abstract global::Java.Lang.Object RawAdapter { diff --git a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs index b3e67e297..027de617b 100644 --- a/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs +++ b/tests/generator-Tests/expected.xaji/Adapters/Xamarin.Test.GenericReturnObject.cs @@ -53,22 +53,17 @@ static Delegate GetGenericReturnHandler () return cb_GenericReturn_GenericReturn_Lxamarin_test_AdapterView_ ??= new _JniMarshal_PP_L (n_GenericReturn); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GenericReturn (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.ToLocalJniHandle (__this.GenericReturn ()); - } 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_GenericReturn); } } + private static IntPtr __n_GenericReturn (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.GenericReturn ()); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='GenericReturnObject']/method[@name='GenericReturn' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs index 648d81135..4a4566691 100644 --- a/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/Android.Graphics.Color/Xamarin.Test.SomeObject.cs @@ -73,22 +73,17 @@ static Delegate GetGetSomeColorHandler () return cb_getSomeColor_GetSomeColor_I ??= new _JniMarshal_PP_I (n_GetSomeColor); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSomeColor (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.SomeColor.ToArgb (); - } 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_GetSomeColor); } } + private static int __n_GetSomeColor (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.SomeColor.ToArgb (); + } #pragma warning restore 0169 static Delegate cb_setSomeColor_SetSomeColor_I_V; @@ -98,22 +93,18 @@ static Delegate GetSetSomeColor_IHandler () return cb_setSomeColor_SetSomeColor_I_V ??= new _JniMarshal_PPI_V (n_SetSomeColor_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeColor_I (IntPtr jnienv, IntPtr native__this, int native_newvalue) { - 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 newvalue = new global::Android.Graphics.Color (native_newvalue); - __this.SomeColor = newvalue; - } 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_newvalue, &__n_SetSomeColor_I); } } + private static void __n_SetSomeColor_I (IntPtr jnienv, IntPtr native__this, int native_newvalue) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var newvalue = new global::Android.Graphics.Color (native_newvalue); + __this.SomeColor = newvalue; + } #pragma warning restore 0169 public abstract global::Android.Graphics.Color SomeColor { diff --git a/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs b/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs index 6f0b2d774..311c44de3 100644 --- a/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs +++ b/tests/generator-Tests/expected.xaji/CSharpKeywords/Java.Lang.Throwable.cs @@ -31,22 +31,17 @@ static Delegate GetGetMessageHandler () return cb_getMessage_GetMessage_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetMessage); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetMessage (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.Message); - } 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_GetMessage); } } + private static IntPtr __n_GetMessage (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Message); + } #pragma warning restore 0169 public new virtual unsafe string Message { diff --git a/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs b/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs index eb5c47ff6..c7d2c3aab 100644 --- a/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs +++ b/tests/generator-Tests/expected.xaji/CSharpKeywords/Xamarin.Test.CSharpKeywords.cs @@ -53,22 +53,17 @@ static Delegate GetUsePartial_IHandler () return cb_usePartial_UsePartial_I_Ljava_lang_String_ ??= new _JniMarshal_PPI_L (n_UsePartial_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_UsePartial_I (IntPtr jnienv, IntPtr native__this, int partial) { - 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.UsePartial (partial)); - } 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, partial, &__n_UsePartial_I); } } + private static IntPtr __n_UsePartial_I (IntPtr jnienv, IntPtr native__this, int partial) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.UsePartial (partial)); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='CSharpKeywords']/method[@name='usePartial' and count(parameter)=1 and parameter[1][@type='int']]" diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs index 79811c119..3ac495bb5 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpannable.cs @@ -49,24 +49,19 @@ static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - 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 tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (tag); - 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_tag, &__n_GetSpanFlags_Ljava_lang_Object_); } } + private static int __n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (tag); + return __ret; + } #pragma warning restore 0169 public unsafe global::Android.Text.SpanTypes GetSpanFlags (global::Java.Lang.Object tag) diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs index 9eecc9a55..37abfa632 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.ISpanned.cs @@ -52,24 +52,19 @@ static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - 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 tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (tag); - 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_tag, &__n_GetSpanFlags_Ljava_lang_Object_); } } + private static int __n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (tag); + return __ret; + } #pragma warning restore 0169 public unsafe global::Android.Text.SpanTypes GetSpanFlags (global::Java.Lang.Object tag) diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs index a9f56e7d8..f101c2f3c 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableString.cs @@ -96,24 +96,19 @@ static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_what) { - 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 what = global::Java.Lang.Object.GetObject (native_what, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (what); - 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_what, &__n_GetSpanFlags_Ljava_lang_Object_); } } + private static int __n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_what) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var what = global::Java.Lang.Object.GetObject (native_what, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (what); + return __ret; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='android.text']/class[@name='SpannableString']/method[@name='getSpanFlags' and count(parameter)=1 and parameter[1][@type='java.lang.Object']]" diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs index 9523897f3..0985ee1b0 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Text.SpannableStringInternal.cs @@ -53,24 +53,19 @@ static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - 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 p0 = global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); - int __ret = (int) __this.GetSpanFlags (p0); - 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_p0, &__n_GetSpanFlags_Ljava_lang_Object_); } } + private static int __n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); + int __ret = (int) __this.GetSpanFlags (p0); + return __ret; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='android.text']/class[@name='SpannableStringInternal']/method[@name='getSpanFlags' and count(parameter)=1 and parameter[1][@type='java.lang.Object']]" diff --git a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs index 3ad3484f1..3a1c6b7f8 100644 --- a/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs +++ b/tests/generator-Tests/expected.xaji/Core_Jar2Xml/Android.Views.View.cs @@ -64,22 +64,18 @@ static Delegate GetOnClick_Landroid_view_View_Handler () return cb_onClick_OnClick_Landroid_view_View__V ??= new _JniMarshal_PPL_V (n_OnClick_Landroid_view_View_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_OnClick_Landroid_view_View_ (IntPtr jnienv, IntPtr native__this, IntPtr native_v) { - 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 v = global::Java.Lang.Object.GetObject (native_v, JniHandleOwnership.DoNotTransfer); - __this.OnClick (v); - } 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_v, &__n_OnClick_Landroid_view_View_); } } + private static void __n_OnClick_Landroid_view_View_ (IntPtr jnienv, IntPtr native__this, IntPtr native_v) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var v = global::Java.Lang.Object.GetObject (native_v, JniHandleOwnership.DoNotTransfer); + __this.OnClick (v); + } #pragma warning restore 0169 public unsafe void OnClick (global::Android.Views.View v) @@ -161,22 +157,18 @@ static Delegate GetSetOnClickListener_Landroid_view_View_OnClickListener_Handler return cb_setOnClickListener_SetOnClickListener_Landroid_view_View_OnClickListener__V ??= new _JniMarshal_PPL_V (n_SetOnClickListener_Landroid_view_View_OnClickListener_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetOnClickListener_Landroid_view_View_OnClickListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_l) { - 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 l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); - __this.SetOnClickListener (l); - } 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_l, &__n_SetOnClickListener_Landroid_view_View_OnClickListener_); } } + private static void __n_SetOnClickListener_Landroid_view_View_OnClickListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_l) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); + __this.SetOnClickListener (l); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='android.view']/class[@name='View']/method[@name='setOnClickListener' and count(parameter)=1 and parameter[1][@type='android.view.View.OnClickListener']]" @@ -200,22 +192,18 @@ static Delegate GetSetOn123Listener_Landroid_view_View_OnClickListener_Handler ( return cb_setOn123Listener_SetOn123Listener_Landroid_view_View_OnClickListener__V ??= new _JniMarshal_PPL_V (n_SetOn123Listener_Landroid_view_View_OnClickListener_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetOn123Listener_Landroid_view_View_OnClickListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_l) { - 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 l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); - __this.SetOn123Listener (l); - } 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_l, &__n_SetOn123Listener_Landroid_view_View_OnClickListener_); } } + private static void __n_SetOn123Listener_Landroid_view_View_OnClickListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_l) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var l = (global::Android.Views.View.IOnClickListener)global::Java.Lang.Object.GetObject (native_l, JniHandleOwnership.DoNotTransfer); + __this.SetOn123Listener (l); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='android.view']/class[@name='View']/method[@name='setOn123Listener' and count(parameter)=1 and parameter[1][@type='android.view.View.OnClickListener']]" @@ -239,22 +227,18 @@ static Delegate GetAddTouchables_Ljava_util_ArrayList_Handler () return cb_addTouchables_AddTouchables_Ljava_util_ArrayList__V ??= new _JniMarshal_PPL_V (n_AddTouchables_Ljava_util_ArrayList_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_AddTouchables_Ljava_util_ArrayList_ (IntPtr jnienv, IntPtr native__this, IntPtr native_views) { - 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 views = global::Android.Runtime.JavaList.FromJniHandle (native_views, JniHandleOwnership.DoNotTransfer); - __this.AddTouchables (views); - } 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_views, &__n_AddTouchables_Ljava_util_ArrayList_); } } + private static void __n_AddTouchables_Ljava_util_ArrayList_ (IntPtr jnienv, IntPtr native__this, IntPtr native_views) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var views = global::Android.Runtime.JavaList.FromJniHandle (native_views, JniHandleOwnership.DoNotTransfer); + __this.AddTouchables (views); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='android.view']/class[@name='View']/method[@name='addTouchables' and count(parameter)=1 and parameter[1][@type='java.util.ArrayList<android.view.View>']]" diff --git a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs index 6a6d14288..21f300fe0 100644 --- a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs +++ b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaCrypto.cs @@ -51,24 +51,19 @@ static Delegate GetRequiresSecureDecoderComponent_Ljava_lang_String_Handler () return cb_requiresSecureDecoderComponent_RequiresSecureDecoderComponent_Ljava_lang_String__Z ??= new _JniMarshal_PPL_B (n_RequiresSecureDecoderComponent_Ljava_lang_String_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static sbyte n_RequiresSecureDecoderComponent_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - 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 p0 = JNIEnv.GetString (native_p0, JniHandleOwnership.DoNotTransfer); - sbyte __ret = __this.RequiresSecureDecoderComponent (p0) ? (sbyte)1 : (sbyte)0; - 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_p0, &__n_RequiresSecureDecoderComponent_Ljava_lang_String_); } } + private static sbyte __n_RequiresSecureDecoderComponent_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = JNIEnv.GetString (native_p0, JniHandleOwnership.DoNotTransfer); + sbyte __ret = __this.RequiresSecureDecoderComponent (p0) ? (sbyte)1 : (sbyte)0; + return __ret; + } #pragma warning restore 0169 public unsafe bool RequiresSecureDecoderComponent (string p0) diff --git a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs index 605ab3eba..e5e00d5f1 100644 --- a/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs +++ b/tests/generator-Tests/expected.xaji/GenericArguments/Com.Google.Android.Exoplayer.Drm.IExoMediaDrm.cs @@ -52,28 +52,24 @@ static Delegate GetOnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBI return cb_onEvent_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB_V ??= new _JniMarshal_PPLLIIL_V (n_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_p0, IntPtr native_p1, int p2, int p3, IntPtr native_p4) { - 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 p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrm)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); - var p1 = (byte[]) JNIEnv.GetArray (native_p1, JniHandleOwnership.DoNotTransfer, typeof (byte)); - var p4 = (byte[]) JNIEnv.GetArray (native_p4, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.OnEvent (p0, p1, p2, p3, p4); - if (p1 != null) - JNIEnv.CopyArray (p1, native_p1); - if (p4 != null) - JNIEnv.CopyArray (p4, native_p4); - } 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_p0, native_p1, p2, p3, native_p4, &__n_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB); } } + private static void __n_OnEvent_Lcom_google_android_exoplayer_drm_ExoMediaDrm_arrayBIIarrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_p0, IntPtr native_p1, int p2, int p3, IntPtr native_p4) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrm)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); + var p1 = (byte[]) JNIEnv.GetArray (native_p1, JniHandleOwnership.DoNotTransfer, typeof (byte)); + var p4 = (byte[]) JNIEnv.GetArray (native_p4, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.OnEvent (p0, p1, p2, p3, p4); + if (p1 != null) + JNIEnv.CopyArray (p1, native_p1); + if (p4 != null) + JNIEnv.CopyArray (p4, native_p4); + } #pragma warning restore 0169 public unsafe void OnEvent (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrm p0, byte[] p1, int p2, int p3, byte[] p4) @@ -230,22 +226,18 @@ static Delegate GetSetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMedia return cb_setOnEventListener_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener__V ??= new _JniMarshal_PPL_V (n_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - 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 p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrmOnEventListener)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); - __this.SetOnEventListener (p0); - } 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_p0, &__n_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_); } } + private static void __n_SetOnEventListener_Lcom_google_android_exoplayer_drm_ExoMediaDrm_OnEventListener_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrmOnEventListener)global::Java.Lang.Object.GetObject (native_p0, JniHandleOwnership.DoNotTransfer); + __this.SetOnEventListener (p0); + } #pragma warning restore 0169 public unsafe void SetOnEventListener (global::Com.Google.Android.Exoplayer.Drm.IExoMediaDrmOnEventListener p0) diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs index 614c71dcb..57cfad2d2 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II1.cs @@ -51,21 +51,17 @@ static Delegate GetCloseHandler () return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (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.Close (); - } 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_Close); } } + private static void __n_Close (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } #pragma warning restore 0169 public unsafe void Close () diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs index 263a7c111..3ff1c74b1 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.II2.cs @@ -51,21 +51,17 @@ static Delegate GetCloseHandler () return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (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.Close (); - } 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_Close); } } + private static void __n_Close (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } #pragma warning restore 0169 public unsafe void Close () diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs index 64097f765..ad0b3332c 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject.cs @@ -53,21 +53,17 @@ static Delegate GetCloseHandler () return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (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.Close (); - } 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_Close); } } + private static void __n_Close (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='close' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs index d90526cfb..e0d115418 100644 --- a/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs +++ b/tests/generator-Tests/expected.xaji/InterfaceMethodsConflict/Xamarin.Test.SomeObject2.cs @@ -53,21 +53,17 @@ static Delegate GetIrrelevantHandler () return cb_irrelevant_Irrelevant_V ??= new _JniMarshal_PP_V (n_Irrelevant); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Irrelevant (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.Irrelevant (); - } 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_Irrelevant); } } + private static void __n_Irrelevant (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Irrelevant (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject2']/method[@name='irrelevant' and count(parameter)=0]" @@ -88,21 +84,17 @@ static Delegate GetCloseHandler () return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (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.Close (); - } 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_Close); } } + private static void __n_Close (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/interface[@name='I1']/method[@name='close' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs b/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs index f0d3dc4cf..ec8493f5c 100644 --- a/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs +++ b/tests/generator-Tests/expected.xaji/NestedTypes/Xamarin.Test.NotificationCompatBase.cs @@ -67,22 +67,17 @@ static Delegate GetBuild_IHandler () return cb_build_Build_I_Lxamarin_test_NotificationCompatBase_Action_ ??= new _JniMarshal_PPI_L (n_Build_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Build_I (IntPtr jnienv, IntPtr native__this, int p0) { - 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.ToLocalJniHandle (__this.Build (p0)); - } 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, p0, &__n_Build_I); } } + private static IntPtr __n_Build_I (IntPtr jnienv, IntPtr native__this, int p0) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Build (p0)); + } #pragma warning restore 0169 public unsafe global::Xamarin.Test.NotificationCompatBase.Action Build (int p0) diff --git a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs index b4bbca942..e246519bf 100644 --- a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs +++ b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.A.cs @@ -57,22 +57,17 @@ static Delegate GetSetCustomDimension_IHandler () return cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_A_B_ ??= new _JniMarshal_PPI_L (n_SetCustomDimension_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int index) { - 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.ToLocalJniHandle (__this.SetCustomDimension (index)); - } 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, index, &__n_SetCustomDimension_I); } } + private static IntPtr __n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int index) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.SetCustomDimension (index)); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='A.B']/method[@name='setCustomDimension' and count(parameter)=1 and parameter[1][@type='int']]" @@ -126,22 +121,17 @@ static Delegate GetGetHandleHandler () return cb_getHandle_GetHandle_I ??= new _JniMarshal_PP_I (n_GetHandle); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetHandle (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.GetHandle (); - } 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_GetHandle); } } + private static int __n_GetHandle (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.GetHandle (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='A']/method[@name='getHandle' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs index e5d76dff4..7b98e3a88 100644 --- a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs +++ b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.C.cs @@ -54,22 +54,17 @@ static Delegate GetSetCustomDimension_IHandler () return cb_setCustomDimension_SetCustomDimension_I_Lxamarin_test_C_ ??= new _JniMarshal_PPI_L (n_SetCustomDimension_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int index) { - 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.ToLocalJniHandle (__this.SetCustomDimension (index)); - } 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, index, &__n_SetCustomDimension_I); } } + private static IntPtr __n_SetCustomDimension_I (IntPtr jnienv, IntPtr native__this, int index) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.SetCustomDimension (index)); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='C']/method[@name='setCustomDimension' and count(parameter)=1 and parameter[1][@type='int']]" diff --git a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs index 482ac4608..d47f66417 100644 --- a/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/NormalMethods/Xamarin.Test.SomeObject.cs @@ -73,22 +73,17 @@ static Delegate GetGetTypeHandler () return cb_getType_GetType_arrayI ??= new _JniMarshal_PP_L (n_GetType); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetType (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.NewArray (__this.GetType ()); - } 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_GetType); } } + private static IntPtr __n_GetType (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewArray (__this.GetType ()); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='getType' and count(parameter)=0]" @@ -110,25 +105,20 @@ static Delegate GetHandle_Ljava_lang_Object_Ljava_lang_Throwable_Handler () return cb_handle_Handle_Ljava_lang_Object_Ljava_lang_Throwable__I ??= new _JniMarshal_PPLL_I (n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_ (IntPtr jnienv, IntPtr native__this, IntPtr native_o, IntPtr native_t) { - 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 o = global::Java.Lang.Object.GetObject (native_o, JniHandleOwnership.DoNotTransfer); - var t = global::Java.Lang.Object.GetObject (native_t, JniHandleOwnership.DoNotTransfer); - int __ret = __this.Handle (o, t); - 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_o, native_t, &__n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_); } } + private static int __n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_ (IntPtr jnienv, IntPtr native__this, IntPtr native_o, IntPtr native_t) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var o = global::Java.Lang.Object.GetObject (native_o, JniHandleOwnership.DoNotTransfer); + var t = global::Java.Lang.Object.GetObject (native_t, JniHandleOwnership.DoNotTransfer); + int __ret = __this.Handle (o, t); + return __ret; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='handle' and count(parameter)=2 and parameter[1][@type='java.lang.Object'] and parameter[2][@type='java.lang.Throwable']]" @@ -155,22 +145,17 @@ static Delegate GetIntegerMethodHandler () return cb_IntegerMethod_IntegerMethod_I ??= new _JniMarshal_PP_I (n_IntegerMethod); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_IntegerMethod (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.IntegerMethod (); - } 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_IntegerMethod); } } + private static int __n_IntegerMethod (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.IntegerMethod (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='IntegerMethod' and count(parameter)=0]" @@ -192,21 +177,17 @@ static Delegate GetVoidMethodHandler () return cb_VoidMethod_VoidMethod_V ??= new _JniMarshal_PP_V (n_VoidMethod); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_VoidMethod (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.VoidMethod (); - } 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_VoidMethod); } } + private static void __n_VoidMethod (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.VoidMethod (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='VoidMethod' and count(parameter)=0]" @@ -227,22 +208,17 @@ static Delegate GetStringMethodHandler () return cb_StringMethod_StringMethod_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_StringMethod); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_StringMethod (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.StringMethod ()); - } 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_StringMethod); } } + private static IntPtr __n_StringMethod (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.StringMethod ()); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='StringMethod' and count(parameter)=0]" @@ -264,22 +240,17 @@ static Delegate GetObjectMethodHandler () return cb_ObjectMethod_ObjectMethod_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_ObjectMethod); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_ObjectMethod (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.ToLocalJniHandle (__this.ObjectMethod ()); - } 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_ObjectMethod); } } + private static IntPtr __n_ObjectMethod (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.ObjectMethod ()); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='ObjectMethod' and count(parameter)=0]" @@ -301,23 +272,19 @@ static Delegate GetVoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_Han return cb_VoidMethodWithParams_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object__V ??= new _JniMarshal_PPLIL_V (n_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_astring, int anint, IntPtr native_anObject) { - 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 astring = JNIEnv.GetString (native_astring, JniHandleOwnership.DoNotTransfer); - var anObject = global::Java.Lang.Object.GetObject (native_anObject, JniHandleOwnership.DoNotTransfer); - __this.VoidMethodWithParams (astring, anint, anObject); - } 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_astring, anint, native_anObject, &__n_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_); } } + private static void __n_VoidMethodWithParams_Ljava_lang_String_ILjava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_astring, int anint, IntPtr native_anObject) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var astring = JNIEnv.GetString (native_astring, JniHandleOwnership.DoNotTransfer); + var anObject = global::Java.Lang.Object.GetObject (native_anObject, JniHandleOwnership.DoNotTransfer); + __this.VoidMethodWithParams (astring, anint, anObject); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='VoidMethodWithParams' and count(parameter)=3 and parameter[1][@type='java.lang.String'] and parameter[2][@type='int'] and parameter[3][@type='java.lang.Object']]" @@ -347,22 +314,18 @@ static Delegate GetObsoleteMethodHandler () } [global::System.Obsolete] - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_ObsoleteMethod (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.ObsoleteMethod (); - } 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_ObsoleteMethod); } } + [global::System.Obsolete] + private static int __n_ObsoleteMethod (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.ObsoleteMethod (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='ObsoleteMethod' and count(parameter)=0]" @@ -385,22 +348,18 @@ static Delegate GetArrayListTest_Ljava_util_ArrayList_Handler () return cb_ArrayListTest_ArrayListTest_Ljava_util_ArrayList__V ??= new _JniMarshal_PPL_V (n_ArrayListTest_Ljava_util_ArrayList_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_ArrayListTest_Ljava_util_ArrayList_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - 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 p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); - __this.ArrayListTest (p0); - } 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_p0, &__n_ArrayListTest_Ljava_util_ArrayList_); } } + private static void __n_ArrayListTest_Ljava_util_ArrayList_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); + __this.ArrayListTest (p0); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='SomeObject']/method[@name='ArrayListTest' and count(parameter)=1 and parameter[1][@type='java.util.ArrayList<java.lang.Integer>']]" diff --git a/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs b/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs index 9fe0940b6..09989862c 100644 --- a/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs +++ b/tests/generator-Tests/expected.xaji/NormalProperties/Xamarin.Test.SomeObject.cs @@ -53,22 +53,17 @@ static Delegate GetGetSomeIntegerHandler () return cb_getSomeInteger_GetSomeInteger_I ??= new _JniMarshal_PP_I (n_GetSomeInteger); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSomeInteger (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.SomeInteger; - } 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_GetSomeInteger); } } + private static int __n_GetSomeInteger (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.SomeInteger; + } #pragma warning restore 0169 static Delegate cb_setSomeInteger_SetSomeInteger_I_V; @@ -78,21 +73,17 @@ static Delegate GetSetSomeInteger_IHandler () return cb_setSomeInteger_SetSomeInteger_I_V ??= new _JniMarshal_PPI_V (n_SetSomeInteger_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeInteger_I (IntPtr jnienv, IntPtr native__this, int newvalue) { - 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.SomeInteger = newvalue; - } 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, newvalue, &__n_SetSomeInteger_I); } } + private static void __n_SetSomeInteger_I (IntPtr jnienv, IntPtr native__this, int newvalue) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.SomeInteger = newvalue; + } #pragma warning restore 0169 public abstract int SomeInteger { @@ -112,22 +103,17 @@ static Delegate GetGetSomeObjectPropertyHandler () return cb_getSomeObjectProperty_GetSomeObjectProperty_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_GetSomeObjectProperty); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetSomeObjectProperty (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.ToLocalJniHandle (__this.SomeObjectProperty); - } 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_GetSomeObjectProperty); } } + private static IntPtr __n_GetSomeObjectProperty (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.SomeObjectProperty); + } #pragma warning restore 0169 static Delegate cb_setSomeObjectProperty_SetSomeObjectProperty_Ljava_lang_Object__V; @@ -137,22 +123,18 @@ static Delegate GetSetSomeObjectProperty_Ljava_lang_Object_Handler () return cb_setSomeObjectProperty_SetSomeObjectProperty_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetSomeObjectProperty_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeObjectProperty_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_newvalue) { - 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 newvalue = global::Java.Lang.Object.GetObject (native_newvalue, JniHandleOwnership.DoNotTransfer); - __this.SomeObjectProperty = newvalue; - } 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_newvalue, &__n_SetSomeObjectProperty_Ljava_lang_Object_); } } + private static void __n_SetSomeObjectProperty_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_newvalue) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var newvalue = global::Java.Lang.Object.GetObject (native_newvalue, JniHandleOwnership.DoNotTransfer); + __this.SomeObjectProperty = newvalue; + } #pragma warning restore 0169 public abstract global::Java.Lang.Object SomeObjectProperty { @@ -172,22 +154,17 @@ static Delegate GetGetSomeStringHandler () return cb_getSomeString_GetSomeString_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetSomeString); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetSomeString (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.SomeString); - } 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_GetSomeString); } } + private static IntPtr __n_GetSomeString (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.SomeString); + } #pragma warning restore 0169 static Delegate cb_setSomeString_SetSomeString_Ljava_lang_String__V; @@ -197,22 +174,18 @@ static Delegate GetSetSomeString_Ljava_lang_String_Handler () return cb_setSomeString_SetSomeString_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_SetSomeString_Ljava_lang_String_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetSomeString_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_newvalue) { - 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 newvalue = JNIEnv.GetString (native_newvalue, JniHandleOwnership.DoNotTransfer); - __this.SomeString = newvalue; - } 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_newvalue, &__n_SetSomeString_Ljava_lang_String_); } } + private static void __n_SetSomeString_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_newvalue) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var newvalue = JNIEnv.GetString (native_newvalue, JniHandleOwnership.DoNotTransfer); + __this.SomeString = newvalue; + } #pragma warning restore 0169 public abstract string SomeString { diff --git a/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs b/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs index 8e30fc67a..4973df61a 100644 --- a/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs +++ b/tests/generator-Tests/expected.xaji/ParameterXPath/Xamarin.Test.A.cs @@ -54,22 +54,18 @@ static Delegate GetSetA_Ljava_lang_Object_Handler () return cb_setA_SetA_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetA_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetA_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) { - 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 adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); - __this.SetA (adapter); - } 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_adapter, &__n_SetA_Ljava_lang_Object_); } } + private static void __n_SetA_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_adapter) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var adapter = global::Java.Lang.Object.GetObject (native_adapter, JniHandleOwnership.DoNotTransfer); + __this.SetA (adapter); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='A']/method[@name='setA' and count(parameter)=1 and parameter[1][@type='T']]" @@ -95,22 +91,18 @@ static Delegate GetListTest_Ljava_util_List_Handler () return cb_listTest_ListTest_Ljava_util_List__V ??= new _JniMarshal_PPL_V (n_ListTest_Ljava_util_List_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_ListTest_Ljava_util_List_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) { - 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 p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); - __this.ListTest (p0); - } 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_p0, &__n_ListTest_Ljava_util_List_); } } + private static void __n_ListTest_Ljava_util_List_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var p0 = global::Android.Runtime.JavaList.FromJniHandle (native_p0, JniHandleOwnership.DoNotTransfer); + __this.ListTest (p0); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='xamarin.test']/class[@name='A']/method[@name='listTest' and count(parameter)=1 and parameter[1][@type='java.util.List<java.lang.Integer>']]" diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs index d7a6eaab4..82fa1d657 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.FilterOutputStream.cs @@ -75,21 +75,17 @@ static Delegate GetWrite_IHandler () return cb_write_Write_I_V ??= new _JniMarshal_PPI_V (n_Write_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_I (IntPtr jnienv, IntPtr native__this, int oneByte) { - 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.Write (oneByte); - } 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, oneByte, &__n_Write_I); } } + private static void __n_Write_I (IntPtr jnienv, IntPtr native__this, int oneByte) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Write (oneByte); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='FilterOutputStream']/method[@name='write' and count(parameter)=1 and parameter[1][@type='int']]" diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs index 6078b58ac..96a5f1c7c 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.IOException.cs @@ -53,21 +53,17 @@ static Delegate GetPrintStackTraceHandler () return cb_printStackTrace_PrintStackTrace_V ??= new _JniMarshal_PP_V (n_PrintStackTrace); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_PrintStackTrace (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.PrintStackTrace (); - } 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_PrintStackTrace); } } + private static void __n_PrintStackTrace (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.PrintStackTrace (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='IOException']/method[@name='printStackTrace' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs index fe6c29655..16afe2e40 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.InputStream.cs @@ -70,22 +70,17 @@ static Delegate GetAvailableHandler () return cb_available_Available_I ??= new _JniMarshal_PP_I (n_Available); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Available (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.Available (); - } 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_Available); } } + private static int __n_Available (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Available (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='available' and count(parameter)=0]" @@ -107,21 +102,17 @@ static Delegate GetCloseHandler () return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (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.Close (); - } 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_Close); } } + private static void __n_Close (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='close' and count(parameter)=0]" @@ -142,21 +133,17 @@ static Delegate GetMark_IHandler () return cb_mark_Mark_I_V ??= new _JniMarshal_PPI_V (n_Mark_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Mark_I (IntPtr jnienv, IntPtr native__this, int readlimit) { - 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.Mark (readlimit); - } 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, readlimit, &__n_Mark_I); } } + private static void __n_Mark_I (IntPtr jnienv, IntPtr native__this, int readlimit) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Mark (readlimit); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='mark' and count(parameter)=1 and parameter[1][@type='int']]" @@ -179,22 +166,17 @@ static Delegate GetMarkSupportedHandler () return cb_markSupported_MarkSupported_Z ??= new _JniMarshal_PP_B (n_MarkSupported); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static sbyte n_MarkSupported (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.MarkSupported () ? (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, &__n_MarkSupported); } } + private static sbyte __n_MarkSupported (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.MarkSupported () ? (sbyte)1 : (sbyte)0; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='markSupported' and count(parameter)=0]" @@ -216,22 +198,17 @@ static Delegate GetReadHandler () return cb_read_Read_I ??= new _JniMarshal_PP_I (n_Read); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Read (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.Read (); - } 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_Read); } } + private static int __n_Read (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Read (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='read' and count(parameter)=0]" @@ -245,26 +222,21 @@ static Delegate GetRead_arrayBHandler () return cb_read_Read_arrayB_I ??= new _JniMarshal_PPL_I (n_Read_arrayB); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Read_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer) { - 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 buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - int __ret = __this.Read (buffer); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); - 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_buffer, &__n_Read_arrayB); } } + private static int __n_Read_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + int __ret = __this.Read (buffer); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + return __ret; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='read' and count(parameter)=1 and parameter[1][@type='byte[]']]" @@ -294,26 +266,21 @@ static Delegate GetRead_arrayBIIHandler () return cb_read_Read_arrayBII_I ??= new _JniMarshal_PPLII_I (n_Read_arrayBII); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_Read_arrayBII (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer, int byteOffset, int byteCount) { - 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 buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - int __ret = __this.Read (buffer, byteOffset, byteCount); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); - 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_buffer, byteOffset, byteCount, &__n_Read_arrayBII); } } + private static int __n_Read_arrayBII (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer, int byteOffset, int byteCount) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + int __ret = __this.Read (buffer, byteOffset, byteCount); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + return __ret; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='read' and count(parameter)=3 and parameter[1][@type='byte[]'] and parameter[2][@type='int'] and parameter[3][@type='int']]" @@ -345,21 +312,17 @@ static Delegate GetResetHandler () return cb_reset_Reset_V ??= new _JniMarshal_PP_V (n_Reset); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Reset (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.Reset (); - } 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_Reset); } } + private static void __n_Reset (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Reset (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='reset' and count(parameter)=0]" @@ -380,22 +343,17 @@ static Delegate GetSkip_JHandler () return cb_skip_Skip_J_J ??= new _JniMarshal_PPJ_J (n_Skip_J); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static long n_Skip_J (IntPtr jnienv, IntPtr native__this, long byteCount) { - 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.Skip (byteCount); - } 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, byteCount, &__n_Skip_J); } } + private static long __n_Skip_J (IntPtr jnienv, IntPtr native__this, long byteCount) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return __this.Skip (byteCount); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='InputStream']/method[@name='skip' and count(parameter)=1 and parameter[1][@type='long']]" diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs b/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs index 0fe6cb911..8a6959ec7 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.IO.OutputStream.cs @@ -70,21 +70,17 @@ static Delegate GetCloseHandler () return cb_close_Close_V ??= new _JniMarshal_PP_V (n_Close); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Close (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.Close (); - } 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_Close); } } + private static void __n_Close (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Close (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='OutputStream']/method[@name='close' and count(parameter)=0]" @@ -105,21 +101,17 @@ static Delegate GetFlushHandler () return cb_flush_Flush_V ??= new _JniMarshal_PP_V (n_Flush); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Flush (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.Flush (); - } 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_Flush); } } + private static void __n_Flush (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Flush (); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='OutputStream']/method[@name='flush' and count(parameter)=0]" @@ -140,24 +132,20 @@ static Delegate GetWrite_arrayBHandler () return cb_write_Write_arrayB_V ??= new _JniMarshal_PPL_V (n_Write_arrayB); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer) { - 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 buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.Write (buffer); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); - } 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_buffer, &__n_Write_arrayB); } } + private static void __n_Write_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.Write (buffer); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='OutputStream']/method[@name='write' and count(parameter)=1 and parameter[1][@type='byte[]']]" @@ -186,24 +174,20 @@ static Delegate GetWrite_arrayBIIHandler () return cb_write_Write_arrayBII_V ??= new _JniMarshal_PPLII_V (n_Write_arrayBII); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_arrayBII (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer, int offset, int count) { - 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 buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.Write (buffer, offset, count); - if (buffer != null) - JNIEnv.CopyArray (buffer, native_buffer); - } 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_buffer, offset, count, &__n_Write_arrayBII); } } + private static void __n_Write_arrayBII (IntPtr jnienv, IntPtr native__this, IntPtr native_buffer, int offset, int count) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var buffer = (byte[]) JNIEnv.GetArray (native_buffer, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.Write (buffer, offset, count); + if (buffer != null) + JNIEnv.CopyArray (buffer, native_buffer); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='OutputStream']/method[@name='write' and count(parameter)=3 and parameter[1][@type='byte[]'] and parameter[2][@type='int'] and parameter[3][@type='int']]" @@ -234,21 +218,17 @@ static Delegate GetWrite_IHandler () return cb_write_Write_I_V ??= new _JniMarshal_PPI_V (n_Write_I); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Write_I (IntPtr jnienv, IntPtr native__this, int oneByte) { - 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.Write (oneByte); - } 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, oneByte, &__n_Write_I); } } + private static void __n_Write_I (IntPtr jnienv, IntPtr native__this, int oneByte) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Write (oneByte); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='java.io']/class[@name='OutputStream']/method[@name='write' and count(parameter)=1 and parameter[1][@type='int']]" diff --git a/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs b/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs index 6f0b2d774..311c44de3 100644 --- a/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs +++ b/tests/generator-Tests/expected.xaji/Streams/Java.Lang.Throwable.cs @@ -31,22 +31,17 @@ static Delegate GetGetMessageHandler () return cb_getMessage_GetMessage_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetMessage); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetMessage (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.Message); - } 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_GetMessage); } } + private static IntPtr __n_GetMessage (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Message); + } #pragma warning restore 0169 public new virtual unsafe string Message { diff --git a/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs b/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs index 367167188..613ab546d 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/ClassWithoutNamespace.cs @@ -68,21 +68,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='']/interface[@name='InterfaceWithoutNamespace']/method[@name='Foo' and count(parameter)=0]" diff --git a/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs b/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs index e6740dd09..4b9ea6161 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/IInterfaceWithoutNamespace.cs @@ -49,21 +49,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 public unsafe void Foo () diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs index 7e73eb5bd..5f366be27 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.ICollection.cs @@ -56,24 +56,19 @@ static Delegate GetAdd_Ljava_lang_Object_Handler () return cb_add_Add_Ljava_lang_Object__Z ??= new _JniMarshal_PPL_B (n_Add_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static sbyte n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) { - 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 e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); - sbyte __ret = __this.Add (e) ? (sbyte)1 : (sbyte)0; - 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_e, &__n_Add_Ljava_lang_Object_); } } + private static sbyte __n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); + sbyte __ret = __this.Add (e) ? (sbyte)1 : (sbyte)0; + return __ret; + } #pragma warning restore 0169 public unsafe bool Add (global::Java.Lang.Object e) @@ -98,21 +93,17 @@ static Delegate GetClearHandler () return cb_clear_Clear_V ??= new _JniMarshal_PP_V (n_Clear); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Clear (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.Clear (); - } 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_Clear); } } + private static void __n_Clear (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Clear (); + } #pragma warning restore 0169 public unsafe void Clear () diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs index af1bf8cab..0e38e3ef1 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IDeque.cs @@ -56,24 +56,19 @@ static Delegate GetAdd_Ljava_lang_Object_Handler () return cb_add_Add_Ljava_lang_Object__Z ??= new _JniMarshal_PPL_B (n_Add_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static sbyte n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) { - 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 e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); - sbyte __ret = __this.Add (e) ? (sbyte)1 : (sbyte)0; - 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_e, &__n_Add_Ljava_lang_Object_); } } + private static sbyte __n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); + sbyte __ret = __this.Add (e) ? (sbyte)1 : (sbyte)0; + return __ret; + } #pragma warning restore 0169 public unsafe bool Add (global::Java.Lang.Object e) @@ -98,21 +93,17 @@ static Delegate GetClearHandler () return cb_clear_Clear_V ??= new _JniMarshal_PP_V (n_Clear); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Clear (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.Clear (); - } 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_Clear); } } + private static void __n_Clear (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Clear (); + } #pragma warning restore 0169 public unsafe void Clear () diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs index cce3be5d3..6aea8ff75 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Java.Util.IQueue.cs @@ -54,24 +54,19 @@ static Delegate GetAdd_Ljava_lang_Object_Handler () return cb_add_Add_Ljava_lang_Object__Z ??= new _JniMarshal_PPL_B (n_Add_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static sbyte n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) { - 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 e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); - sbyte __ret = __this.Add (e) ? (sbyte)1 : (sbyte)0; - 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_e, &__n_Add_Ljava_lang_Object_); } } + private static sbyte __n_Add_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_e) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var e = global::Java.Lang.Object.GetObject (native_e, JniHandleOwnership.DoNotTransfer); + sbyte __ret = __this.Add (e) ? (sbyte)1 : (sbyte)0; + return __ret; + } #pragma warning restore 0169 public unsafe bool Add (global::Java.Lang.Object e) @@ -96,21 +91,17 @@ static Delegate GetClearHandler () return cb_clear_Clear_V ??= new _JniMarshal_PP_V (n_Clear); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Clear (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.Clear (); - } 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_Clear); } } + private static void __n_Clear (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + __this.Clear (); + } #pragma warning restore 0169 public unsafe void Clear () diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs index fb80be61d..885f1f0e8 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericImplementation.cs @@ -70,24 +70,20 @@ static Delegate GetSetObject_arrayBHandler () return cb_SetObject_SetObject_arrayB_V ??= new _JniMarshal_PPL_V (n_SetObject_arrayB); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_arrayB (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 = (byte[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (byte)); - __this.SetObject (value); - if (value != null) - JNIEnv.CopyArray (value, native_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_SetObject_arrayB); } } + private static void __n_SetObject_arrayB (IntPtr jnienv, IntPtr native__this, IntPtr native_value) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = (byte[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (byte)); + __this.SetObject (value); + if (value != null) + JNIEnv.CopyArray (value, native_value); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/class[@name='GenericImplementation']/method[@name='SetObject' and count(parameter)=1 and parameter[1][@type='byte[]']]" diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs index 62641c523..8ea79c2e2 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericObjectPropertyImplementation.cs @@ -70,22 +70,17 @@ static Delegate GetGetObjectHandler () return cb_getObject_GetObject_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_GetObject); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetObject (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.ToLocalJniHandle (__this.Object); - } 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_GetObject); } } + private static IntPtr __n_GetObject (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Object); + } #pragma warning restore 0169 static Delegate cb_setObject_SetObject_Ljava_lang_Object__V; @@ -95,22 +90,18 @@ static Delegate GetSetObject_Ljava_lang_Object_Handler () return cb_setObject_SetObject_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) { - 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 @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); - __this.Object = @object; - } 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__object, &__n_SetObject_Ljava_lang_Object_); } } + private static void __n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); + __this.Object = @object; + } #pragma warning restore 0169 public virtual unsafe global::Java.Lang.Object Object { diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs index 9475a4226..151f245ab 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringImplementation.cs @@ -70,24 +70,20 @@ static Delegate GetSetObject_arrayLjava_lang_String_Handler () return cb_SetObject_SetObject_arrayLjava_lang_String__V ??= new _JniMarshal_PPL_V (n_SetObject_arrayLjava_lang_String_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_arrayLjava_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 = (string[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (string)); - __this.SetObject (value); - if (value != null) - JNIEnv.CopyArray (value, native_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_SetObject_arrayLjava_lang_String_); } } + private static void __n_SetObject_arrayLjava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = (string[]) JNIEnv.GetArray (native_value, JniHandleOwnership.DoNotTransfer, typeof (string)); + __this.SetObject (value); + if (value != null) + JNIEnv.CopyArray (value, native_value); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/class[@name='GenericStringImplementation']/method[@name='SetObject' and count(parameter)=1 and parameter[1][@type='java.lang.String[]']]" diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs index 5670c9cfa..dc9859f36 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.GenericStringPropertyImplementation.cs @@ -70,22 +70,17 @@ static Delegate GetGetObjectHandler () return cb_getObject_GetObject_Ljava_lang_String_ ??= new _JniMarshal_PP_L (n_GetObject); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetObject (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.Object); - } 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_GetObject); } } + private static IntPtr __n_GetObject (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.NewString (__this.Object); + } #pragma warning restore 0169 static Delegate cb_SetObject_SetObject_Ljava_lang_String__V; @@ -95,22 +90,18 @@ static Delegate GetSetObject_Ljava_lang_String_Handler () return cb_SetObject_SetObject_Ljava_lang_String__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_String_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) { - 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 @object = JNIEnv.GetString (native__object, JniHandleOwnership.DoNotTransfer); - __this.Object = @object; - } 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__object, &__n_SetObject_Ljava_lang_String_); } } + private static void __n_SetObject_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var @object = JNIEnv.GetString (native__object, JniHandleOwnership.DoNotTransfer); + __this.Object = @object; + } #pragma warning restore 0169 public virtual unsafe string Object { diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs index d415fb62e..ea85904ea 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericInterface.cs @@ -52,22 +52,18 @@ static Delegate GetSetObject_Ljava_lang_Object_Handler () return cb_SetObject_SetObject_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_Object_ (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 = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - __this.SetObject (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_SetObject_Ljava_lang_Object_); } } + private static void __n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + __this.SetObject (value); + } #pragma warning restore 0169 public unsafe void SetObject (global::Java.Lang.Object value) diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs index 0ea2d290e..9c40dc51d 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.IGenericPropertyInterface.cs @@ -58,22 +58,17 @@ static Delegate GetGetObjectHandler () return cb_getObject_GetObject_Ljava_lang_Object_ ??= new _JniMarshal_PP_L (n_GetObject); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_GetObject (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.ToLocalJniHandle (__this.Object); - } 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_GetObject); } } + private static IntPtr __n_GetObject (IntPtr jnienv, IntPtr native__this) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + return JNIEnv.ToLocalJniHandle (__this.Object); + } #pragma warning restore 0169 static Delegate cb_setObject_SetObject_Ljava_lang_Object__V; @@ -83,22 +78,18 @@ static Delegate GetSetObject_Ljava_lang_Object_Handler () return cb_setObject_SetObject_Ljava_lang_Object__V ??= new _JniMarshal_PPL_V (n_SetObject_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) { - 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 @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); - __this.Object = @object; - } 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__object, &__n_SetObject_Ljava_lang_Object_); } } + private static void __n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native__object) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var @object = global::Java.Lang.Object.GetObject (native__object, JniHandleOwnership.DoNotTransfer); + __this.Object = @object; + } #pragma warning restore 0169 public unsafe global::Java.Lang.Object Object { diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs index af8a333ee..5df4d25ee 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.ITestInterface.cs @@ -113,24 +113,19 @@ static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - 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 tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetSpanFlags (tag); - 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_tag, &__n_GetSpanFlags_Ljava_lang_Object_); } } + private static int __n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetSpanFlags (tag); + return __ret; + } #pragma warning restore 0169 public unsafe int GetSpanFlags (global::Java.Lang.Object tag) @@ -153,22 +148,18 @@ static Delegate GetAppend_Ljava_lang_CharSequence_Handler () return cb_append_Append_Ljava_lang_CharSequence__V ??= new _JniMarshal_PPL_V (n_Append_Ljava_lang_CharSequence_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Append_Ljava_lang_CharSequence_ (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 = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - __this.Append (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_Append_Ljava_lang_CharSequence_); } } + private static void __n_Append_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + __this.Append (value); + } #pragma warning restore 0169 public unsafe void Append (global::Java.Lang.ICharSequence value) @@ -192,24 +183,19 @@ static Delegate GetIdentity_Ljava_lang_CharSequence_Handler () return cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Identity_Ljava_lang_CharSequence_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Identity_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - 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 value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); - 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_value, &__n_Identity_Ljava_lang_CharSequence_); } } + private static IntPtr __n_Identity_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); + return __ret; + } #pragma warning restore 0169 public unsafe global::Java.Lang.ICharSequence IdentityFormatted (global::Java.Lang.ICharSequence value) diff --git a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs index 9e636b809..ad4e1e4d6 100644 --- a/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs +++ b/tests/generator-Tests/expected.xaji/TestInterface/Test.ME.TestInterfaceImplementation.cs @@ -91,24 +91,19 @@ static Delegate GetGetSpanFlags_Ljava_lang_Object_Handler () return cb_getSpanFlags_GetSpanFlags_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_GetSpanFlags_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) { - 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 tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); - int __ret = __this.GetSpanFlags (tag); - 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_tag, &__n_GetSpanFlags_Ljava_lang_Object_); } } + private static int __n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_tag) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var tag = global::Java.Lang.Object.GetObject (native_tag, JniHandleOwnership.DoNotTransfer); + int __ret = __this.GetSpanFlags (tag); + return __ret; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/interface[@name='TestInterface']/method[@name='getSpanFlags' and count(parameter)=1 and parameter[1][@type='java.lang.Object']]" @@ -122,22 +117,18 @@ static Delegate GetAppend_Ljava_lang_CharSequence_Handler () return cb_append_Append_Ljava_lang_CharSequence__V ??= new _JniMarshal_PPL_V (n_Append_Ljava_lang_CharSequence_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static void n_Append_Ljava_lang_CharSequence_ (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 = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - __this.Append (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_Append_Ljava_lang_CharSequence_); } } + private static void __n_Append_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + __this.Append (value); + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/interface[@name='TestInterface']/method[@name='append' and count(parameter)=1 and parameter[1][@type='java.lang.CharSequence']]" @@ -158,24 +149,19 @@ static Delegate GetIdentity_Ljava_lang_CharSequence_Handler () return cb_identity_Identity_Ljava_lang_CharSequence__Ljava_lang_CharSequence_ ??= new _JniMarshal_PPL_L (n_Identity_Ljava_lang_CharSequence_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static IntPtr n_Identity_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) { - 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 value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); - IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); - 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_value, &__n_Identity_Ljava_lang_CharSequence_); } } + private static IntPtr __n_Identity_Ljava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var value = global::Java.Lang.Object.GetObject (native_value, JniHandleOwnership.DoNotTransfer); + IntPtr __ret = CharSequence.ToLocalJniHandle (__this.IdentityFormatted (value)); + return __ret; + } #pragma warning restore 0169 // Metadata.xml XPath method reference: path="/api/package[@name='test.me']/interface[@name='TestInterface']/method[@name='identity' and count(parameter)=1 and parameter[1][@type='java.lang.CharSequence']]" diff --git a/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs b/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs index 94257a811..8667c2f00 100644 --- a/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs +++ b/tests/generator-Tests/expected.xaji/java.lang.Enum/Java.Lang.IComparable.cs @@ -52,24 +52,19 @@ static Delegate GetCompareTo_Ljava_lang_Object_Handler () return cb_compareTo_CompareTo_Ljava_lang_Object__I ??= new _JniMarshal_PPL_I (n_CompareTo_Ljava_lang_Object_); } - [global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions] static int n_CompareTo_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_another) { - 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 another = global::Java.Lang.Object.GetObject (native_another, JniHandleOwnership.DoNotTransfer); - int __ret = __this.CompareTo (another); - 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_another, &__n_CompareTo_Ljava_lang_Object_); } } + private static int __n_CompareTo_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this, IntPtr native_another) + { + var __this = global::Java.Lang.Object.GetObject (jnienv, native__this, JniHandleOwnership.DoNotTransfer); + var another = global::Java.Lang.Object.GetObject (native_another, JniHandleOwnership.DoNotTransfer); + int __ret = __this.CompareTo (another); + return __ret; + } #pragma warning restore 0169 public unsafe int CompareTo (global::Java.Lang.Object another) diff --git a/tools/generator/Java.Interop.Tools.Generator.ObjectModel/NamespaceMapping.cs b/tools/generator/Java.Interop.Tools.Generator.ObjectModel/NamespaceMapping.cs index a8a9cd5e4..96194035f 100644 --- a/tools/generator/Java.Interop.Tools.Generator.ObjectModel/NamespaceMapping.cs +++ b/tools/generator/Java.Interop.Tools.Generator.ObjectModel/NamespaceMapping.cs @@ -96,4 +96,3 @@ string FromJniType (char c) } } } - diff --git a/tools/generator/SourceWriters/Attributes/DebuggerDisableUserUnhandledExceptionsAttributeAttr.cs b/tools/generator/SourceWriters/Attributes/DebuggerDisableUserUnhandledExceptionsAttributeAttr.cs deleted file mode 100644 index 0f7a6ace1..000000000 --- a/tools/generator/SourceWriters/Attributes/DebuggerDisableUserUnhandledExceptionsAttributeAttr.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Xamarin.SourceWriter; - -namespace generator.SourceWriters -{ - public class DebuggerDisableUserUnhandledExceptionsAttributeAttr : AttributeWriter - { - public override void WriteAttribute (CodeWriter writer) - { - writer.WriteLine ("[global::System.Diagnostics.DebuggerDisableUserUnhandledExceptions]"); - } - } -} diff --git a/tools/generator/SourceWriters/MethodCallback.cs b/tools/generator/SourceWriters/MethodCallback.cs index 21efefc70..ca64782c7 100644 --- a/tools/generator/SourceWriters/MethodCallback.cs +++ b/tools/generator/SourceWriters/MethodCallback.cs @@ -47,8 +47,6 @@ public MethodCallback (GenBase type, Method method, CodeGenerationOptions option SourceWriterExtensions.AddSupportedOSPlatform (Attributes, method, opt); - Attributes.Add (new DebuggerDisableUserUnhandledExceptionsAttributeAttr ()); - Parameters.Add (new MethodParameterWriter ("jnienv", TypeReferenceWriter.IntPtr)); Parameters.Add (new MethodParameterWriter ("native__this", TypeReferenceWriter.IntPtr)); @@ -58,13 +56,28 @@ public MethodCallback (GenBase type, Method method, CodeGenerationOptions option protected override void WriteBody (CodeWriter writer) { - writer.WriteLine ("if (!global::Java.Interop.JniEnvironment.BeginMarshalMethod (jnienv, out var __envp, out var __r))"); + var call = $"global::Java.Interop.JniMarshal.{(method.IsVoid ? "SafeInvokeAction" : "SafeInvokeFunc")} (jnienv, native__this"; + foreach (var p in method.Parameters) + call += $", {opt.GetSafeIdentifier (p.UnsafeNativeName)}"; + call += $", &__{Name})"; + + writer.WriteLine ("unsafe {"); writer.Indent (); - writer.WriteLine (method.IsVoid ? "return;" : "return default;"); + writer.WriteLine (method.IsVoid ? call + ";" : "return " + call + ";"); writer.Unindent (); + writer.WriteLine ("}"); + } - writer.WriteLine (); - writer.WriteLine ("try {"); + void WriteMarshalBody (CodeWriter writer) + { + var attributes = new List (); + SourceWriterExtensions.AddObsolete (attributes, null, opt, forceDeprecate: !string.IsNullOrWhiteSpace (method.Deprecated), deprecatedSince: method.DeprecatedSince); + SourceWriterExtensions.AddSupportedOSPlatform (attributes, method, opt); + foreach (var attribute in attributes) + attribute.WriteAttribute (writer); + + writer.WriteLine ($"private static {method.RetVal.NativeType} __{Name} (IntPtr jnienv, IntPtr native__this{method.Parameters.GetCallbackSignature (opt)})"); + writer.WriteLine ("{"); writer.Indent (); writer.WriteLine ($"var __this = global::Java.Lang.Object.GetObject<{opt.GetOutputName (type.FullName)}> (jnienv, native__this, JniHandleOwnership.DoNotTransfer){opt.NullForgivingOperator};"); @@ -92,22 +105,7 @@ protected override void WriteBody (CodeWriter writer) writer.WriteLine ("return __ret;"); writer.Unindent (); - - writer.WriteLine ("} catch (global::System.Exception __e) {"); - writer.Indent (); - writer.WriteLine ("__r.OnUserUnhandledException (ref __envp, __e);"); - - if (!method.IsVoid) - writer.WriteLine ("return default;"); - - writer.Unindent (); - writer.WriteLine ("} finally {"); - writer.Indent (); - writer.WriteLine ("global::Java.Interop.JniEnvironment.EndMarshalMethod (ref __envp);"); - writer.Unindent (); writer.WriteLine ("}"); - - } public override void Write (CodeWriter writer) @@ -120,6 +118,7 @@ public override void Write (CodeWriter writer) writer.WriteLine (); base.Write (writer); + WriteMarshalBody (writer); writer.WriteLineNoIndent ("#pragma warning restore 0169"); writer.WriteLine ();