@@ -11,20 +11,23 @@ internal static partial class V8SplitProxyNative
1111 public static void Invoke ( Action < IV8SplitProxyNative > action )
1212 {
1313 var previousScheduledException = MiscHelpers . Exchange ( ref V8SplitProxyManaged . ScheduledException , null ) ;
14+ var previousMethodTable = instance . V8SplitProxyManaged_SetMethodTable ( V8SplitProxyManaged . MethodTable ) ;
1415 try
1516 {
1617 action ( instance ) ;
1718 ThrowScheduledException ( ) ;
1819 }
1920 finally
2021 {
22+ instance . V8SplitProxyManaged_SetMethodTable ( previousMethodTable ) ;
2123 V8SplitProxyManaged . ScheduledException = previousScheduledException ;
2224 }
2325 }
2426
2527 public static T Invoke < T > ( Func < IV8SplitProxyNative , T > func )
2628 {
2729 var previousScheduledException = MiscHelpers . Exchange ( ref V8SplitProxyManaged . ScheduledException , null ) ;
30+ var previousMethodTable = instance . V8SplitProxyManaged_SetMethodTable ( V8SplitProxyManaged . MethodTable ) ;
2831 try
2932 {
3033 var result = func ( instance ) ;
@@ -33,18 +36,35 @@ public static T Invoke<T>(Func<IV8SplitProxyNative, T> func)
3336 }
3437 finally
3538 {
39+ instance . V8SplitProxyManaged_SetMethodTable ( previousMethodTable ) ;
3640 V8SplitProxyManaged . ScheduledException = previousScheduledException ;
3741 }
3842 }
3943
4044 public static void InvokeNoThrow ( Action < IV8SplitProxyNative > action )
4145 {
42- action ( instance ) ;
46+ var previousMethodTable = instance . V8SplitProxyManaged_SetMethodTable ( V8SplitProxyManaged . MethodTable ) ;
47+ try
48+ {
49+ action ( instance ) ;
50+ }
51+ finally
52+ {
53+ instance . V8SplitProxyManaged_SetMethodTable ( previousMethodTable ) ;
54+ }
4355 }
4456
4557 public static T InvokeNoThrow < T > ( Func < IV8SplitProxyNative , T > func )
4658 {
47- return func ( instance ) ;
59+ var previousMethodTable = instance . V8SplitProxyManaged_SetMethodTable ( V8SplitProxyManaged . MethodTable ) ;
60+ try
61+ {
62+ return func ( instance ) ;
63+ }
64+ finally
65+ {
66+ instance . V8SplitProxyManaged_SetMethodTable ( previousMethodTable ) ;
67+ }
4868 }
4969
5070 private static void ThrowScheduledException ( )
0 commit comments