summaryrefslogtreecommitdiff
path: root/insns.def
diff options
context:
space:
mode:
Diffstat (limited to 'insns.def')
-rw-r--r--insns.def22
1 files changed, 11 insertions, 11 deletions
diff --git a/insns.def b/insns.def
index 3cf8e4d67f..d5a6fe7b63 100644
--- a/insns.def
+++ b/insns.def
@@ -1697,18 +1697,18 @@ opt_eq
VALUE str1 = recv;
VALUE str2 = obj;
- if (str1 == str2) {
- val = Qtrue;
- }
- else if (!ENCODING_GET(str1) && !ENCODING_GET(str2) &&
- RSTRING_LEN(str1) == RSTRING_LEN(str2) &&
- rb_memcmp(RSTRING_PTR(str1), RSTRING_PTR(str2),
- RSTRING_LEN(str1)) == 0) {
- val = Qtrue;
- }
- else {
+ val = Qtrue;
+ do {
+ if (str1 == str2) break;
+ if (!ENCODING_GET(str1) && !ENCODING_GET(str2)) {
+ if (RSTRING_LEN(str1) == RSTRING_LEN(str2)) {
+ int cmp = memcmp(RSTRING_PTR(str1), RSTRING_PTR(str2),
+ RSTRING_LEN(str1));
+ if (!cmp) break;
+ }
+ }
val = rb_str_equal(str1, str2);
- }
+ } while (0);
}
else {
goto INSN_LABEL(normal_dispatch);