diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby.h | 1 | ||||
| -rw-r--r-- | include/mruby/dump.h | 22 | ||||
| -rw-r--r-- | include/mruby/irep.h | 5 |
3 files changed, 9 insertions, 19 deletions
diff --git a/include/mruby.h b/include/mruby.h index 445bc5e11..6f2f12320 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -256,7 +256,6 @@ mrb_value mrb_str_new_static(mrb_state *mrb, const char *p, size_t len); mrb_state* mrb_open(void); mrb_state* mrb_open_allocf(mrb_allocf, void *ud); -void mrb_irep_free(mrb_state*, struct mrb_irep*); void mrb_close(mrb_state*); mrb_value mrb_top_self(mrb_state *); diff --git a/include/mruby/dump.h b/include/mruby/dump.h index e75be9f07..c21f225c0 100644 --- a/include/mruby/dump.h +++ b/include/mruby/dump.h @@ -12,17 +12,15 @@ extern "C" { #endif #include "mruby.h" +#include "mruby/irep.h" #ifdef ENABLE_STDIO -int mrb_dump_irep_binary(mrb_state*, size_t, int, FILE*); -int mrb_dump_irep_cfunc(mrb_state *mrb, size_t n, int, FILE *f, const char *initname); -int32_t mrb_read_irep_file(mrb_state*, FILE*); -#endif -int32_t mrb_read_irep(mrb_state*, const uint8_t*); - -#ifdef ENABLE_STDIO +int mrb_dump_irep_binary(mrb_state*, mrb_irep*, int, FILE*); +int mrb_dump_irep_cfunc(mrb_state *mrb, mrb_irep*, int, FILE *f, const char *initname); +mrb_irep *mrb_read_irep_file(mrb_state*, FILE*); mrb_value mrb_load_irep_file(mrb_state*,FILE*); #endif +mrb_irep *mrb_read_irep(mrb_state*, const uint8_t*); /* dump/load error code * @@ -43,7 +41,7 @@ mrb_value mrb_load_irep_file(mrb_state*,FILE*); /* Rite Binary File header */ #define RITE_BINARY_IDENTIFIER "RITE" -#define RITE_BINARY_FORMAT_VER "0001" +#define RITE_BINARY_FORMAT_VER "0002" #define RITE_COMPILER_NAME "MATZ" #define RITE_COMPILER_VERSION "0000" @@ -79,22 +77,14 @@ struct rite_section_irep_header { RITE_SECTION_HEADER; uint8_t rite_version[4]; // Rite Instruction Specification Version - uint8_t nirep[2]; // Number of ireps - uint8_t sirep[2]; // Start index }; struct rite_section_lineno_header { RITE_SECTION_HEADER; - - uint8_t nirep[2]; // Number of ireps - uint8_t sirep[2]; // Start index }; struct rite_section_debug_header { RITE_SECTION_HEADER; - - uint8_t nirep[2]; // Number of ireps - uint8_t sirep[2]; // Start index }; struct rite_binary_footer { diff --git a/include/mruby/irep.h b/include/mruby/irep.h index 56e043e74..83cd4b9e8 100644 --- a/include/mruby/irep.h +++ b/include/mruby/irep.h @@ -13,7 +13,6 @@ extern "C" { /* Program data array struct */ typedef struct mrb_irep { - uint32_t idx; uint16_t nlocals; /* Number of local variables */ uint16_t nregs; /* Number of register variables */ uint8_t flags; @@ -21,19 +20,21 @@ typedef struct mrb_irep { mrb_code *iseq; mrb_value *pool; mrb_sym *syms; + struct mrb_irep **reps; /* debug info */ const char *filename; uint16_t *lines; struct mrb_irep_debug_info* debug_info; - size_t ilen, plen, slen; + size_t ilen, plen, slen, rlen; } mrb_irep; #define MRB_ISEQ_NO_FREE 1 mrb_irep *mrb_add_irep(mrb_state *mrb); mrb_value mrb_load_irep(mrb_state*, const uint8_t*); +void mrb_irep_free(mrb_state*, struct mrb_irep*); #if defined(__cplusplus) } /* extern "C" { */ |
