[Mono-bugs] [Bug 567617] New: System.Object.ReferenceEquals is incorrectly implemented also causes performance loss

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Dec 29 20:38:59 EST 2009


http://bugzilla.novell.com/show_bug.cgi?id=567617

http://bugzilla.novell.com/show_bug.cgi?id=567617#c0


           Summary: System.Object.ReferenceEquals is incorrectly
                    implemented also causes performance loss
    Classification: Mono
           Product: Mono: Class Libraries
           Version: SVN
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: System
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: chojrak11 at gmail.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: Other
           Blocker: No


Description of Problem:

I think fixing this can improve performance, because it'll replace full method
resolution for op_equal by just pointer comparison.

While inspecting /trunk/mcs/class/corlib/System/Object.cs I found this:

// <summary>
// Tests whether a is equal to b.
// Can not figure out why this even exists
// </summary>
[ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
public static bool ReferenceEquals (object a, object b)
{
    return (a == b);
}

This is not correct. ReferenceEquals() should return true IF AND ONLY IF a and
b is THE SAME *INSTANCE*.

Steps to reproduce the problem:

string s1 = new string('x',13);
string s2 = new string('x',13);

bool res = object.ReferenceEquals(s1, s2);

Actual Results:
res == true

Expected Results:
res == false

How often does this happen? 
always

Additional Information:

See
http://bytes.com/topic/c-sharp/answers/252465-what-difference-equals-referenceequals
http://www.mono-project.com/Gendarme.Rules.Correctness
http://msdn.microsoft.com/en-us/library/system.object.referenceequals.aspx

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list