From aa1bbe67b67b36bdc449255c6ebb1c48c4c0a7db Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Thu, 21 Jun 2012 11:17:16 +0900 Subject: Simplify. Should not use strlen() as possible. It needs complexity. --- src/codegen.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/codegen.c b/src/codegen.c index e6c339521..3374b2e7f 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -633,31 +633,31 @@ gen_call(codegen_scope *s, node *tree, mrb_sym name, int sp, int val) { const char *name = mrb_sym2name(s->mrb, sym); - if (!noop && name[0] == '+' && strlen(name) == 1) { + if (!noop && name[0] == '+' && name[1] == '\0') { genop(s, MKOP_ABC(OP_ADD, cursp(), idx, n)); } - else if (!noop && name[0] == '-' && strlen(name) == 1) { + else if (!noop && name[0] == '-' && name[1] == '\0') { genop(s, MKOP_ABC(OP_SUB, cursp(), idx, n)); } - else if (!noop && name[0] == '*' && strlen(name) == 1) { + else if (!noop && name[0] == '*' && name[1] == '\0') { genop(s, MKOP_ABC(OP_MUL, cursp(), idx, n)); } - else if (!noop && name[0] == '/' && strlen(name) == 1) { + else if (!noop && name[0] == '/' && name[1] == '\0') { genop(s, MKOP_ABC(OP_DIV, cursp(), idx, n)); } - else if (!noop && name[0] == '<' && strlen(name) == 1) { + else if (!noop && name[0] == '<' && name[1] == '\0') { genop(s, MKOP_ABC(OP_LT, cursp(), idx, n)); } - else if (!noop && name[0] == '<' && strlen(name) == 2 && name[1] == '=') { + else if (!noop && name[0] == '<' && name[1] == '=' && name[2] == '\0') { genop(s, MKOP_ABC(OP_LE, cursp(), idx, n)); } - else if (!noop && name[0] == '>' && strlen(name) == 1) { + else if (!noop && name[0] == '>' && name[1] == '\0') { genop(s, MKOP_ABC(OP_GT, cursp(), idx, n)); } - else if (!noop && name[0] == '>' && strlen(name) == 2 && name[1] == '=') { + else if (!noop && name[0] == '>' && name[1] == '=' && name[2] == '\0') { genop(s, MKOP_ABC(OP_GE, cursp(), idx, n)); } - else if (!noop && name[0] == '=' && strlen(name) == 2 && name[1] == '=') { + else if (!noop && name[0] == '=' && name[1] == '=' && name[2] == '\0') { genop(s, MKOP_ABC(OP_EQ, cursp(), idx, n)); } else { @@ -1258,8 +1258,8 @@ codegen(codegen_scope *s, node *tree, int val) int idx; codegen(s, tree->car, VAL); - if ((name[0] == '|' && strlen(name) == 2 && name[1] == '|') || - (name[0] == '&' && strlen(name) == 2 && name[1] == '&')) { + if ((name[0] == '|' && name[1] == '|' && name[2] == '\0') || + (name[0] == '&' && name[1] == '&' && name[2] == '\0')) { int pos; pop(); @@ -1276,22 +1276,22 @@ codegen(codegen_scope *s, node *tree, int val) pop(); pop(); idx = new_msym(s, sym); - if (name[0] == '+' && strlen(name) == 1) { + if (name[0] == '+' && name[1] == '\0') { genop(s, MKOP_ABC(OP_ADD, cursp(), idx, 1)); } - else if (name[0] == '-' && strlen(name) == 1) { + else if (name[0] == '-' && name[1] == '\0') { genop(s, MKOP_ABC(OP_SUB, cursp(), idx, 1)); } - else if (name[0] == '<' && strlen(name) == 1) { + else if (name[0] == '<' && name[1] == '\0') { genop(s, MKOP_ABC(OP_LT, cursp(), idx, 1)); } - else if (name[0] == '<' && strlen(name) == 2 && name[1] == '=') { + else if (name[0] == '<' && name[1] == '=' && name[2] == '\0') { genop(s, MKOP_ABC(OP_LE, cursp(), idx, 1)); } - else if (name[0] == '>' && strlen(name) == 1) { + else if (name[0] == '>' && name[1] == '\0') { genop(s, MKOP_ABC(OP_GT, cursp(), idx, 1)); } - else if (name[0] == '>' && strlen(name) == 2 && name[1] == '=') { + else if (name[0] == '>' && name[1] == '=' && name[2] == '\0') { genop(s, MKOP_ABC(OP_GE, cursp(), idx, 1)); } else { -- cgit v1.2.3