diff options
| -rw-r--r-- | runtime/arch/x86/quick_entrypoints_x86.S | 2 | ||||
| -rw-r--r-- | test/021-string2/src/Main.java | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/runtime/arch/x86/quick_entrypoints_x86.S b/runtime/arch/x86/quick_entrypoints_x86.S index b1f227516e..8683a56855 100644 --- a/runtime/arch/x86/quick_entrypoints_x86.S +++ b/runtime/arch/x86/quick_entrypoints_x86.S @@ -1307,8 +1307,10 @@ DEFINE_FUNCTION art_quick_string_compareto * esi: pointer to this string data * edi: pointer to comp string data */ + jecxz .Lkeep_length repe cmpsw // find nonmatching chars in [%esi] and [%edi], up to length %ecx jne .Lnot_equal +.Lkeep_length: POP edi // pop callee save reg POP esi // pop callee save reg ret diff --git a/test/021-string2/src/Main.java b/test/021-string2/src/Main.java index 87e4baf651..0239a3c626 100644 --- a/test/021-string2/src/Main.java +++ b/test/021-string2/src/Main.java @@ -36,6 +36,10 @@ public class Main { Assert.assertTrue(test1.compareTo(test2) > 0); Assert.assertTrue(test2.compareTo(test1) < 0); + Assert.assertEquals("".compareTo(""), 0); + Assert.assertTrue(test.compareTo("") > 0); + Assert.assertTrue("".compareTo(test) < 0); + /* compare string with a nonzero offset, in left/right side */ Assert.assertEquals(test.compareTo(sub), 0); Assert.assertEquals(sub.compareTo(test), 0); |