Skip to content

Commit 1d2fab9

Browse files
committed
Add OnEnterMarshalMethod code.
1 parent 369ae73 commit 1d2fab9

File tree

67 files changed

+456
-150
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+456
-150
lines changed

src/Java.Interop/Java.Interop/JniRuntime.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,11 @@ public virtual bool ExceptionShouldTransitionToJni (Exception e)
437437

438438
partial class JniRuntime {
439439

440+
public virtual void OnEnterMarshalMethod ()
441+
{
442+
ValueManager.WaitForGCBridgeProcessing ();
443+
}
444+
440445
public virtual void OnUserUnhandledException (ref JniTransition transition, Exception e)
441446
{
442447
transition.SetPendingException (e);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
#nullable enable
2+
virtual Java.Interop.JniRuntime.OnEnterMarshalMethod() -> void
23
virtual Java.Interop.JniRuntime.OnUserUnhandledException(ref Java.Interop.JniTransition transition, System.Exception! e) -> void

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteDuplicateInterfaceEventArgs.txt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,14 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima
7777
static bool n_OnAnimationEnd_I (IntPtr jnienv, IntPtr native__this, int param1)
7878
{
7979
var __envp = new global::Java.Interop.JniTransition (jnienv);
80+
var __r = global::Java.Interop.JniEnvironment.Runtime;
8081

8182
try {
83+
__r.OnEnterMarshalMethod ();
8284
var __this = global::Java.Lang.Object.GetObject<java.code.AnimatorListener> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
8385
return __this.OnAnimationEnd (param1);
8486
} catch (global::System.Exception __e) {
85-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
87+
__r.OnUserUnhandledException (ref __envp, __e);
8688
return default;
8789
} finally {
8890
__envp.Dispose ();
@@ -111,12 +113,14 @@ internal partial class AnimatorListenerInvoker : global::Java.Lang.Object, Anima
111113
static bool n_OnAnimationEnd_II (IntPtr jnienv, IntPtr native__this, int param1, int param2)
112114
{
113115
var __envp = new global::Java.Interop.JniTransition (jnienv);
116+
var __r = global::Java.Interop.JniEnvironment.Runtime;
114117

115118
try {
119+
__r.OnEnterMarshalMethod ();
116120
var __this = global::Java.Lang.Object.GetObject<java.code.AnimatorListener> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
117121
return __this.OnAnimationEnd (param1, param2);
118122
} catch (global::System.Exception __e) {
119-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
123+
__r.OnUserUnhandledException (ref __envp, __e);
120124
return default;
121125
} finally {
122126
__envp.Dispose ();

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/Common/WriteInterfaceRedeclaredDefaultMethod.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,14 @@ internal partial class IMyInterface2Invoker : global::Java.Lang.Object, IMyInter
7373
static void n_DoSomething (IntPtr jnienv, IntPtr native__this)
7474
{
7575
var __envp = new global::Java.Interop.JniTransition (jnienv);
76+
var __r = global::Java.Interop.JniEnvironment.Runtime;
7677

7778
try {
79+
__r.OnEnterMarshalMethod ();
7880
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface2> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
7981
__this.DoSomething ();
8082
} catch (global::System.Exception __e) {
81-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
83+
__r.OnUserUnhandledException (ref __envp, __e);
8284
} finally {
8385
__envp.Dispose ();
8486
}

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteClass.txt

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,14 @@ public partial class MyClass {
6060
static int n_get_Count (IntPtr jnienv, IntPtr native__this)
6161
{
6262
var __envp = new global::Java.Interop.JniTransition (jnienv);
63+
var __r = global::Java.Interop.JniEnvironment.Runtime;
6364

6465
try {
66+
__r.OnEnterMarshalMethod ();
6567
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
6668
return __this.Count;
6769
} catch (global::System.Exception __e) {
68-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
70+
__r.OnUserUnhandledException (ref __envp, __e);
6971
return default;
7072
} finally {
7173
__envp.Dispose ();
@@ -84,12 +86,14 @@ public partial class MyClass {
8486
static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
8587
{
8688
var __envp = new global::Java.Interop.JniTransition (jnienv);
89+
var __r = global::Java.Interop.JniEnvironment.Runtime;
8790

8891
try {
92+
__r.OnEnterMarshalMethod ();
8993
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
9094
__this.Count = value;
9195
} catch (global::System.Exception __e) {
92-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
96+
__r.OnUserUnhandledException (ref __envp, __e);
9397
} finally {
9498
__envp.Dispose ();
9599
}
@@ -131,12 +135,14 @@ public partial class MyClass {
131135
static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this)
132136
{
133137
var __envp = new global::Java.Interop.JniTransition (jnienv);
138+
var __r = global::Java.Interop.JniEnvironment.Runtime;
134139

135140
try {
141+
__r.OnEnterMarshalMethod ();
136142
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
137143
return JNIEnv.NewString (__this.Key);
138144
} catch (global::System.Exception __e) {
139-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
145+
__r.OnUserUnhandledException (ref __envp, __e);
140146
return default;
141147
} finally {
142148
__envp.Dispose ();
@@ -155,13 +161,15 @@ public partial class MyClass {
155161
static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
156162
{
157163
var __envp = new global::Java.Interop.JniTransition (jnienv);
164+
var __r = global::Java.Interop.JniEnvironment.Runtime;
158165

159166
try {
167+
__r.OnEnterMarshalMethod ();
160168
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
161169
var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
162170
__this.Key = value;
163171
} catch (global::System.Exception __e) {
164-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
172+
__r.OnUserUnhandledException (ref __envp, __e);
165173
} finally {
166174
__envp.Dispose ();
167175
}
@@ -229,12 +237,14 @@ public partial class MyClass {
229237
static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
230238
{
231239
var __envp = new global::Java.Interop.JniTransition (jnienv);
240+
var __r = global::Java.Interop.JniEnvironment.Runtime;
232241

233242
try {
243+
__r.OnEnterMarshalMethod ();
234244
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
235245
return __this.AbstractCount;
236246
} catch (global::System.Exception __e) {
237-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
247+
__r.OnUserUnhandledException (ref __envp, __e);
238248
return default;
239249
} finally {
240250
__envp.Dispose ();
@@ -253,12 +263,14 @@ public partial class MyClass {
253263
static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
254264
{
255265
var __envp = new global::Java.Interop.JniTransition (jnienv);
266+
var __r = global::Java.Interop.JniEnvironment.Runtime;
256267

257268
try {
269+
__r.OnEnterMarshalMethod ();
258270
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
259271
__this.AbstractCount = value;
260272
} catch (global::System.Exception __e) {
261-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
273+
__r.OnUserUnhandledException (ref __envp, __e);
262274
} finally {
263275
__envp.Dispose ();
264276
}
@@ -286,14 +298,16 @@ public partial class MyClass {
286298
static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
287299
{
288300
var __envp = new global::Java.Interop.JniTransition (jnienv);
301+
var __r = global::Java.Interop.JniEnvironment.Runtime;
289302

290303
try {
304+
__r.OnEnterMarshalMethod ();
291305
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
292306
var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
293307
int __ret = __this.GetCountForKey (key);
294308
return __ret;
295309
} catch (global::System.Exception __e) {
296-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
310+
__r.OnUserUnhandledException (ref __envp, __e);
297311
return default;
298312
} finally {
299313
__envp.Dispose ();
@@ -328,12 +342,14 @@ public partial class MyClass {
328342
static IntPtr n_Key (IntPtr jnienv, IntPtr native__this)
329343
{
330344
var __envp = new global::Java.Interop.JniTransition (jnienv);
345+
var __r = global::Java.Interop.JniEnvironment.Runtime;
331346

332347
try {
348+
__r.OnEnterMarshalMethod ();
333349
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
334350
return JNIEnv.NewString (__this.Key ());
335351
} catch (global::System.Exception __e) {
336-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
352+
__r.OnUserUnhandledException (ref __envp, __e);
337353
return default;
338354
} finally {
339355
__envp.Dispose ();
@@ -375,12 +391,14 @@ public partial class MyClass {
375391
static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
376392
{
377393
var __envp = new global::Java.Interop.JniTransition (jnienv);
394+
var __r = global::Java.Interop.JniEnvironment.Runtime;
378395

379396
try {
397+
__r.OnEnterMarshalMethod ();
380398
var __this = global::Java.Lang.Object.GetObject<java.code.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
381399
__this.AbstractMethod ();
382400
} catch (global::System.Exception __e) {
383-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
401+
__r.OnUserUnhandledException (ref __envp, __e);
384402
} finally {
385403
__envp.Dispose ();
386404
}

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteInterface.txt

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,14 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
141141
static int n_get_Count (IntPtr jnienv, IntPtr native__this)
142142
{
143143
var __envp = new global::Java.Interop.JniTransition (jnienv);
144+
var __r = global::Java.Interop.JniEnvironment.Runtime;
144145

145146
try {
147+
__r.OnEnterMarshalMethod ();
146148
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
147149
return __this.Count;
148150
} catch (global::System.Exception __e) {
149-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
151+
__r.OnUserUnhandledException (ref __envp, __e);
150152
return default;
151153
} finally {
152154
__envp.Dispose ();
@@ -165,12 +167,14 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
165167
static void n_set_Count_I (IntPtr jnienv, IntPtr native__this, int value)
166168
{
167169
var __envp = new global::Java.Interop.JniTransition (jnienv);
170+
var __r = global::Java.Interop.JniEnvironment.Runtime;
168171

169172
try {
173+
__r.OnEnterMarshalMethod ();
170174
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
171175
__this.Count = value;
172176
} catch (global::System.Exception __e) {
173-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
177+
__r.OnUserUnhandledException (ref __envp, __e);
174178
} finally {
175179
__envp.Dispose ();
176180
}
@@ -205,12 +209,14 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
205209
static IntPtr n_get_Key (IntPtr jnienv, IntPtr native__this)
206210
{
207211
var __envp = new global::Java.Interop.JniTransition (jnienv);
212+
var __r = global::Java.Interop.JniEnvironment.Runtime;
208213

209214
try {
215+
__r.OnEnterMarshalMethod ();
210216
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
211217
return JNIEnv.NewString (__this.Key);
212218
} catch (global::System.Exception __e) {
213-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
219+
__r.OnUserUnhandledException (ref __envp, __e);
214220
return default;
215221
} finally {
216222
__envp.Dispose ();
@@ -229,13 +235,15 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
229235
static void n_set_Key_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_value)
230236
{
231237
var __envp = new global::Java.Interop.JniTransition (jnienv);
238+
var __r = global::Java.Interop.JniEnvironment.Runtime;
232239

233240
try {
241+
__r.OnEnterMarshalMethod ();
234242
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
235243
var value = JNIEnv.GetString (native_value, JniHandleOwnership.DoNotTransfer);
236244
__this.Key = value;
237245
} catch (global::System.Exception __e) {
238-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
246+
__r.OnUserUnhandledException (ref __envp, __e);
239247
} finally {
240248
__envp.Dispose ();
241249
}
@@ -272,12 +280,14 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
272280
static int n_get_AbstractCount (IntPtr jnienv, IntPtr native__this)
273281
{
274282
var __envp = new global::Java.Interop.JniTransition (jnienv);
283+
var __r = global::Java.Interop.JniEnvironment.Runtime;
275284

276285
try {
286+
__r.OnEnterMarshalMethod ();
277287
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
278288
return __this.AbstractCount;
279289
} catch (global::System.Exception __e) {
280-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
290+
__r.OnUserUnhandledException (ref __envp, __e);
281291
return default;
282292
} finally {
283293
__envp.Dispose ();
@@ -296,12 +306,14 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
296306
static void n_set_AbstractCount_I (IntPtr jnienv, IntPtr native__this, int value)
297307
{
298308
var __envp = new global::Java.Interop.JniTransition (jnienv);
309+
var __r = global::Java.Interop.JniEnvironment.Runtime;
299310

300311
try {
312+
__r.OnEnterMarshalMethod ();
301313
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
302314
__this.AbstractCount = value;
303315
} catch (global::System.Exception __e) {
304-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
316+
__r.OnUserUnhandledException (ref __envp, __e);
305317
} finally {
306318
__envp.Dispose ();
307319
}
@@ -336,14 +348,16 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
336348
static int n_GetCountForKey_Ljava_lang_String_ (IntPtr jnienv, IntPtr native__this, IntPtr native_key)
337349
{
338350
var __envp = new global::Java.Interop.JniTransition (jnienv);
351+
var __r = global::Java.Interop.JniEnvironment.Runtime;
339352

340353
try {
354+
__r.OnEnterMarshalMethod ();
341355
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
342356
var key = JNIEnv.GetString (native_key, JniHandleOwnership.DoNotTransfer);
343357
int __ret = __this.GetCountForKey (key);
344358
return __ret;
345359
} catch (global::System.Exception __e) {
346-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
360+
__r.OnUserUnhandledException (ref __envp, __e);
347361
return default;
348362
} finally {
349363
__envp.Dispose ();
@@ -375,12 +389,14 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
375389
static IntPtr n_Key (IntPtr jnienv, IntPtr native__this)
376390
{
377391
var __envp = new global::Java.Interop.JniTransition (jnienv);
392+
var __r = global::Java.Interop.JniEnvironment.Runtime;
378393

379394
try {
395+
__r.OnEnterMarshalMethod ();
380396
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
381397
return JNIEnv.NewString (__this.Key ());
382398
} catch (global::System.Exception __e) {
383-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
399+
__r.OnUserUnhandledException (ref __envp, __e);
384400
return default;
385401
} finally {
386402
__envp.Dispose ();
@@ -407,12 +423,14 @@ internal partial class IMyInterfaceInvoker : global::Java.Lang.Object, IMyInterf
407423
static void n_AbstractMethod (IntPtr jnienv, IntPtr native__this)
408424
{
409425
var __envp = new global::Java.Interop.JniTransition (jnienv);
426+
var __r = global::Java.Interop.JniEnvironment.Runtime;
410427

411428
try {
429+
__r.OnEnterMarshalMethod ();
412430
var __this = global::Java.Lang.Object.GetObject<java.code.IMyInterface> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
413431
__this.AbstractMethod ();
414432
} catch (global::System.Exception __e) {
415-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
433+
__r.OnUserUnhandledException (ref __envp, __e);
416434
} finally {
417435
__envp.Dispose ();
418436
}

tests/generator-Tests/Unit-Tests/CodeGeneratorExpectedResults/XAJavaInterop1-NRT/WriteMethodWithCharSequenceArrays.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,18 @@ public partial class MyClass : Java.Lang.Object {
4040
static IntPtr n_Echo_arrayLjava_lang_CharSequence_ (IntPtr jnienv, IntPtr native__this, IntPtr native_messages)
4141
{
4242
var __envp = new global::Java.Interop.JniTransition (jnienv);
43+
var __r = global::Java.Interop.JniEnvironment.Runtime;
4344

4445
try {
46+
__r.OnEnterMarshalMethod ();
4547
var __this = global::Java.Lang.Object.GetObject<Com.Example.MyClass> (jnienv, native__this, JniHandleOwnership.DoNotTransfer)!;
4648
var messages = (Java.Lang.ICharSequence[]?) JNIEnv.GetArray (native_messages, JniHandleOwnership.DoNotTransfer, typeof (Java.Lang.ICharSequence));
4749
IntPtr __ret = JNIEnv.NewArray (__this.EchoFormatted (messages));
4850
if (messages != null)
4951
JNIEnv.CopyArray (messages, native_messages);
5052
return __ret;
5153
} catch (global::System.Exception __e) {
52-
global::Java.Interop.JniEnvironment.Runtime.OnUserUnhandledException (ref __envp, __e);
54+
__r.OnUserUnhandledException (ref __envp, __e);
5355
return default;
5456
} finally {
5557
__envp.Dispose ();

0 commit comments

Comments
 (0)