diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-11-15 02:45:52 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-11-15 02:45:52 +0900 |
| commit | 71354b91cb48ff3a5c1e3c09492d18a3c30efcb9 (patch) | |
| tree | b5d7040f11c3703d51c8dee1d6e2a0f57a9e4046 /src | |
| parent | 16b34d187ae668eaf203efaeccc1d7c5a05142f5 (diff) | |
| download | mruby-71354b91cb48ff3a5c1e3c09492d18a3c30efcb9.tar.gz mruby-71354b91cb48ff3a5c1e3c09492d18a3c30efcb9.zip | |
enum mrb_vtype varies on compile time configuration, namely MRB_NAN_BOXING
Diffstat (limited to 'src')
| -rw-r--r-- | src/codegen.c | 14 | ||||
| -rw-r--r-- | src/dump.c | 12 | ||||
| -rw-r--r-- | src/load.c | 7 | ||||
| -rw-r--r-- | src/state.c | 2 | ||||
| -rw-r--r-- | src/vm.c | 2 |
5 files changed, 20 insertions, 17 deletions
diff --git a/src/codegen.c b/src/codegen.c index a27bd612e..2072d278a 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -316,7 +316,7 @@ genop_peep(codegen_scope *s, mrb_code i, int val) if (c0 == OP_STRING) { int i = GETARG_Bx(i0); - if (s->irep->pool[i].type == MRB_TT_STRING && + if (s->irep->pool[i].type == IREP_TT_STRING && s->irep->pool[i].value.s->len == 0) { s->pc--; return; @@ -405,7 +405,7 @@ new_lit(codegen_scope *s, mrb_value val) mrb_int len; pv = &s->irep->pool[i]; - if (pv->type != MRB_TT_STRING) continue; + if (pv->type != IREP_TT_STRING) continue; if ((len = pv->value.s->len) != RSTRING_LEN(val)) continue; if (memcmp(pv->value.s->buf, RSTRING_PTR(val), len) == 0) return i; @@ -414,14 +414,14 @@ new_lit(codegen_scope *s, mrb_value val) case MRB_TT_FLOAT: for (i=0; i<s->irep->plen; i++) { pv = &s->irep->pool[i]; - if (pv->type != MRB_TT_FLOAT) continue; + if (pv->type != IREP_TT_FLOAT) continue; if (pv->value.f == mrb_float(val)) return i; } break; case MRB_TT_FIXNUM: for (i=0; i<s->irep->plen; i++) { pv = &s->irep->pool[i]; - if (pv->type != MRB_TT_FIXNUM) continue; + if (pv->type != IREP_TT_FIXNUM) continue; if (pv->value.i == mrb_fixnum(val)) return i; } break; @@ -437,18 +437,20 @@ new_lit(codegen_scope *s, mrb_value val) pv = &s->irep->pool[s->irep->plen]; i = s->irep->plen++; - pv->type = mrb_type(val); - switch (pv->type) { + switch (mrb_type(val)) { case MRB_TT_STRING: + pv->type = IREP_TT_STRING; pv->value.s = (struct irep_pool_string*)codegen_malloc(s, sizeof(struct irep_pool_string) + RSTRING_LEN(val)); pv->value.s->len = RSTRING_LEN(val); memcpy(pv->value.s->buf, RSTRING_PTR(val), RSTRING_LEN(val)); break; case MRB_TT_FLOAT: + pv->type = IREP_TT_FLOAT; pv->value.f = mrb_float(val); break; case MRB_TT_FIXNUM: + pv->type = IREP_TT_FIXNUM; pv->value.i = mrb_fixnum(val); break; default: diff --git a/src/dump.c b/src/dump.c index 4bb6b3d0b..8430fb9bc 100644 --- a/src/dump.c +++ b/src/dump.c @@ -80,17 +80,17 @@ get_pool_block_size(mrb_state *mrb, mrb_irep *irep) int ai = mrb_gc_arena_save(mrb); switch (irep->pool[pool_no].type) { - case MRB_TT_FIXNUM: + case IREP_TT_FIXNUM: str = mrb_fixnum_to_str(mrb, mrb_fixnum_value(irep->pool[pool_no].value.i), 10); size += RSTRING_LEN(str); break; - case MRB_TT_FLOAT: + case IREP_TT_FLOAT: len = mrb_float_to_str(buf, irep->pool[pool_no].value.f); size += len; break; - case MRB_TT_STRING: + case IREP_TT_STRING: size += irep->pool[pool_no].value.s->len; break; @@ -121,18 +121,18 @@ write_pool_block(mrb_state *mrb, mrb_irep *irep, uint8_t *buf) cur += uint8_to_bin(irep->pool[pool_no].type, cur); /* data type */ switch (irep->pool[pool_no].type) { - case MRB_TT_FIXNUM: + case IREP_TT_FIXNUM: str = mrb_fixnum_to_str(mrb, mrb_fixnum_value(irep->pool[pool_no].value.i), 10); char_ptr = RSTRING_PTR(str); len = RSTRING_LEN(str); break; - case MRB_TT_FLOAT: + case IREP_TT_FLOAT: len = mrb_float_to_str(char_buf, irep->pool[pool_no].value.f); char_ptr = &char_buf[0]; break; - case MRB_TT_STRING: + case IREP_TT_STRING: char_ptr = irep->pool[pool_no].value.s->buf; len = irep->pool[pool_no].value.s->len; break; diff --git a/src/load.c b/src/load.c index e4aefa402..562a1a0d9 100644 --- a/src/load.c +++ b/src/load.c @@ -94,6 +94,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, uint32_t *len) for (i = 0; i < plen; i++) { mrb_value s; + tt = *src++; //pool TT pool_data_len = bin_to_uint16(src); //pool data length src += sizeof(uint16_t); @@ -101,7 +102,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, uint32_t *len) src += pool_data_len; irep->pool[i].type = tt; switch (tt) { //pool data - case MRB_TT_FIXNUM: + case IREP_TT_FIXNUM: { mrb_value v = mrb_str_to_inum(mrb, s, 10, FALSE); @@ -119,11 +120,11 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, uint32_t *len) } break; - case MRB_TT_FLOAT: + case IREP_TT_FLOAT: irep->pool[i].value.f = mrb_str_to_dbl(mrb, s, FALSE); break; - case MRB_TT_STRING: + case IREP_TT_STRING: irep->pool[i].value.s = (struct irep_pool_string*)mrb_malloc(mrb, sizeof(struct irep_pool_string) + pool_data_len); irep->pool[i].value.s->len = pool_data_len; memcpy(irep->pool[i].value.s->buf, src-pool_data_len, pool_data_len); diff --git a/src/state.c b/src/state.c index 0012bc189..9ec96068e 100644 --- a/src/state.c +++ b/src/state.c @@ -129,7 +129,7 @@ mrb_irep_free(mrb_state *mrb, mrb_irep *irep) if (!(irep->flags & MRB_ISEQ_NO_FREE)) mrb_free(mrb, irep->iseq); for (i=0; i<irep->plen; i++) { - if (irep->pool[i].type == MRB_TT_STRING) + if (irep->pool[i].type == IREP_TT_STRING) mrb_free(mrb, irep->pool[i].value.s); } mrb_free(mrb, irep->pool); @@ -618,7 +618,7 @@ mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int CASE(OP_LOADL) { /* A Bx R(A) := Pool(Bx) */ - if (pool[GETARG_Bx(i)].type == MRB_TT_FLOAT) + if (pool[GETARG_Bx(i)].type == IREP_TT_FLOAT) SET_FLT_VALUE(mrb, regs[GETARG_A(i)], pool[GETARG_Bx(i)].value.f); else SET_INT_VALUE(regs[GETARG_A(i)], pool[GETARG_Bx(i)].value.i); |
