Skip to content

Commit af9f98c

Browse files
committed
Support pointer fields in ValueType Equals & GetHashCode (case 1005597)
1 parent ca762c2 commit af9f98c

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

mono/metadata/icall.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,6 +1096,9 @@ ves_icall_System_ValueType_InternalGetHashCode (MonoObject *this_obj, MonoArray
10961096
case MONO_TYPE_I4:
10971097
result ^= *(gint32*)((guint8*)this_obj + field->offset);
10981098
break;
1099+
case MONO_TYPE_PTR:
1100+
result ^= mono_aligned_addr_hash (*(gpointer*)((guint8*)this_obj + field->offset));
1101+
break;
10991102
case MONO_TYPE_STRING: {
11001103
MonoString *s;
11011104
s = *(MonoString**)((guint8*)this_obj + field->offset);
@@ -1195,6 +1198,10 @@ ves_icall_System_ValueType_Equals (MonoObject *this_obj, MonoObject *that, MonoA
11951198
if (*(double*)((guint8*)this_obj + field->offset) != *(double*)((guint8*)that + field->offset))
11961199
return FALSE;
11971200
break;
1201+
case MONO_TYPE_PTR:
1202+
if (*(gpointer*)((guint8*)this_obj + field->offset) != *(gpointer*)((guint8*)that + field->offset))
1203+
return FALSE;
1204+
break;
11981205

11991206

12001207
case MONO_TYPE_STRING: {

0 commit comments

Comments
 (0)