diff options
| -rw-r--r-- | build_config.rb | 6 | ||||
| -rw-r--r-- | include/mrbconf.h | 1 | ||||
| -rw-r--r-- | include/mruby/compile.h | 8 | ||||
| -rw-r--r-- | src/array.c | 4 | ||||
| -rw-r--r-- | src/class.c | 7 | ||||
| -rw-r--r-- | src/codegen.c | 19 | ||||
| -rw-r--r-- | src/error.c | 25 | ||||
| -rw-r--r-- | src/error.h | 1 | ||||
| -rw-r--r-- | src/parse.y | 30 | ||||
| -rw-r--r-- | src/state.c | 2 | ||||
| -rw-r--r-- | src/string.c | 5 | ||||
| -rw-r--r-- | src/vm.c | 2 | ||||
| -rw-r--r-- | test/driver.c | 1 | ||||
| -rw-r--r-- | tools/mirb/mirb.c | 38 |
14 files changed, 65 insertions, 84 deletions
diff --git a/build_config.rb b/build_config.rb index 951f4b7a3..66c64ab80 100644 --- a/build_config.rb +++ b/build_config.rb @@ -11,6 +11,9 @@ MRuby::Build.new do |conf| # conf.gem :github => 'masuidrive/mrbgems-example', :branch => 'master' # conf.gem :git => '[email protected]:masuidrive/mrbgems-example.git', :branch => 'master', :options => '-v' + # Use standard Kernel#sprintf method + conf.gem "#{root}/mrbgems/mruby-sprintf" + # Use standard print/puts/p conf.gem "#{root}/mrbgems/mruby-print" @@ -23,9 +26,6 @@ MRuby::Build.new do |conf| # Use standard Struct class conf.gem "#{root}/mrbgems/mruby-struct" - # Use standard Kernel#sprintf method - conf.gem "#{root}/mrbgems/mruby-sprintf" - # Use extensional Enumerable module conf.gem "#{root}/mrbgems/mruby-enum-ext" diff --git a/include/mrbconf.h b/include/mrbconf.h index 0caa3f90e..988bdf0ad 100644 --- a/include/mrbconf.h +++ b/include/mrbconf.h @@ -8,6 +8,7 @@ #define MRUBYCONF_H #include <stdint.h> +#include <stddef.h> /* configuration options: */ /* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */ diff --git a/include/mruby/compile.h b/include/mruby/compile.h index d8edc32cf..51615fe9f 100644 --- a/include/mruby/compile.h +++ b/include/mruby/compile.h @@ -101,7 +101,9 @@ struct mrb_parser_state { struct mrb_pool *pool; mrb_ast_node *cells; const char *s, *send; +#ifdef ENABLE_STDIO FILE *f; +#endif char *filename; int lineno; int column; @@ -143,16 +145,22 @@ void mrb_parser_free(struct mrb_parser_state*); void mrb_parser_parse(struct mrb_parser_state*,mrbc_context*); /* utility functions */ +#ifdef ENABLE_STDIO struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrbc_context*); +#endif struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrbc_context*); struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,int,mrbc_context*); int mrb_generate_code(mrb_state*, struct mrb_parser_state*); /* program load functions */ +#ifdef ENABLE_STDIO mrb_value mrb_load_file(mrb_state*,FILE*); +#endif mrb_value mrb_load_string(mrb_state *mrb, const char *s); mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, int len); +#ifdef ENABLE_STDIO mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt); +#endif mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt); mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *cxt); diff --git a/src/array.c b/src/array.c index 5f588e195..f9cc9119c 100644 --- a/src/array.c +++ b/src/array.c @@ -952,11 +952,7 @@ static mrb_value mrb_ary_inspect(mrb_state *mrb, mrb_value ary) { if (RARRAY_LEN(ary) == 0) return mrb_str_new(mrb, "[]", 2); - #if 0 /* THREAD */ - return mrb_exec_recursive(inspect_ary_r, ary, 0); - #else return inspect_ary(mrb, ary, mrb_ary_new(mrb)); - #endif } static mrb_value diff --git a/src/class.c b/src/class.c index 11f68340c..84132c38a 100644 --- a/src/class.c +++ b/src/class.c @@ -1369,9 +1369,12 @@ mrb_mod_to_s(mrb_state *mrb, mrb_value klass) mrb_str_cat(mrb, str, ">", 1); } else { + struct RClass *c; + mrb_value path; + str = mrb_str_buf_new(mrb, 32); - struct RClass *c = mrb_class_ptr(klass); - mrb_value path = mrb_class_path(mrb, c); + c = mrb_class_ptr(klass); + path = mrb_class_path(mrb, c); if (mrb_nil_p(path)) { switch (mrb_type(klass)) { diff --git a/src/codegen.c b/src/codegen.c index 5b86c90a9..e8fcce5c2 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1848,12 +1848,13 @@ codegen(codegen_scope *s, node *tree, int val) case NODE_BACK_REF: { - char buf[4]; - int len; + char buf[2] = { '$' }; + mrb_value str; int sym; - len = snprintf(buf, sizeof(buf), "$%c", (int)(intptr_t)tree); - sym = new_sym(s, mrb_intern2(s->mrb, buf, len)); + buf[1] = (char)(intptr_t)tree; + str = mrb_str_new(s->mrb, buf, 2); + sym = new_sym(s, mrb_intern_str(s->mrb, str)); genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym)); push(); } @@ -1861,12 +1862,14 @@ codegen(codegen_scope *s, node *tree, int val) case NODE_NTH_REF: { - char buf[4]; - int len; int sym; + mrb_state *mrb = s->mrb; + mrb_value fix = mrb_fixnum_value((intptr_t)tree); + mrb_value str = mrb_str_buf_new(mrb, 4); - len = snprintf(buf, sizeof(buf), "$%d", (int)(intptr_t)tree); - sym = new_sym(s, mrb_intern2(s->mrb, buf, len)); + mrb_str_buf_cat(mrb, str, "$", 1); + mrb_str_buf_append(mrb, str, mrb_fix2str(mrb, fix, 10)); + sym = new_sym(s, mrb_intern_str(mrb, str)); genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym)); push(); } diff --git a/src/error.c b/src/error.c index 6cf160801..ab5480e97 100644 --- a/src/error.c +++ b/src/error.c @@ -291,31 +291,6 @@ mrb_bug(const char *fmt, ...) exit(EXIT_FAILURE); } -static const char * -mrb_strerrno(int err) -{ -#define defined_error(name, num) if (err == num) return name; -#define undefined_error(name) -//#include "known_errors.inc" -#undef defined_error -#undef undefined_error - return NULL; -} - -void -mrb_bug_errno(const char *mesg, int errno_arg) -{ - if (errno_arg == 0) - mrb_bug("%s: errno == 0 (NOERROR)", mesg); - else { - const char *errno_str = mrb_strerrno(errno_arg); - if (errno_str) - mrb_bug("%s: %s (%s)", mesg, strerror(errno_arg), errno_str); - else - mrb_bug("%s: %s (%d)", mesg, strerror(errno_arg), errno_arg); - } -} - int sysexit_status(mrb_state *mrb, mrb_value err) { diff --git a/src/error.h b/src/error.h index 91d6595ff..53ee2b206 100644 --- a/src/error.h +++ b/src/error.h @@ -8,7 +8,6 @@ #define MRUBY_ERROR_H void mrb_sys_fail(mrb_state *mrb, const char *mesg); -void mrb_bug_errno(const char*, int); int sysexit_status(mrb_state *mrb, mrb_value err); mrb_value mrb_exc_new3(mrb_state *mrb, struct RClass* c, mrb_value str); mrb_value make_exception(mrb_state *mrb, int argc, mrb_value *argv, int isstr); diff --git a/src/parse.y b/src/parse.y index 29ea34c59..4826f4336 100644 --- a/src/parse.y +++ b/src/parse.y @@ -395,15 +395,6 @@ new_fcall(parser_state *p, mrb_sym b, node *c) return list4((node*)NODE_FCALL, new_self(p), nsym(b), c); } -#if 0 -// (:vcall self mid) -static node* -new_vcall(parser_state *p, mrb_sym b) -{ - return list3((node*)NODE_VCALL, new_self(p), (node*)b); -} -#endif - // (:super . c) static node* new_super(parser_state *p, node *c) @@ -1790,11 +1781,6 @@ arg : lhs '=' arg | arg tMATCH arg { $$ = call_bin_op(p, $1, "=~", $3); -#if 0 - if (nd_type($1) == NODE_LIT && TYPE($1->nd_lit) == T_REGEXP) { - $$ = reg_named_capture_assign($1->nd_lit, $$); - } -#endif } | arg tNMATCH arg { @@ -3241,12 +3227,15 @@ nextc(parser_state *p) cons_free(tmp); } else { +#ifdef ENABLE_STDIO if (p->f) { if (feof(p->f)) return -1; c = fgetc(p->f); if (c == EOF) return -1; } - else if (!p->s || p->s >= p->send) { + else +#endif + if (!p->s || p->s >= p->send) { return -1; } else { @@ -3304,6 +3293,7 @@ peeks(parser_state *p, const char *s) { int len = strlen(s); +#ifdef ENABLE_STDIO if (p->f) { int n = 0; while (*s) { @@ -3311,7 +3301,9 @@ peeks(parser_state *p, const char *s) } return TRUE; } - else if (p->s && p->s + len >= p->send) { + else +#endif + if (p->s && p->s + len >= p->send) { if (memcmp(p->s, s, len) == 0) return TRUE; } return FALSE; @@ -5079,7 +5071,9 @@ mrb_parser_new(mrb_state *mrb) p->in_def = p->in_single = 0; p->s = p->send = NULL; +#ifdef ENABLE_STDIO p->f = NULL; +#endif p->cmd_start = TRUE; p->in_def = p->in_single = FALSE; @@ -5132,6 +5126,7 @@ mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s) return c->filename; } +#ifdef ENABLE_STDIO parser_state* mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c) { @@ -5145,6 +5140,7 @@ mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c) mrb_parser_parse(p, c); return p; } +#endif parser_state* mrb_parse_nstring(mrb_state *mrb, const char *s, int len, mrbc_context *c) @@ -5208,6 +5204,7 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c) return v; } +#ifdef ENABLE_STDIO mrb_value mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c) { @@ -5219,6 +5216,7 @@ mrb_load_file(mrb_state *mrb, FILE *f) { return mrb_load_file_cxt(mrb, f, NULL); } +#endif mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *c) diff --git a/src/state.c b/src/state.c index 1278249b1..070237434 100644 --- a/src/state.c +++ b/src/state.c @@ -46,7 +46,7 @@ allocf(mrb_state *mrb, void *p, size_t size, void *ud) struct alloca_header { struct alloca_header *next; - char buf[0]; + char buf[]; }; void* diff --git a/src/string.c b/src/string.c index 79c40e9cc..65f21a091 100644 --- a/src/string.c +++ b/src/string.c @@ -2068,9 +2068,6 @@ mrb_str_sub(mrb_state *mrb, mrb_value self) mrb_value mrb_cstr_to_inum(mrb_state *mrb, const char *str, int base, int badcheck) { - #define BDIGIT unsigned int - #define BDIGIT_DBL unsigned long - char *end; char sign = 1; int c; @@ -2278,7 +2275,7 @@ mrb_cstr_to_dbl(mrb_state *mrb, const char * p, int badcheck) char *end; double d; #if !defined(DBL_DIG) - #define DBL_DIG 16 +# define DBL_DIG 16 #endif enum {max_width = 20}; @@ -175,7 +175,7 @@ is_strict(mrb_state *mrb, struct REnv *e) return 0; } -inline struct REnv* +static inline struct REnv* top_env(mrb_state *mrb, struct RProc *proc) { struct REnv *e = proc->env; diff --git a/test/driver.c b/test/driver.c index acf79df05..a55e1180f 100644 --- a/test/driver.c +++ b/test/driver.c @@ -6,6 +6,7 @@ */ +#include <stdio.h> #include <stdlib.h> #include <string.h> diff --git a/tools/mirb/mirb.c b/tools/mirb/mirb.c index c771535c6..4151b9b13 100644 --- a/tools/mirb/mirb.c +++ b/tools/mirb/mirb.c @@ -242,31 +242,31 @@ main(void) } else { if (0 < parser->nerr) { - /* syntax error */ - printf("line %d: %s\n", parser->error_buffer[0].lineno, parser->error_buffer[0].message); + /* syntax error */ + printf("line %d: %s\n", parser->error_buffer[0].lineno, parser->error_buffer[0].message); } else { - /* generate bytecode */ - n = mrb_generate_code(mrb, parser); + /* generate bytecode */ + n = mrb_generate_code(mrb, parser); - /* evaluate the bytecode */ - result = mrb_run(mrb, + /* evaluate the bytecode */ + result = mrb_run(mrb, /* pass a proc for evaulation */ mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb)); - /* did an exception occur? */ - if (mrb->exc) { - p(mrb, mrb_obj_value(mrb->exc)); - mrb->exc = 0; - } - else { - /* no */ - printf(" => "); - if (!mrb_respond_to(mrb,result,mrb_intern(mrb,"inspect"))){ - result = mrb_any_to_s(mrb,result); - } - p(mrb, result); - } + /* did an exception occur? */ + if (mrb->exc) { + p(mrb, mrb_obj_value(mrb->exc)); + mrb->exc = 0; + } + else { + /* no */ + printf(" => "); + if (!mrb_respond_to(mrb,result,mrb_intern(mrb,"inspect"))){ + result = mrb_any_to_s(mrb,result); + } + p(mrb, result); + } } ruby_code[0] = '\0'; last_code_line[0] = '\0'; |
