Skip to content

Commit d1a42a7

Browse files
[monodroid] remove _monodroid_get_identity_hash_code (#9622)
In a NativeAOT context, we don't have `libmonodroid.so` *at all*. This makes methods like `JNIEnv.GetIdentityHashCode()` non-functional, as it P/Invokes into `_monodroid_get_identity_hash_code()`. Remove `_monodroid_get_identity_hash_code`, in favor of: return JniEnvironment.References.GetIdentityHashCode (new JniObjectReference (v)); Which should have negligible performance impact and works without `libmonodroid.so`.
1 parent 073718d commit d1a42a7

File tree

6 files changed

+4
-18
lines changed

6 files changed

+4
-18
lines changed

src/Mono.Android/Android.Runtime/JNIEnv.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ static Type MakeArrayType (Type type) =>
3939

4040
internal static IntPtr IdentityHash (IntPtr v)
4141
{
42-
return RuntimeNativeMethods._monodroid_get_identity_hash_code (Handle, v);
42+
return JniEnvironment.References.GetIdentityHashCode (new JniObjectReference (v));
4343
}
4444

4545
public static void CheckHandle (IntPtr jnienv)

src/Mono.Android/Android.Runtime/RuntimeNativeMethods.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ internal static class RuntimeNativeMethods
3535
[DllImport (RuntimeConstants.InternalDllName, CallingConvention = CallingConvention.Cdecl)]
3636
internal extern static void monodroid_free (IntPtr ptr);
3737

38-
[DllImport (RuntimeConstants.InternalDllName, CallingConvention = CallingConvention.Cdecl)]
39-
internal extern static IntPtr _monodroid_get_identity_hash_code (IntPtr env, IntPtr value);
40-
4138
[DllImport (RuntimeConstants.InternalDllName, CallingConvention = CallingConvention.Cdecl)]
4239
internal static extern int _monodroid_gref_get ();
4340

src/native/monodroid/internal-pinvokes.cc

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,6 @@ monodroid_clear_gdb_wait ()
138138
MonodroidRuntime::set_monodroid_gdb_wait (false);
139139
}
140140

141-
void*
142-
_monodroid_get_identity_hash_code (JNIEnv *env, void *v)
143-
{
144-
intptr_t rv = env->CallStaticIntMethod (MonodroidRuntime::get_java_class_System (), MonodroidRuntime::get_java_class_method_System_identityHashCode (), v);
145-
return (void*) rv;
146-
}
147-
148141
void*
149142
_monodroid_timezone_get_default_id ()
150143
{

src/native/pinvoke-override/generate-pinvoke-tables.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ const std::vector<std::string> internal_pinvoke_names = {
4747
"_monodroid_gc_wait_for_bridge_processing",
4848
"_monodroid_get_dns_servers",
4949
"monodroid_get_dylib",
50-
"_monodroid_get_identity_hash_code",
5150
"_monodroid_getifaddrs",
5251
"monodroid_get_log_categories",
5352
"monodroid_get_namespaced_system_property",

src/native/pinvoke-override/pinvoke-tables.include

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111
namespace {
1212
#if INTPTR_MAX == INT64_MAX
1313
//64-bit internal p/invoke table
14-
std::array<PinvokeEntry, 47> internal_pinvokes {{
14+
std::array<PinvokeEntry, 46> internal_pinvokes {{
1515
{0x452e23128e42f0a, "monodroid_get_log_categories", reinterpret_cast<void*>(&monodroid_get_log_categories)},
1616
{0xa50ce5de13bf8b5, "_monodroid_timezone_get_default_id", reinterpret_cast<void*>(&_monodroid_timezone_get_default_id)},
1717
{0x19055d65edfd668e, "_monodroid_get_network_interface_up_state", reinterpret_cast<void*>(&_monodroid_get_network_interface_up_state)},
1818
{0x2b3b0ca1d14076da, "monodroid_get_dylib", reinterpret_cast<void*>(&monodroid_get_dylib)},
19-
{0x2fbe68718cf2510d, "_monodroid_get_identity_hash_code", reinterpret_cast<void*>(&_monodroid_get_identity_hash_code)},
2019
{0x3ade4348ac8ce0fa, "_monodroid_freeifaddrs", reinterpret_cast<void*>(&_monodroid_freeifaddrs)},
2120
{0x3b2467e7eadd4a6a, "_monodroid_lref_log_new", reinterpret_cast<void*>(&_monodroid_lref_log_new)},
2221
{0x3b8097af56b5361f, "monodroid_log_traces", reinterpret_cast<void*>(&monodroid_log_traces)},
@@ -551,10 +550,9 @@ constexpr hash_t system_security_cryptography_native_android_library_hash = 0x18
551550
constexpr hash_t system_globalization_native_library_hash = 0x28b5c8fca080abd5;
552551
#else
553552
//32-bit internal p/invoke table
554-
std::array<PinvokeEntry, 47> internal_pinvokes {{
553+
std::array<PinvokeEntry, 46> internal_pinvokes {{
555554
{0xb7a486a, "monodroid_TypeManager_get_java_class_name", reinterpret_cast<void*>(&monodroid_TypeManager_get_java_class_name)},
556555
{0xf562bd9, "monodroid_embedded_assemblies_set_assemblies_prefix", reinterpret_cast<void*>(&monodroid_embedded_assemblies_set_assemblies_prefix)},
557-
{0x1a8eab17, "_monodroid_get_identity_hash_code", reinterpret_cast<void*>(&_monodroid_get_identity_hash_code)},
558556
{0x227a2636, "monodroid_get_namespaced_system_property", reinterpret_cast<void*>(&monodroid_get_namespaced_system_property)},
559557
{0x2aea7c33, "_monodroid_max_gref_get", reinterpret_cast<void*>(&_monodroid_max_gref_get)},
560558
{0x30b9487b, "_monodroid_get_dns_servers", reinterpret_cast<void*>(&_monodroid_get_dns_servers)},
@@ -1091,6 +1089,6 @@ constexpr hash_t system_security_cryptography_native_android_library_hash = 0x93
10911089
constexpr hash_t system_globalization_native_library_hash = 0xa66f1e5a;
10921090
#endif
10931091

1094-
constexpr size_t internal_pinvokes_count = 47;
1092+
constexpr size_t internal_pinvokes_count = 46;
10951093
constexpr size_t dotnet_pinvokes_count = 477;
10961094
} // end of anonymous namespace

src/native/runtime-base/internal-pinvokes.hh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ void _monodroid_lref_log_new (int lrefc, jobject handle, char type, const char *
3636
void _monodroid_lref_log_delete (int lrefc, jobject handle, char type, const char *threadName, int threadId, const char *from, int from_writable);
3737
void _monodroid_gc_wait_for_bridge_processing ();
3838
void monodroid_clear_gdb_wait ();
39-
void* _monodroid_get_identity_hash_code (JNIEnv *env, void *v);
4039
void* _monodroid_timezone_get_default_id ();
4140
void _monodroid_counters_dump ([[maybe_unused]] const char *format, [[maybe_unused]] va_list args);
4241
xamarin::android::managed_timing_sequence* monodroid_timing_start (const char *message);

0 commit comments

Comments
 (0)