diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs index 584f6cd3e15965..77354873541f92 100644 --- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs +++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/CompilerServices/RuntimeHelpers.CoreCLR.cs @@ -237,13 +237,18 @@ public static void PrepareDelegate(Delegate d) /// returned. /// [MethodImpl(MethodImplOptions.InternalCall)] - internal static extern int TryGetHashCode(object? o); + internal static extern int TryGetHashCode(object o); [LibraryImport(QCall, EntryPoint = "ObjectNative_GetHashCodeSlow")] private static partial int GetHashCodeSlow(ObjectHandleOnStack o); public static int GetHashCode(object? o) { + if (o is null) + { + return 0; + } + int hashCode = TryGetHashCode(o); if (hashCode == 0) { @@ -254,10 +259,6 @@ public static int GetHashCode(object? o) [MethodImpl(MethodImplOptions.NoInlining)] static int GetHashCodeWorker(object? o) { - if (o is null) - { - return 0; - } return GetHashCodeSlow(ObjectHandleOnStack.Create(ref o)); } } diff --git a/src/coreclr/vm/comutilnative.cpp b/src/coreclr/vm/comutilnative.cpp index 4412dfaec4eadf..8adecf0936dbc8 100644 --- a/src/coreclr/vm/comutilnative.cpp +++ b/src/coreclr/vm/comutilnative.cpp @@ -1585,8 +1585,7 @@ FCIMPL1(INT32, ObjectNative::TryGetHashCode, Object* obj) { FCALL_CONTRACT; - if (obj == NULL) - return 0; + _ASSERTE(obj != NULL); OBJECTREF objRef = ObjectToOBJECTREF(obj); return objRef->TryGetHashCode();