diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/class.c | 6 | ||||
| -rw-r--r-- | src/gc.c | 2 | ||||
| -rw-r--r-- | src/kernel.c | 10 | ||||
| -rw-r--r-- | src/object.c | 12 | ||||
| -rw-r--r-- | src/range.c | 2 | ||||
| -rw-r--r-- | src/vm.c | 19 |
6 files changed, 25 insertions, 26 deletions
diff --git a/src/class.c b/src/class.c index ed0aeb45b..c2d17e2fc 100644 --- a/src/class.c +++ b/src/class.c @@ -377,7 +377,7 @@ to_hash(mrb_state *mrb, mrb_value val) a: Array [mrb_value*,mrb_int] f: Float [mrb_float] i: Integer [mrb_int] - b: Binary [int] + b: Boolean [mrb_bool] n: Symbol [mrb_sym] &: Block [mrb_value] *: rest argument [mrb_value*,int] @@ -579,7 +579,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) break; case 'b': { - int *boolp = va_arg(ap, int*); + mrb_bool *boolp = va_arg(ap, mrb_bool*); if (i < argc) { mrb_value b = *sp++; @@ -864,7 +864,7 @@ static mrb_value mrb_mod_instance_methods(mrb_state *mrb, mrb_value mod) { struct RClass *c = mrb_class_ptr(mod); - int recur = TRUE; + mrb_bool recur = TRUE; mrb_get_args(mrb, "|b", &recur); return class_instance_method_list(mrb, recur, c, 0); } @@ -1135,7 +1135,7 @@ gc_generational_mode_get(mrb_state *mrb, mrb_value self) static mrb_value gc_generational_mode_set(mrb_state *mrb, mrb_value self) { - int enable; + mrb_bool enable; mrb_get_args(mrb, "b", &enable); if (mrb->is_generational_gc_mode != enable) diff --git a/src/kernel.c b/src/kernel.c index fc50cad53..5ce5669c3 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -782,7 +782,7 @@ mrb_obj_methods(mrb_state *mrb, mrb_bool recur, mrb_value obj, mrb_method_flag_t mrb_value mrb_obj_methods_m(mrb_state *mrb, mrb_value self) { - int recur = TRUE; + mrb_bool recur = TRUE; mrb_get_args(mrb, "|b", &recur); return mrb_obj_methods(mrb, recur, self, (mrb_method_flag_t)0); /* everything but private */ } @@ -813,7 +813,7 @@ mrb_false(mrb_state *mrb, mrb_value self) mrb_value mrb_obj_private_methods(mrb_state *mrb, mrb_value self) { - int recur = TRUE; + mrb_bool recur = TRUE; mrb_get_args(mrb, "|b", &recur); return mrb_obj_methods(mrb, recur, self, NOEX_PRIVATE); /* private attribute not define */ } @@ -830,7 +830,7 @@ mrb_obj_private_methods(mrb_state *mrb, mrb_value self) mrb_value mrb_obj_protected_methods(mrb_state *mrb, mrb_value self) { - int recur = TRUE; + mrb_bool recur = TRUE; mrb_get_args(mrb, "|b", &recur); return mrb_obj_methods(mrb, recur, self, NOEX_PROTECTED); /* protected attribute not define */ } @@ -847,7 +847,7 @@ mrb_obj_protected_methods(mrb_state *mrb, mrb_value self) mrb_value mrb_obj_public_methods(mrb_state *mrb, mrb_value self) { - int recur = TRUE; + mrb_bool recur = TRUE; mrb_get_args(mrb, "|b", &recur); return mrb_obj_methods(mrb, recur, self, NOEX_PUBLIC); /* public attribute not define */ } @@ -1021,7 +1021,7 @@ obj_respond_to(mrb_state *mrb, mrb_value self) mrb_value mrb_obj_singleton_methods_m(mrb_state *mrb, mrb_value self) { - int recur = TRUE; + mrb_bool recur = TRUE; mrb_get_args(mrb, "|b", &recur); return mrb_obj_singleton_methods(mrb, recur, self); } diff --git a/src/object.c b/src/object.c index 23786e859..39a8825d2 100644 --- a/src/object.c +++ b/src/object.c @@ -111,7 +111,7 @@ nil_inspect(mrb_state *mrb, mrb_value obj) static mrb_value true_and(mrb_state *mrb, mrb_value obj) { - int obj2; + mrb_bool obj2; mrb_get_args(mrb, "b", &obj2); @@ -131,7 +131,7 @@ true_and(mrb_state *mrb, mrb_value obj) static mrb_value true_xor(mrb_state *mrb, mrb_value obj) { - int obj2; + mrb_bool obj2; mrb_get_args(mrb, "b", &obj2); return mrb_bool_value(!obj2); @@ -171,7 +171,7 @@ true_to_s(mrb_state *mrb, mrb_value obj) static mrb_value true_or(mrb_state *mrb, mrb_value obj) { - int obj2; + mrb_bool obj2; mrb_get_args(mrb, "b", &obj2); return mrb_true_value(); @@ -202,7 +202,7 @@ true_or(mrb_state *mrb, mrb_value obj) static mrb_value false_and(mrb_state *mrb, mrb_value obj) { - int obj2; + mrb_bool obj2; mrb_get_args(mrb, "b", &obj2); return mrb_false_value(); @@ -224,7 +224,7 @@ false_and(mrb_state *mrb, mrb_value obj) static mrb_value false_xor(mrb_state *mrb, mrb_value obj) { - int obj2; + mrb_bool obj2; mrb_get_args(mrb, "b", &obj2); return mrb_bool_value(obj2); @@ -244,7 +244,7 @@ false_xor(mrb_state *mrb, mrb_value obj) static mrb_value false_or(mrb_state *mrb, mrb_value obj) { - int obj2; + mrb_bool obj2; mrb_get_args(mrb, "b", &obj2); return mrb_bool_value(obj2); diff --git a/src/range.c b/src/range.c index fb4d975e7..ab72c4826 100644 --- a/src/range.c +++ b/src/range.c @@ -120,7 +120,7 @@ mrb_value mrb_range_initialize(mrb_state *mrb, mrb_value range) { mrb_value beg, end; - int exclusive; + mrb_bool exclusive; int n; n = mrb_get_args(mrb, "oo|b", &beg, &end, &exclusive); @@ -237,6 +237,7 @@ ecall(mrb_state *mrb, int i) struct RObject *exc; p = mrb->ensure[i]; + if (!p) return; ci = cipush(mrb); ci->stackidx = mrb->stack - mrb->stbase; ci->mid = ci[-1].mid; @@ -248,6 +249,7 @@ ecall(mrb_state *mrb, int i) mrb->stack = mrb->stack + ci[-1].nregs; exc = mrb->exc; mrb->exc = 0; mrb_run(mrb, p, *self); + mrb->ensure[i] = NULL; if (!mrb->exc) mrb->exc = exc; } @@ -1216,6 +1218,9 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) if (ci->ridx == 0) goto L_STOP; goto L_RESCUE; } + while (eidx > ci[-1].eidx) { + ecall(mrb, --eidx); + } while (ci[0].ridx == ci[-1].ridx) { cipop(mrb); ci = mrb->ci; @@ -1224,7 +1229,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) mrb->jmp = prev_jmp; longjmp(*(jmp_buf*)mrb->jmp, 1); } - while (eidx > mrb->ci->eidx) { + while (eidx > ci->eidx) { ecall(mrb, --eidx); } if (ci == mrb->cibase) { @@ -1283,19 +1288,13 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) /* cannot happen */ break; } + while (eidx > mrb->ci[-1].eidx) { + ecall(mrb, --eidx); + } cipop(mrb); acc = ci->acc; pc = ci->pc; regs = mrb->stack = mrb->stbase + ci->stackidx; - { - int idx = eidx; - while (idx > mrb->ci->eidx) { - mrb_gc_protect(mrb, mrb_obj_value(mrb->ensure[--idx])); - } - } - while (eidx > mrb->ci->eidx) { - ecall(mrb, --eidx); - } if (acc < 0) { mrb->jmp = prev_jmp; return v; |
