diff options
-rw-r--r-- | lib.c | 6 | ||||
-rw-r--r-- | value.c | 15 | ||||
-rw-r--r-- | vm.c | 24 |
3 files changed, 12 insertions, 33 deletions
@@ -339,7 +339,7 @@ uc_index(uc_vm *vm, size_t nargs, bool right) switch (ucv_type(stack)) { case UC_ARRAY: for (arridx = 0, len = ucv_array_length(stack); arridx < len; arridx++) { - if (uc_cmp(TK_EQ, ucv_array_get(stack, arridx), needle)) { + if (uc_cmp(I_EQ, ucv_array_get(stack, arridx), needle)) { ret = (ssize_t)arridx; if (!right) @@ -2600,13 +2600,13 @@ uc_min_max(uc_vm *vm, size_t nargs, int cmp) static uc_value_t * uc_min(uc_vm *vm, size_t nargs) { - return uc_min_max(vm, nargs, TK_LT); + return uc_min_max(vm, nargs, I_LT); } static uc_value_t * uc_max(uc_vm *vm, size_t nargs) { - return uc_min_max(vm, nargs, TK_GT); + return uc_min_max(vm, nargs, I_GT); } @@ -23,7 +23,6 @@ #include "util.h" #include "chunk.h" #include "value.h" -#include "lexer.h" /* TK_* */ #include "vm.h" #define TAG_TYPE uint64_t @@ -288,7 +287,7 @@ uc_cmp(int how, uc_value_t *v1, uc_value_t *v2) /* all comparison results except `!=` involving NaN are false */ if (isnan(d1) || isnan(d2)) - return (how == TK_NE); + return (how == I_NE); if (d1 == d2) delta = 0; @@ -304,22 +303,22 @@ uc_cmp(int how, uc_value_t *v1, uc_value_t *v2) } switch (how) { - case TK_LT: + case I_LT: return (delta < 0); - case TK_LE: + case I_LE: return (delta <= 0); - case TK_GT: + case I_GT: return (delta > 0); - case TK_GE: + case I_GE: return (delta >= 0); - case TK_EQ: + case I_EQ: return (delta == 0); - case TK_NE: + case I_NE: return (delta != 0); default: @@ -1634,28 +1634,8 @@ uc_vm_insn_rel(uc_vm *vm, enum insn_type insn) { uc_value_t *r2 = uc_vm_stack_pop(vm); uc_value_t *r1 = uc_vm_stack_pop(vm); - bool res = false; - switch (insn) { - case I_LT: - res = uc_cmp(TK_LT, r1, r2); - break; - - case I_GT: - res = uc_cmp(TK_GT, r1, r2); - break; - - case I_EQ: - res = uc_cmp(TK_EQ, r1, r2); - break; - - case I_NE: - res = uc_cmp(TK_NE, r1, r2); - break; - - default: - break; - } + bool res = uc_cmp(insn, r1, r2); ucv_put(r1); ucv_put(r2); @@ -1679,7 +1659,7 @@ uc_vm_insn_in(uc_vm *vm, enum insn_type insn) arridx < arrlen; arridx++) { item = ucv_array_get(r2, arridx); - if (uc_cmp(TK_EQ, r1, item)) { + if (uc_cmp(I_EQ, r1, item)) { found = true; break; } |