diff options
| author | take_cheeze <[email protected]> | 2014-04-29 22:06:59 +0900 |
|---|---|---|
| committer | take_cheeze <[email protected]> | 2014-04-29 22:06:59 +0900 |
| commit | 5073d14e280a82e4cb4e41692154de825b07b5e9 (patch) | |
| tree | 6a120379e31fae527a10f2267bff9834020b6d2f /src/codegen.c | |
| parent | 7ea82fedd5585bc753464aae7fc406cd2f1ce08e (diff) | |
| download | mruby-5073d14e280a82e4cb4e41692154de825b07b5e9.tar.gz mruby-5073d14e280a82e4cb4e41692154de825b07b5e9.zip | |
Remove `lv_len` and use `nlocals - 1` instead.
Check that `lv`'s length is always `nlocals - 1`.
Diffstat (limited to 'src/codegen.c')
| -rw-r--r-- | src/codegen.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/codegen.c b/src/codegen.c index 822dfef88..5e22e199f 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -2496,20 +2496,16 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *lv) p->lv = lv; p->sp += node_len(lv)+1; /* add self */ p->nlocals = p->sp; - p->irep->lv_len = 0; if (lv) { node *n = lv; size_t i = 0; - for (n=lv; n; n=n->cdr) { - p->irep->lv_len++; - } - - p->irep->lv = (struct mrb_locals*)mrb_malloc(mrb, sizeof(struct mrb_locals)*p->irep->lv_len); + p->irep->lv = (struct mrb_locals*)mrb_malloc(mrb, sizeof(struct mrb_locals) * (p->nlocals - 1)); for (i=0, n=lv; n; i++,n=n->cdr) { p->irep->lv[i].name = lv_name(n); p->irep->lv[i].r = lv_idx(p, lv_name(n)); } + mrb_assert(i == (p->nlocals - 1)); } p->ai = mrb_gc_arena_save(mrb); |
