Optimizing String.Equals as an intrinsic (x86_64)

The fourth implementation of String.Equals. I added an intrinsic
in x86_64 which is similar to the original java implementation
of String.equals: an instanceof check, null check,length check,
and reference equality check followed by a loop comparing strings
four characters at a time.

Interesting Benchmarking Values:

Optimizing Compiler on 64-bit Emulator
        Intrinsic 1-5 Character Strings: 48 ns
        Original 1-5 Character Strings: 56 ns
        Intrinsic 1000+ Character Strings: 4009 ns
        Original 1000+ Character Strings: 4704 ns
        Intrinsic Non-String Argument: 35 ns
        Original Non-String Argument: 42 ns

Bug: 21481923
Change-Id: I17d0d2e24a670a898ab1729669d3990403b9a853
1 file changed