Commit f6d686ea authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #1410 from Fleurer/introduce-mrb-assert

add assert check for TravisCI
parents 2d83e4b8 54ff02ac
...@@ -382,6 +382,13 @@ void* mrb_pool_realloc(struct mrb_pool*, void*, size_t oldlen, size_t newlen); ...@@ -382,6 +382,13 @@ void* mrb_pool_realloc(struct mrb_pool*, void*, size_t oldlen, size_t newlen);
mrb_bool mrb_pool_can_realloc(struct mrb_pool*, void*, size_t); mrb_bool mrb_pool_can_realloc(struct mrb_pool*, void*, size_t);
void* mrb_alloca(mrb_state *mrb, size_t); void* mrb_alloca(mrb_state *mrb, size_t);
#ifdef MRB_DEBUG
#include <assert.h>
#define mrb_assert(p) assert(p)
#else
#define mrb_assert(p) ((void)0)
#endif
#if defined(__cplusplus) #if defined(__cplusplus)
} /* extern "C" { */ } /* extern "C" { */
#endif #endif
......
...@@ -157,11 +157,8 @@ gettimeofday_time(void) ...@@ -157,11 +157,8 @@ gettimeofday_time(void)
#endif #endif
#ifdef GC_DEBUG #ifdef GC_DEBUG
#include <assert.h>
#define gc_assert(expect) assert(expect)
#define DEBUG(x) (x) #define DEBUG(x) (x)
#else #else
#define gc_assert(expect) ((void)0)
#define DEBUG(x) #define DEBUG(x)
#endif #endif
...@@ -471,7 +468,7 @@ mark_context(mrb_state *mrb, struct mrb_context *c) ...@@ -471,7 +468,7 @@ mark_context(mrb_state *mrb, struct mrb_context *c)
static void static void
gc_mark_children(mrb_state *mrb, struct RBasic *obj) gc_mark_children(mrb_state *mrb, struct RBasic *obj)
{ {
gc_assert(is_gray(obj)); mrb_assert(is_gray(obj));
paint_black(obj); paint_black(obj);
mrb->gray_list = obj->gcnext; mrb->gray_list = obj->gcnext;
mrb_gc_mark(mrb, (struct RBasic*)obj->c); mrb_gc_mark(mrb, (struct RBasic*)obj->c);
...@@ -568,7 +565,7 @@ mrb_gc_mark(mrb_state *mrb, struct RBasic *obj) ...@@ -568,7 +565,7 @@ mrb_gc_mark(mrb_state *mrb, struct RBasic *obj)
{ {
if (obj == 0) return; if (obj == 0) return;
if (!is_white(obj)) return; if (!is_white(obj)) return;
gc_assert((obj)->tt != MRB_TT_FREE); mrb_assert((obj)->tt != MRB_TT_FREE);
add_gray_list(mrb, obj); add_gray_list(mrb, obj);
} }
...@@ -803,11 +800,11 @@ final_marking_phase(mrb_state *mrb) ...@@ -803,11 +800,11 @@ final_marking_phase(mrb_state *mrb)
{ {
mark_context_stack(mrb, mrb->root_c); mark_context_stack(mrb, mrb->root_c);
gc_mark_gray_list(mrb); gc_mark_gray_list(mrb);
gc_assert(mrb->gray_list == NULL); mrb_assert(mrb->gray_list == NULL);
mrb->gray_list = mrb->atomic_gray_list; mrb->gray_list = mrb->atomic_gray_list;
mrb->atomic_gray_list = NULL; mrb->atomic_gray_list = NULL;
gc_mark_gray_list(mrb); gc_mark_gray_list(mrb);
gc_assert(mrb->gray_list == NULL); mrb_assert(mrb->gray_list == NULL);
} }
static void static void
...@@ -907,7 +904,7 @@ incremental_gc(mrb_state *mrb, size_t limit) ...@@ -907,7 +904,7 @@ incremental_gc(mrb_state *mrb, size_t limit)
} }
default: default:
/* unknown state */ /* unknown state */
gc_assert(0); mrb_assert(0);
return 0; return 0;
} }
} }
...@@ -939,7 +936,7 @@ clear_all_old(mrb_state *mrb) ...@@ -939,7 +936,7 @@ clear_all_old(mrb_state *mrb)
{ {
size_t origin_mode = mrb->is_generational_gc_mode; size_t origin_mode = mrb->is_generational_gc_mode;
gc_assert(is_generational(mrb)); mrb_assert(is_generational(mrb));
if (is_major_gc(mrb)) { if (is_major_gc(mrb)) {
incremental_gc_until(mrb, GC_STATE_NONE); incremental_gc_until(mrb, GC_STATE_NONE);
} }
...@@ -967,7 +964,7 @@ mrb_incremental_gc(mrb_state *mrb) ...@@ -967,7 +964,7 @@ mrb_incremental_gc(mrb_state *mrb)
} }
if (mrb->gc_state == GC_STATE_NONE) { if (mrb->gc_state == GC_STATE_NONE) {
gc_assert(mrb->live >= mrb->gc_live_after_mark); mrb_assert(mrb->live >= mrb->gc_live_after_mark);
mrb->gc_threshold = (mrb->gc_live_after_mark/100) * mrb->gc_interval_ratio; mrb->gc_threshold = (mrb->gc_live_after_mark/100) * mrb->gc_interval_ratio;
if (mrb->gc_threshold < GC_STEP_SIZE) { if (mrb->gc_threshold < GC_STEP_SIZE) {
mrb->gc_threshold = GC_STEP_SIZE; mrb->gc_threshold = GC_STEP_SIZE;
...@@ -1047,14 +1044,14 @@ mrb_field_write_barrier(mrb_state *mrb, struct RBasic *obj, struct RBasic *value ...@@ -1047,14 +1044,14 @@ mrb_field_write_barrier(mrb_state *mrb, struct RBasic *obj, struct RBasic *value
if (!is_black(obj)) return; if (!is_black(obj)) return;
if (!is_white(value)) return; if (!is_white(value)) return;
gc_assert(!is_dead(mrb, value) && !is_dead(mrb, obj)); mrb_assert(!is_dead(mrb, value) && !is_dead(mrb, obj));
gc_assert(is_generational(mrb) || mrb->gc_state != GC_STATE_NONE); mrb_assert(is_generational(mrb) || mrb->gc_state != GC_STATE_NONE);
if (is_generational(mrb) || mrb->gc_state == GC_STATE_MARK) { if (is_generational(mrb) || mrb->gc_state == GC_STATE_MARK) {
add_gray_list(mrb, value); add_gray_list(mrb, value);
} }
else { else {
gc_assert(mrb->gc_state == GC_STATE_SWEEP); mrb_assert(mrb->gc_state == GC_STATE_SWEEP);
paint_partial_white(mrb, obj); /* for never write barriers */ paint_partial_white(mrb, obj); /* for never write barriers */
} }
} }
...@@ -1073,8 +1070,8 @@ mrb_write_barrier(mrb_state *mrb, struct RBasic *obj) ...@@ -1073,8 +1070,8 @@ mrb_write_barrier(mrb_state *mrb, struct RBasic *obj)
{ {
if (!is_black(obj)) return; if (!is_black(obj)) return;
gc_assert(!is_dead(mrb, obj)); mrb_assert(!is_dead(mrb, obj));
gc_assert(is_generational(mrb) || mrb->gc_state != GC_STATE_NONE); mrb_assert(is_generational(mrb) || mrb->gc_state != GC_STATE_NONE);
paint_gray(obj); paint_gray(obj);
obj->gcnext = mrb->atomic_gray_list; obj->gcnext = mrb->atomic_gray_list;
mrb->atomic_gray_list = obj; mrb->atomic_gray_list = obj;
...@@ -1211,7 +1208,7 @@ change_gen_gc_mode(mrb_state *mrb, mrb_int enable) ...@@ -1211,7 +1208,7 @@ change_gen_gc_mode(mrb_state *mrb, mrb_int enable)
{ {
if (is_generational(mrb) && !enable) { if (is_generational(mrb) && !enable) {
clear_all_old(mrb); clear_all_old(mrb);
gc_assert(mrb->gc_state == GC_STATE_NONE); mrb_assert(mrb->gc_state == GC_STATE_NONE);
mrb->gc_full = FALSE; mrb->gc_full = FALSE;
} }
else if (!is_generational(mrb) && enable) { else if (!is_generational(mrb) && enable) {
...@@ -1323,7 +1320,7 @@ test_mrb_field_write_barrier(void) ...@@ -1323,7 +1320,7 @@ test_mrb_field_write_barrier(void)
mrb->gc_state = GC_STATE_MARK; mrb->gc_state = GC_STATE_MARK;
mrb_field_write_barrier(mrb, obj, value); mrb_field_write_barrier(mrb, obj, value);
gc_assert(is_gray(value)); mrb_assert(is_gray(value));
puts(" in GC_STATE_SWEEP"); puts(" in GC_STATE_SWEEP");
...@@ -1331,8 +1328,8 @@ test_mrb_field_write_barrier(void) ...@@ -1331,8 +1328,8 @@ test_mrb_field_write_barrier(void)
mrb->gc_state = GC_STATE_SWEEP; mrb->gc_state = GC_STATE_SWEEP;
mrb_field_write_barrier(mrb, obj, value); mrb_field_write_barrier(mrb, obj, value);
gc_assert(obj->color & mrb->current_white_part); mrb_assert(obj->color & mrb->current_white_part);
gc_assert(value->color & mrb->current_white_part); mrb_assert(value->color & mrb->current_white_part);
puts(" fail with black"); puts(" fail with black");
...@@ -1341,7 +1338,7 @@ test_mrb_field_write_barrier(void) ...@@ -1341,7 +1338,7 @@ test_mrb_field_write_barrier(void)
paint_partial_white(mrb,value); paint_partial_white(mrb,value);
mrb_field_write_barrier(mrb, obj, value); mrb_field_write_barrier(mrb, obj, value);
gc_assert(obj->color & mrb->current_white_part); mrb_assert(obj->color & mrb->current_white_part);
puts(" fail with gray"); puts(" fail with gray");
...@@ -1350,7 +1347,7 @@ test_mrb_field_write_barrier(void) ...@@ -1350,7 +1347,7 @@ test_mrb_field_write_barrier(void)
paint_gray(value); paint_gray(value);
mrb_field_write_barrier(mrb, obj, value); mrb_field_write_barrier(mrb, obj, value);
gc_assert(is_gray(value)); mrb_assert(is_gray(value));
{ {
...@@ -1363,7 +1360,7 @@ test_mrb_field_write_barrier(void) ...@@ -1363,7 +1360,7 @@ test_mrb_field_write_barrier(void)
mrb->gc_state = GC_STATE_MARK; mrb->gc_state = GC_STATE_MARK;
mrb_field_write_barrier_value(mrb, obj, value); mrb_field_write_barrier_value(mrb, obj, value);
gc_assert(is_gray(mrb_basic_ptr(value))); mrb_assert(is_gray(mrb_basic_ptr(value)));
} }
mrb_close(mrb); mrb_close(mrb);
...@@ -1383,15 +1380,15 @@ test_mrb_write_barrier(void) ...@@ -1383,15 +1380,15 @@ test_mrb_write_barrier(void)
mrb->gc_state = GC_STATE_MARK; mrb->gc_state = GC_STATE_MARK;
mrb_write_barrier(mrb, obj); mrb_write_barrier(mrb, obj);
gc_assert(is_gray(obj)); mrb_assert(is_gray(obj));
gc_assert(mrb->atomic_gray_list == obj); mrb_assert(mrb->atomic_gray_list == obj);
puts(" fail with gray"); puts(" fail with gray");
paint_gray(obj); paint_gray(obj);
mrb_write_barrier(mrb, obj); mrb_write_barrier(mrb, obj);
gc_assert(is_gray(obj)); mrb_assert(is_gray(obj));
mrb_close(mrb); mrb_close(mrb);
} }
...@@ -1404,17 +1401,17 @@ test_add_gray_list(void) ...@@ -1404,17 +1401,17 @@ test_add_gray_list(void)
puts("test_add_gray_list"); puts("test_add_gray_list");
change_gen_gc_mode(mrb, FALSE); change_gen_gc_mode(mrb, FALSE);
gc_assert(mrb->gray_list == NULL); mrb_assert(mrb->gray_list == NULL);
obj1 = mrb_basic_ptr(mrb_str_new_cstr(mrb, "test")); obj1 = mrb_basic_ptr(mrb_str_new_cstr(mrb, "test"));
add_gray_list(mrb, obj1); add_gray_list(mrb, obj1);
gc_assert(mrb->gray_list == obj1); mrb_assert(mrb->gray_list == obj1);
gc_assert(is_gray(obj1)); mrb_assert(is_gray(obj1));
obj2 = mrb_basic_ptr(mrb_str_new_cstr(mrb, "test")); obj2 = mrb_basic_ptr(mrb_str_new_cstr(mrb, "test"));
add_gray_list(mrb, obj2); add_gray_list(mrb, obj2);
gc_assert(mrb->gray_list == obj2); mrb_assert(mrb->gray_list == obj2);
gc_assert(mrb->gray_list->gcnext == obj1); mrb_assert(mrb->gray_list->gcnext == obj1);
gc_assert(is_gray(obj2)); mrb_assert(is_gray(obj2));
mrb_close(mrb); mrb_close(mrb);
} }
...@@ -1433,8 +1430,8 @@ test_gc_gray_mark(void) ...@@ -1433,8 +1430,8 @@ test_gc_gray_mark(void)
obj = (struct RBasic*)mrb->object_class; obj = (struct RBasic*)mrb->object_class;
paint_gray(obj); paint_gray(obj);
gray_num = gc_gray_mark(mrb, obj); gray_num = gc_gray_mark(mrb, obj);
gc_assert(is_black(obj)); mrb_assert(is_black(obj));
gc_assert(gray_num > 1); mrb_assert(gray_num > 1);
puts(" in MRB_TT_ARRAY"); puts(" in MRB_TT_ARRAY");
obj_v = mrb_ary_new(mrb); obj_v = mrb_ary_new(mrb);
...@@ -1443,9 +1440,9 @@ test_gc_gray_mark(void) ...@@ -1443,9 +1440,9 @@ test_gc_gray_mark(void)
paint_partial_white(mrb, mrb_basic_ptr(value_v)); paint_partial_white(mrb, mrb_basic_ptr(value_v));
mrb_ary_push(mrb, obj_v, value_v); mrb_ary_push(mrb, obj_v, value_v);
gray_num = gc_gray_mark(mrb, mrb_basic_ptr(obj_v)); gray_num = gc_gray_mark(mrb, mrb_basic_ptr(obj_v));
gc_assert(is_black(mrb_basic_ptr(obj_v))); mrb_assert(is_black(mrb_basic_ptr(obj_v)));
gc_assert(is_gray(mrb_basic_ptr(value_v))); mrb_assert(is_gray(mrb_basic_ptr(value_v)));
gc_assert(gray_num == 1); mrb_assert(gray_num == 1);
mrb_close(mrb); mrb_close(mrb);
} }
...@@ -1464,13 +1461,13 @@ test_incremental_gc(void) ...@@ -1464,13 +1461,13 @@ test_incremental_gc(void)
puts(" in mrb_full_gc"); puts(" in mrb_full_gc");
mrb_full_gc(mrb); mrb_full_gc(mrb);
gc_assert(mrb->gc_state == GC_STATE_NONE); mrb_assert(mrb->gc_state == GC_STATE_NONE);
puts(" in GC_STATE_NONE"); puts(" in GC_STATE_NONE");
incremental_gc(mrb, max); incremental_gc(mrb, max);
gc_assert(mrb->gc_state == GC_STATE_MARK); mrb_assert(mrb->gc_state == GC_STATE_MARK);
puts(" in GC_STATE_MARK"); puts(" in GC_STATE_MARK");
incremental_gc_until(mrb, GC_STATE_SWEEP); incremental_gc_until(mrb, GC_STATE_SWEEP);
gc_assert(mrb->gc_state == GC_STATE_SWEEP); mrb_assert(mrb->gc_state == GC_STATE_SWEEP);
puts(" in GC_STATE_SWEEP"); puts(" in GC_STATE_SWEEP");
page = mrb->heaps; page = mrb->heaps;
...@@ -1490,13 +1487,13 @@ test_incremental_gc(void) ...@@ -1490,13 +1487,13 @@ test_incremental_gc(void)
total += MRB_HEAP_PAGE_SIZE; total += MRB_HEAP_PAGE_SIZE;
} }
gc_assert(mrb->gray_list == NULL); mrb_assert(mrb->gray_list == NULL);
incremental_gc(mrb, max); incremental_gc(mrb, max);
gc_assert(mrb->gc_state == GC_STATE_SWEEP); mrb_assert(mrb->gc_state == GC_STATE_SWEEP);
incremental_gc(mrb, max); incremental_gc(mrb, max);
gc_assert(mrb->gc_state == GC_STATE_NONE); mrb_assert(mrb->gc_state == GC_STATE_NONE);
free = (RVALUE*)mrb->heaps->freelist; free = (RVALUE*)mrb->heaps->freelist;
while (free) { while (free) {
...@@ -1504,30 +1501,30 @@ test_incremental_gc(void) ...@@ -1504,30 +1501,30 @@ test_incremental_gc(void)
free = (RVALUE*)free->as.free.next; free = (RVALUE*)free->as.free.next;
} }
gc_assert(mrb->live == live); mrb_assert(mrb->live == live);
gc_assert(mrb->live == total-freed); mrb_assert(mrb->live == total-freed);
puts("test_incremental_gc(gen)"); puts("test_incremental_gc(gen)");
incremental_gc_until(mrb, GC_STATE_SWEEP); incremental_gc_until(mrb, GC_STATE_SWEEP);
change_gen_gc_mode(mrb, TRUE); change_gen_gc_mode(mrb, TRUE);
gc_assert(mrb->gc_full == FALSE); mrb_assert(mrb->gc_full == FALSE);
gc_assert(mrb->gc_state == GC_STATE_NONE); mrb_assert(mrb->gc_state == GC_STATE_NONE);
puts(" in minor"); puts(" in minor");
gc_assert(is_minor_gc(mrb)); mrb_assert(is_minor_gc(mrb));
gc_assert(mrb->majorgc_old_threshold > 0); mrb_assert(mrb->majorgc_old_threshold > 0);
mrb->majorgc_old_threshold = 0; mrb->majorgc_old_threshold = 0;
mrb_incremental_gc(mrb); mrb_incremental_gc(mrb);
gc_assert(mrb->gc_full == TRUE); mrb_assert(mrb->gc_full == TRUE);
gc_assert(mrb->gc_state == GC_STATE_NONE); mrb_assert(mrb->gc_state == GC_STATE_NONE);
puts(" in major"); puts(" in major");
gc_assert(is_major_gc(mrb)); mrb_assert(is_major_gc(mrb));
do { do {
mrb_incremental_gc(mrb); mrb_incremental_gc(mrb);
} while (mrb->gc_state != GC_STATE_NONE); } while (mrb->gc_state != GC_STATE_NONE);
gc_assert(mrb->gc_full == FALSE); mrb_assert(mrb->gc_full == FALSE);
mrb_close(mrb); mrb_close(mrb);
} }
...@@ -1542,12 +1539,12 @@ test_incremental_sweep_phase(void) ...@@ -1542,12 +1539,12 @@ test_incremental_sweep_phase(void)
add_heap(mrb); add_heap(mrb);
mrb->sweeps = mrb->heaps; mrb->sweeps = mrb->heaps;
gc_assert(mrb->heaps->next->next == NULL); mrb_assert(mrb->heaps->next->next == NULL);
gc_assert(mrb->free_heaps->next->next == NULL); mrb_assert(mrb->free_heaps->next->next == NULL);
incremental_sweep_phase(mrb, MRB_HEAP_PAGE_SIZE*3); incremental_sweep_phase(mrb, MRB_HEAP_PAGE_SIZE*3);
gc_assert(mrb->heaps->next == NULL); mrb_assert(mrb->heaps->next == NULL);
gc_assert(mrb->heaps == mrb->free_heaps); mrb_assert(mrb->heaps == mrb->free_heaps);
mrb_close(mrb); mrb_close(mrb);
} }
......
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
#include <assert.h>
#include "mruby.h" #include "mruby.h"
#include "mruby/array.h" #include "mruby/array.h"
#include "mruby/class.h" #include "mruby/class.h"
...@@ -573,12 +571,13 @@ get_valid_iv_sym(mrb_state *mrb, mrb_value iv_name) ...@@ -573,12 +571,13 @@ get_valid_iv_sym(mrb_state *mrb, mrb_value iv_name)
{ {
mrb_sym iv_name_id; mrb_sym iv_name_id;
mrb_assert(mrb_symbol_p(iv_name) || mrb_string_p(iv_name));
if (mrb_string_p(iv_name)) { if (mrb_string_p(iv_name)) {
iv_name_id = mrb_intern_cstr(mrb, RSTRING_PTR(iv_name)); iv_name_id = mrb_intern_cstr(mrb, RSTRING_PTR(iv_name));
valid_iv_name(mrb, iv_name_id, RSTRING_PTR(iv_name), RSTRING_LEN(iv_name)); valid_iv_name(mrb, iv_name_id, RSTRING_PTR(iv_name), RSTRING_LEN(iv_name));
} }
else { else {
assert(mrb_symbol_p(iv_name));
iv_name_id = mrb_symbol(iv_name); iv_name_id = mrb_symbol(iv_name);
check_iv_name(mrb, iv_name_id); check_iv_name(mrb, iv_name_id);
} }
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
#include <assert.h>
#include <float.h> #include <float.h>
#if defined(__FreeBSD__) && __FreeBSD__ < 4 #if defined(__FreeBSD__) && __FreeBSD__ < 4
# include <floatingpoint.h> # include <floatingpoint.h>
...@@ -782,7 +781,7 @@ fixdivmod(mrb_state *mrb, mrb_int x, mrb_int y, mrb_int *divp, mrb_int *modp) ...@@ -782,7 +781,7 @@ fixdivmod(mrb_state *mrb, mrb_int x, mrb_int y, mrb_int *divp, mrb_int *modp)
{ {
mrb_int div, mod; mrb_int div, mod;
/* TODO: add assert(y != 0) to make sure */ /* TODO: add mrb_assert(y != 0) to make sure */
if (y < 0) { if (y < 0) {
if (x < 0) if (x < 0)
......
/* /*
** parse.y - mruby parser ** parse.y - mruby parser
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
...@@ -272,7 +272,7 @@ new_scope(parser_state *p, node *body) ...@@ -272,7 +272,7 @@ new_scope(parser_state *p, node *body)
static node* static node*
new_begin(parser_state *p, node *body) new_begin(parser_state *p, node *body)
{ {
if (body) if (body)
return list2((node*)NODE_BEGIN, body); return list2((node*)NODE_BEGIN, body);
return cons((node*)NODE_BEGIN, 0); return cons((node*)NODE_BEGIN, 0);
} }
...@@ -909,7 +909,7 @@ parsing_heredoc_inf(parser_state *p) ...@@ -909,7 +909,7 @@ parsing_heredoc_inf(parser_state *p)
node *nd = p->parsing_heredoc; node *nd = p->parsing_heredoc;
if (nd == NULL) if (nd == NULL)
return NULL; return NULL;
/* assert(nd->car->car == NODE_HEREDOC); */ /* mrb_assert(nd->car->car == NODE_HEREDOC); */
return (parser_heredoc_info*)nd->car->cdr; return (parser_heredoc_info*)nd->car->cdr;
} }
...@@ -2744,7 +2744,7 @@ var_ref : variable ...@@ -2744,7 +2744,7 @@ var_ref : variable
{ {
$$ = var_reference(p, $1); $$ = var_reference(p, $1);
} }
| keyword_nil | keyword_nil
{ {
$$ = new_nil(p); $$ = new_nil(p);
} }
...@@ -3408,7 +3408,7 @@ scan_oct(const int *start, int len, int *retlen) ...@@ -3408,7 +3408,7 @@ scan_oct(const int *start, int len, int *retlen)
const int *s = start; const int *s = start;
int retval = 0; int retval = 0;
/* assert(len <= 3) */ /* mrb_assert(len <= 3) */
while (len-- && *s >= '0' && *s <= '7') { while (len-- && *s >= '0' && *s <= '7') {
retval <<= 3; retval <<= 3;
retval |= *s++ - '0'; retval |= *s++ - '0';
...@@ -3426,7 +3426,7 @@ scan_hex(const int *start, int len, int *retlen) ...@@ -3426,7 +3426,7 @@ scan_hex(const int *start, int len, int *retlen)
register int retval = 0; register int retval = 0;
char *tmp; char *tmp;
/* assert(len <= 2) */ /* mrb_assert(len <= 2) */
while (len-- && *s && (tmp = (char*)strchr(hexdigit, *s))) { while (len-- && *s && (tmp = (char*)strchr(hexdigit, *s))) {
retval <<= 4; retval <<= 4;
retval |= (tmp - hexdigit) & 15; retval |= (tmp - hexdigit) & 15;
...@@ -3686,7 +3686,7 @@ parse_string(parser_state *p) ...@@ -3686,7 +3686,7 @@ parse_string(parser_state *p)
tokadd(p, c); tokadd(p, c);
} }
tokfix(p); tokfix(p);
p->lstate = EXPR_END; p->lstate = EXPR_END;
...@@ -3731,7 +3731,7 @@ parse_string(parser_state *p) ...@@ -3731,7 +3731,7 @@ parse_string(parser_state *p)
yylval.nd = new_str(p, tok(p), toklen(p)); yylval.nd = new_str(p, tok(p), toklen(p));
return tSTRING; return tSTRING;
} }
static int static int
heredoc_identifier(parser_state *p) heredoc_identifier(parser_state *p)
...@@ -4813,7 +4813,7 @@ parser_yylex(parser_state *p) ...@@ -4813,7 +4813,7 @@ parser_yylex(parser_state *p)
pushback(p, c); pushback(p, c);
if (last_state == EXPR_FNAME) goto gvar; if (last_state == EXPR_FNAME) goto gvar;
tokfix(p); tokfix(p);
yylval.nd = new_nth_ref(p, atoi(tok(p))); yylval.nd = new_nth_ref(p, atoi(tok(p)));
return tNTH_REF; return tNTH_REF;
default: default:
...@@ -5176,7 +5176,7 @@ parser_state* ...@@ -5176,7 +5176,7 @@ parser_state*
mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c) mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c)
{ {
parser_state *p; parser_state *p;
p = mrb_parser_new(mrb); p = mrb_parser_new(mrb);
if (!p) return 0; if (!p) return 0;
p->s = p->send = NULL; p->s = p->send = NULL;
...@@ -5561,7 +5561,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset) ...@@ -5561,7 +5561,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
printf("NODE_CALL:\n"); printf("NODE_CALL:\n");
parser_dump(mrb, tree->car, offset+1); parser_dump(mrb, tree->car, offset+1);
dump_prefix(offset+1); dump_prefix(offset+1);
printf("method='%s' (%d)\n", printf("method='%s' (%d)\n",
mrb_sym2name(mrb, sym(tree->cdr->car)), mrb_sym2name(mrb, sym(tree->cdr->car)),
(int)(intptr_t)tree->cdr->car); (int)(intptr_t)tree->cdr->car);
tree = tree->cdr->cdr->car; tree = tree->cdr->cdr->car;
......
...@@ -21,10 +21,6 @@ inspect_main(mrb_state *mrb, mrb_value mod) ...@@ -21,10 +21,6 @@ inspect_main(mrb_state *mrb, mrb_value mod)
return mrb_str_new(mrb, "main", 4); return mrb_str_new(mrb, "main", 4);
} }
#ifdef MRB_NAN_BOXING
#include <assert.h>
#endif
mrb_state* mrb_state*
mrb_open_allocf(mrb_allocf f, void *ud) mrb_open_allocf(mrb_allocf f, void *ud)
{ {
...@@ -33,7 +29,7 @@ mrb_open_allocf(mrb_allocf f, void *ud) ...@@ -33,7 +29,7 @@ mrb_open_allocf(mrb_allocf f, void *ud)
mrb_state *mrb; mrb_state *mrb;
#ifdef MRB_NAN_BOXING #ifdef MRB_NAN_BOXING
assert(sizeof(void*) == 4); mrb_assert(sizeof(void*) == 4);
#endif #endif
mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state), ud); mrb = (mrb_state *)(f)(NULL, NULL, sizeof(mrb_state), ud);
...@@ -192,7 +188,7 @@ mrb_value ...@@ -192,7 +188,7 @@ mrb_value
mrb_top_self(mrb_state *mrb) mrb_top_self(mrb_state *mrb)
{ {
if (!mrb->top_self) { if (!mrb->top_self) {
mrb->top_self = (struct RObject*)mrb_obj_alloc(mrb, MRB_TT_OBJECT, mrb->object_class); mrb->top_self = (struct RObject*)mrb_obj_alloc(mrb, MRB_TT_OBJECT, mrb->object_class);
mrb_define_singleton_method(mrb, mrb->top_self, "inspect", inspect_main, MRB_ARGS_NONE()); mrb_define_singleton_method(mrb, mrb->top_self, "inspect", inspect_main, MRB_ARGS_NONE());
mrb_define_singleton_method(mrb, mrb->top_self, "to_s", inspect_main, MRB_ARGS_NONE()); mrb_define_singleton_method(mrb, mrb->top_self, "to_s", inspect_main, MRB_ARGS_NONE());
} }
......
...@@ -92,12 +92,12 @@ stack_init(mrb_state *mrb) ...@@ -92,12 +92,12 @@ stack_init(mrb_state *mrb)
{ {
struct mrb_context *c = mrb->c; struct mrb_context *c = mrb->c;
/* assert(mrb->stack == NULL); */ /* mrb_assert(mrb->stack == NULL); */
c->stbase = (mrb_value *)mrb_calloc(mrb, STACK_INIT_SIZE, sizeof(mrb_value)); c->stbase = (mrb_value *)mrb_calloc(mrb, STACK_INIT_SIZE, sizeof(mrb_value));
c->stend = c->stbase + STACK_INIT_SIZE; c->stend = c->stbase + STACK_INIT_SIZE;
c->stack = c->stbase; c->stack = c->stbase;
/* assert(ci == NULL); */ /* mrb_assert(ci == NULL); */
c->cibase = (mrb_callinfo *)mrb_calloc(mrb, CALLINFO_INIT_SIZE, sizeof(mrb_callinfo)); c->cibase = (mrb_callinfo *)mrb_calloc(mrb, CALLINFO_INIT_SIZE, sizeof(mrb_callinfo));
c->ciend = c->cibase + CALLINFO_INIT_SIZE; c->ciend = c->cibase + CALLINFO_INIT_SIZE;
c->ci = c->cibase; c->ci = c->cibase;
...@@ -544,7 +544,7 @@ void mrb_gv_val_set(mrb_state *mrb, mrb_sym sym, mrb_value val); ...@@ -544,7 +544,7 @@ void mrb_gv_val_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
mrb_value mrb_value
mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
{ {
/* assert(mrb_proc_cfunc_p(proc)) */ /* mrb_assert(mrb_proc_cfunc_p(proc)) */
mrb_irep *irep = proc->body.irep; mrb_irep *irep = proc->body.irep;
mrb_code *pc = irep->iseq; mrb_code *pc = irep->iseq;
mrb_value *pool = irep->pool; mrb_value *pool = irep->pool;
......
...@@ -262,6 +262,11 @@ module MRuby ...@@ -262,6 +262,11 @@ module MRuby
IO.popen("#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}", 'r+') do |io| IO.popen("#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}", 'r+') do |io|
out.puts io.read out.puts io.read
end end
# if mrbc execution fail, drop the file
if not $?.exitstatus
File.delete(out.path)
exit -1
end
end end
end end
......
...@@ -3,4 +3,5 @@ MRuby::Build.new do |conf| ...@@ -3,4 +3,5 @@ MRuby::Build.new do |conf|
# include all core GEMs # include all core GEMs
conf.gembox 'full-core' conf.gembox 'full-core'
conf.cc.defines = %w(MRB_DEBUG)
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment