modified to use irep->reps to reference child ireps. preparation for

removing irep array from mrb_state.  note that instructions OP_LAMBDA,
OP_EXEC and OP_EPUSH are incompatible, and dumped mrb format has changed.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2013-11-07 03:54:22 +09:00
parent f80401de6c
commit e92d4e2680
13 changed files with 503 additions and 498 deletions
+6 -16
View File
@@ -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 {