Skip to content

[generator] Use GC.KeepAlive for reference type method parameters. #722

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Sep 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_mystring);
global::System.GC.KeepAlive (mystring);
}
}

Expand All @@ -38,6 +39,7 @@
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_mystring);
global::System.GC.KeepAlive (mystring);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}

Expand All @@ -46,6 +47,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}

Expand All @@ -65,6 +67,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}

Expand All @@ -84,6 +87,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}
}
Expand Down Expand Up @@ -65,6 +66,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}
}
Expand Down Expand Up @@ -94,6 +96,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}
}
Expand Down Expand Up @@ -123,6 +126,7 @@ public partial class MyClass {
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_mystring);
global::System.GC.KeepAlive (mystring);
}
}

Expand All @@ -38,6 +39,7 @@
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_mystring);
global::System.GC.KeepAlive (mystring);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_mystring);
global::System.GC.KeepAlive (mystring);
}
}

Expand All @@ -38,6 +39,7 @@
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_mystring);
global::System.GC.KeepAlive (mystring);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ static void n_SetAdapter_Lxamarin_test_SpinnerAdapter_ (IntPtr jnienv, IntPtr na
__args [0] = new JniArgumentValue ((value == null) ? IntPtr.Zero : ((global::Java.Lang.Object) value).Handle);
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
global::System.GC.KeepAlive (value);
}
}
}
Expand Down Expand Up @@ -126,6 +127,7 @@ public AbsSpinnerInvoker (IntPtr handle, JniHandleOwnership transfer) : base (ha
_members.InstanceMethods.InvokeAbstractVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_value);
global::System.GC.KeepAlive (value);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ public AdapterViewInvoker (IntPtr handle, JniHandleOwnership transfer) : base (h
_members.InstanceMethods.InvokeAbstractVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_value);
global::System.GC.KeepAlive (value);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public unsafe SpannableString (global::Java.Lang.ICharSequence source)
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_source);
global::System.GC.KeepAlive (source);
}
}

Expand All @@ -70,6 +71,7 @@ public unsafe SpannableString (string source)
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_source);
global::System.GC.KeepAlive (source);
}
}

Expand Down Expand Up @@ -102,6 +104,7 @@ static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this
var __rm = _members.InstanceMethods.InvokeVirtualInt32Method (__id, this, __args);
return (global::Android.Text.SpanTypes) __rm;
} finally {
global::System.GC.KeepAlive (what);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ static int n_GetSpanFlags_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this
var __rm = _members.InstanceMethods.InvokeVirtualInt32Method (__id, this, __args);
return (global::Android.Text.SpanTypes) __rm;
} finally {
global::System.GC.KeepAlive (p0);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ public virtual unsafe void SetOnClickListener (global::Android.Views.View.IOnCli
__args [0] = new JniArgumentValue ((l == null) ? IntPtr.Zero : ((global::Java.Lang.Object) l).Handle);
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
global::System.GC.KeepAlive (l);
}
}

Expand Down Expand Up @@ -206,6 +207,7 @@ public virtual unsafe void SetOn123Listener (global::Android.Views.View.IOnClick
__args [0] = new JniArgumentValue ((l == null) ? IntPtr.Zero : ((global::Java.Lang.Object) l).Handle);
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
global::System.GC.KeepAlive (l);
}
}

Expand Down Expand Up @@ -238,6 +240,7 @@ public virtual unsafe void AddTouchables (global::System.Collections.Generic.ILi
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_views);
global::System.GC.KeepAlive (views);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public unsafe void SetOnEventListener (global::Com.Google.Android.Exoplayer.Drm.
__args [0] = new JniArgumentValue ((p0 == null) ? IntPtr.Zero : ((global::Java.Lang.Object) p0).Handle);
_members.InstanceMethods.InvokeAbstractVoidMethod (__id, this, __args);
} finally {
global::System.GC.KeepAlive (p0);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ public unsafe InstanceInner (global::Xamarin.Test.NotificationCompatBase __self)
SetHandle (__r.Handle, JniHandleOwnership.TransferLocalRef);
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
global::System.GC.KeepAlive (__self);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public unsafe SomeObject (global::Java.Lang.Class c)
SetHandle (__r.Handle, JniHandleOwnership.TransferLocalRef);
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
global::System.GC.KeepAlive (c);
}
}

Expand Down Expand Up @@ -109,6 +110,8 @@ static int n_Handle_Ljava_lang_Object_Ljava_lang_Throwable_ (IntPtr jnienv, IntP
var __rm = _members.InstanceMethods.InvokeVirtualInt32Method (__id, this, __args);
return __rm;
} finally {
global::System.GC.KeepAlive (o);
global::System.GC.KeepAlive (t);
}
}

