CallStackElementComparer.cs 805 B

1234567891011121314151617181920212223242526272829
  1. namespace Jint.Runtime.CallStack;
  2. internal sealed class CallStackElementComparer : IEqualityComparer<CallStackElement>
  3. {
  4. public static readonly CallStackElementComparer Instance = new();
  5. private CallStackElementComparer()
  6. {
  7. }
  8. public bool Equals(CallStackElement x, CallStackElement y)
  9. {
  10. if (x.Function._functionDefinition is not null)
  11. {
  12. return ReferenceEquals(x.Function._functionDefinition, y.Function._functionDefinition);
  13. }
  14. return ReferenceEquals(x.Function, y.Function);
  15. }
  16. public int GetHashCode(CallStackElement obj)
  17. {
  18. if (obj.Function._functionDefinition is not null)
  19. {
  20. return obj.Function._functionDefinition.GetHashCode();
  21. }
  22. return obj.Function.GetHashCode();
  23. }
  24. }