Expand Down Expand Up @@ -255,6 +258,7 @@ public virtual unsafe void VoidMethodWithParams (string astring, int anint, glob
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_astring);
global::System.GC.KeepAlive (anObject);
}
}

Expand Down Expand Up @@ -318,6 +322,7 @@ public virtual unsafe void ArrayListTest (global::System.Collections.Generic.ILi
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_p0);
global::System.GC.KeepAlive (p0);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ public override unsafe int SomeInteger {
__args [0] = new JniArgumentValue ((value == null) ? IntPtr.Zero : ((global::Java.Lang.Object) value).Handle);
_members.InstanceMethods.InvokeAbstractVoidMethod (__id, this, __args);
} finally {
global::System.GC.KeepAlive (value);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public virtual unsafe void SetA (global::Java.Lang.Object adapter)
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_adapter);
global::System.GC.KeepAlive (adapter);
}
}

Expand Down Expand Up @@ -92,6 +93,7 @@ public virtual unsafe void ListTest (global::System.Collections.Generic.IList<gl
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_p0);
global::System.GC.KeepAlive (p0);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public static unsafe void SetSomeObject (global::Java.Lang.Object newvalue)
__args [0] = new JniArgumentValue ((newvalue == null) ? IntPtr.Zero : ((global::Java.Lang.Object) newvalue).Handle);
_members.StaticMethods.InvokeVoidMethod (__id, __args);
} finally {
global::System.GC.KeepAlive (newvalue);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public unsafe FilterOutputStream (global::System.IO.Stream @out)
_members.InstanceMethods.FinishCreateInstance (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native__out);
global::System.GC.KeepAlive (@out);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ public virtual unsafe int Read (byte[] buffer)
JNIEnv.CopyArray (native_buffer, buffer);
JNIEnv.DeleteLocalRef (native_buffer);
}
global::System.GC.KeepAlive (buffer);
}
}

Expand Down Expand Up @@ -257,6 +258,7 @@ public virtual unsafe int Read (byte[] buffer, int byteOffset, int byteCount)
JNIEnv.CopyArray (native_buffer, buffer);
JNIEnv.DeleteLocalRef (native_buffer);
}
global::System.GC.KeepAlive (buffer);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ public virtual unsafe void Write (byte[] buffer)
JNIEnv.CopyArray (native_buffer, buffer);
JNIEnv.DeleteLocalRef (native_buffer);
}
global::System.GC.KeepAlive (buffer);
}
}

Expand Down Expand Up @@ -175,6 +176,7 @@ public virtual unsafe void Write (byte[] buffer, int offset, int count)
JNIEnv.CopyArray (native_buffer, buffer);
JNIEnv.DeleteLocalRef (native_buffer);
}
global::System.GC.KeepAlive (buffer);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public virtual unsafe void SetObject (byte[] value)
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ static void n_SetObject_Ljava_lang_Object_ (IntPtr jnienv, IntPtr native__this,
__args [0] = new JniArgumentValue ((value == null) ? IntPtr.Zero : ((global::Java.Lang.Object) value).Handle);
_members.InstanceMethods.InvokeVirtualVoidMethod (__id, this, __args);
} finally {
global::System.GC.KeepAlive (value);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public virtual unsafe void SetObject (string[] value)
JNIEnv.CopyArray (native_value, value);
JNIEnv.DeleteLocalRef (native_value);
}
global::System.GC.KeepAlive (value);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ public override unsafe int GetSpanFlags (global::Java.Lang.Object tag)
var __rm = _members.InstanceMethods.InvokeAbstractInt32Method (__id, this, __args);
return __rm;
} finally {
global::System.GC.KeepAlive (tag);
}
}

Expand All @@ -194,6 +195,7 @@ public override unsafe void Append (global::Java.Lang.ICharSequence value)
_members.InstanceMethods.InvokeAbstractVoidMethod (__id, this, __args);
} finally {
JNIEnv.DeleteLocalRef (native_value);
global::System.GC.KeepAlive (value);
}
}

Expand All @@ -210,6 +212,7 @@ public override unsafe void Append (global::Java.Lang.ICharSequence value)
return global::Java.Lang.Object.GetObject<Java.Lang.ICharSequence> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
} finally {
JNIEnv.DeleteLocalRef (native_value);
global::System.GC.KeepAlive (value);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public unsafe int CompareTo (global::Java.Lang.Object o)
return __rm;
} finally {
JNIEnv.DeleteLocalRef (native_o);
global::System.GC.KeepAlive (o);
}
}

Expand Down
Loading