Commit efa46146 authored by Paolo Bosetti's avatar Paolo Bosetti

Merge branch 'master' into XCode

Also, fixed issue in Xcode project build settings
parents 44107955 23e88dba
...@@ -13,6 +13,12 @@ ...@@ -13,6 +13,12 @@
/* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */ /* add -DMRB_USE_FLOAT to use float instead of double for floating point numbers */
//#define MRB_USE_FLOAT //#define MRB_USE_FLOAT
/* represent mrb_value in boxed double; conflict with MRB_USE_FLOAT */
//#define MRB_NAN_BOXING
/* define on big endian machines; used by MRB_NAN_BOXING */
//#define MRB_ENDIAN_BIG
/* argv max size in mrb_funcall */ /* argv max size in mrb_funcall */
//#define MRB_FUNCALL_ARGC_MAX 16 //#define MRB_FUNCALL_ARGC_MAX 16
...@@ -54,8 +60,13 @@ typedef double mrb_float; ...@@ -54,8 +60,13 @@ typedef double mrb_float;
#endif #endif
#define readfloat(p) (mrb_float)strtod((p),NULL) #define readfloat(p) (mrb_float)strtod((p),NULL)
#ifdef MRB_NAN_BOXING
typedef int32_t mrb_int;
typedef int32_t mrb_sym;
#else
typedef int mrb_int; typedef int mrb_int;
typedef intptr_t mrb_sym; typedef intptr_t mrb_sym;
#endif
/* define ENABLE_XXXX from DISABLE_XXX */ /* define ENABLE_XXXX from DISABLE_XXX */
#ifndef DISABLE_REGEXP #ifndef DISABLE_REGEXP
......
...@@ -35,154 +35,7 @@ extern "C" { ...@@ -35,154 +35,7 @@ extern "C" {
#include <stdlib.h> #include <stdlib.h>
#include "mrbconf.h" #include "mrbconf.h"
enum mrb_vtype { #include "mruby/value.h"
MRB_TT_FALSE = 0, /* 0 */
MRB_TT_FREE, /* 1 */
MRB_TT_TRUE, /* 2 */
MRB_TT_FIXNUM, /* 3 */
MRB_TT_SYMBOL, /* 4 */
MRB_TT_UNDEF, /* 5 */
MRB_TT_FLOAT, /* 6 */
MRB_TT_OBJECT, /* 7 */
MRB_TT_CLASS, /* 8 */
MRB_TT_MODULE, /* 9 */
MRB_TT_ICLASS, /* 10 */
MRB_TT_SCLASS, /* 11 */
MRB_TT_PROC, /* 12 */
MRB_TT_ARRAY, /* 13 */
MRB_TT_HASH, /* 14 */
MRB_TT_STRING, /* 15 */
MRB_TT_RANGE, /* 16 */
MRB_TT_REGEX, /* 17 */
MRB_TT_STRUCT, /* 18 */
MRB_TT_EXCEPTION, /* 19 */
MRB_TT_MATCH, /* 20 */
MRB_TT_FILE, /* 21 */
MRB_TT_ENV, /* 22 */
MRB_TT_DATA, /* 23 */
MRB_TT_MAXDEFINE /* 24 */
};
typedef struct mrb_value {
union {
mrb_float f;
void *p;
mrb_int i;
mrb_sym sym;
} value;
enum mrb_vtype tt:8;
} mrb_value;
#define mrb_type(o) (o).tt
#define mrb_nil_p(o) ((o).tt == MRB_TT_FALSE && !(o).value.i)
#define mrb_test(o) ((o).tt != MRB_TT_FALSE)
#define mrb_fixnum(o) (o).value.i
#define mrb_float(o) (o).value.f
#define mrb_symbol(o) (o).value.sym
#define mrb_object(o) ((struct RBasic *) (o).value.p)
#define FIXNUM_P(o) ((o).tt == MRB_TT_FIXNUM)
#define mrb_undef_p(o) ((o).tt == MRB_TT_UNDEF)
#include "mruby/object.h"
#define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_FLOAT)
#define SPECIAL_CONST_P(x) IMMEDIATE_P(x)
#define SYMBOL_P(o) (mrb_type(o) == MRB_TT_SYMBOL)
#define RTEST(o) mrb_test(o)
#define FL_ABLE(x) (!SPECIAL_CONST_P(x))
#define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0)
#define FL_ANY(x,f) FL_TEST(x,f)
#define FL_ALL(x,f) (FL_TEST(x,f) == (f))
#define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0)
#define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0)
static inline mrb_int
mrb_special_const_p(mrb_value obj)
{
if (SPECIAL_CONST_P(obj)) return 1;
return 0;
}
static inline mrb_value
mrb_fixnum_value(mrb_int i)
{
mrb_value v;
v.tt = MRB_TT_FIXNUM;
v.value.i = i;
return v;
}
static inline mrb_value
mrb_float_value(mrb_float f)
{
mrb_value v;
v.tt = MRB_TT_FLOAT;
v.value.f = f;
return v;
}
static inline mrb_value
mrb_symbol_value(mrb_sym i)
{
mrb_value v;
v.tt = MRB_TT_SYMBOL;
v.value.sym = i;
return v;
}
static inline mrb_value
mrb_obj_value(void *p)
{
mrb_value v;
struct RBasic *b = (struct RBasic*) p;
v.tt = b->tt;
v.value.p = p;
return v;
}
static inline mrb_value
mrb_false_value(void)
{
mrb_value v;
v.tt = MRB_TT_FALSE;
v.value.i = 1;
return v;
}
static inline mrb_value
mrb_nil_value(void)
{
mrb_value v;
v.tt = MRB_TT_FALSE;
v.value.i = 0;
return v;
}
static inline mrb_value
mrb_true_value(void)
{
mrb_value v;
v.tt = MRB_TT_TRUE;
v.value.i = 1;
return v;
}
static inline mrb_value
mrb_undef_value(void)
{
mrb_value v;
v.tt = MRB_TT_UNDEF;
v.value.i = 0;
return v;
}
typedef int32_t mrb_code; typedef int32_t mrb_code;
...@@ -376,7 +229,7 @@ int mrb_gc_arena_save(mrb_state*); ...@@ -376,7 +229,7 @@ int mrb_gc_arena_save(mrb_state*);
void mrb_gc_arena_restore(mrb_state*,int); void mrb_gc_arena_restore(mrb_state*,int);
void mrb_gc_mark(mrb_state*,struct RBasic*); void mrb_gc_mark(mrb_state*,struct RBasic*);
#define mrb_gc_mark_value(mrb,val) do {\ #define mrb_gc_mark_value(mrb,val) do {\
if ((val).tt >= MRB_TT_OBJECT) mrb_gc_mark((mrb), mrb_object(val));\ if (mrb_type(val) >= MRB_TT_OBJECT) mrb_gc_mark((mrb), mrb_object(val));\
} while (0); } while (0);
void mrb_field_write_barrier(mrb_state *, struct RBasic*, struct RBasic*); void mrb_field_write_barrier(mrb_state *, struct RBasic*, struct RBasic*);
#define mrb_field_write_barrier_value(mrb, obj, val) do{\ #define mrb_field_write_barrier_value(mrb, obj, val) do{\
......
/* /*
** array.h - Array class ** mruby/array.h - Array class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** cdump.h - mruby binary dumper (C source format) ** mruby/cdump.h - mruby binary dumper (C source format)
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** class.h - Class class ** mruby/class.h - Class class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** compile.h - mruby parser ** mruby/compile.h - mruby parser
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** data.h - Data class ** mruby/data.h - Data class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** dump.h - mruby binary dumper (Rite binary format) ** mruby/dump.h - mruby binary dumper (Rite binary format)
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** hash.h - Hash class ** mruby/hash.h - Hash class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** irep.h - mrb_irep structure ** mruby/irep.h - mrb_irep structure
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** ritehash.c - Rite Hash for mruby ** mruby/khash.c - Hash for mruby
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** numeric.h - Numeric, Integer, Float, Fixnum class ** mruby/numeric.h - Numeric, Integer, Float, Fixnum class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** object.h - Object, NilClass, TrueClass, FalseClass class ** mruby/object.h - Object, NilClass, TrueClass, FalseClass class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
...@@ -7,18 +7,13 @@ ...@@ -7,18 +7,13 @@
#ifndef MRUBY_OBJECT_H #ifndef MRUBY_OBJECT_H
#define MRUBY_OBJECT_H #define MRUBY_OBJECT_H
#if defined(__cplusplus)
extern "C" {
#endif
#define MRUBY_OBJECT_HEADER \ #define MRUBY_OBJECT_HEADER \
enum mrb_vtype tt:8; \ enum mrb_vtype tt; \
unsigned int color:3;\ unsigned int color:3;\
unsigned int flags:21;\ unsigned int flags:21;\
struct RClass *c;\ struct RClass *c;\
struct RBasic *gcnext struct RBasic *gcnext
/* white: 011, black: 100, gray: 000 */ /* white: 011, black: 100, gray: 000 */
#define MRB_GC_GRAY 0 #define MRB_GC_GRAY 0
#define MRB_GC_WHITE_A 1 #define MRB_GC_WHITE_A 1
...@@ -54,8 +49,4 @@ struct RObject { ...@@ -54,8 +49,4 @@ struct RObject {
#define ROBJECT_IVPTR(v) (((struct RObject*)((v).value.p))->iv) #define ROBJECT_IVPTR(v) (((struct RObject*)((v).value.p))->iv)
#define ROBJECT_NUMIV(v) (ROBJECT_IVPTR(v) ? ROBJECT_IVPTR(v)->size : 0) #define ROBJECT_NUMIV(v) (ROBJECT_IVPTR(v) ? ROBJECT_IVPTR(v)->size : 0)
#if defined(__cplusplus)
} /* extern "C" { */
#endif
#endif /* MRUBY_OBJECT_H */ #endif /* MRUBY_OBJECT_H */
/* /*
** proc.h - Proc class ** mruby/proc.h - Proc class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** range.h - Range class ** mruby/range.h - Range class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** string.h - String class ** mruby/string.h - String class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/* /*
** struct.h - Struct class ** mruby/struct.h - Struct class
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
/*
** mruby/value.h - mrb_value definition
**
** See Copyright Notice in mruby.h
*/
#ifndef MRUBY_VALUE_H
#define MRUBY_VALUE_H
#ifndef MRB_NAN_BOXING
enum mrb_vtype {
MRB_TT_FALSE = 0, /* 0 */
MRB_TT_FREE, /* 1 */
MRB_TT_TRUE, /* 2 */
MRB_TT_FIXNUM, /* 3 */
MRB_TT_SYMBOL, /* 4 */
MRB_TT_UNDEF, /* 5 */
MRB_TT_FLOAT, /* 6 */
MRB_TT_OBJECT, /* 7 */
MRB_TT_CLASS, /* 8 */
MRB_TT_MODULE, /* 9 */
MRB_TT_ICLASS, /* 10 */
MRB_TT_SCLASS, /* 11 */
MRB_TT_PROC, /* 12 */
MRB_TT_ARRAY, /* 13 */
MRB_TT_HASH, /* 14 */
MRB_TT_STRING, /* 15 */
MRB_TT_RANGE, /* 16 */
MRB_TT_REGEX, /* 17 */
MRB_TT_STRUCT, /* 18 */
MRB_TT_EXCEPTION, /* 19 */
MRB_TT_MATCH, /* 20 */
MRB_TT_FILE, /* 21 */
MRB_TT_ENV, /* 22 */
MRB_TT_DATA, /* 23 */
MRB_TT_MAXDEFINE /* 24 */
};
typedef struct mrb_value {
union {
mrb_float f;
void *p;
mrb_int i;
mrb_sym sym;
} value;
enum mrb_vtype tt:8;
} mrb_value;
#define mrb_type(o) (o).tt
#define mrb_float(o) (o).value.f
#define MRB_SET_VALUE(o, ttt, attr, v) do {\
(o).tt = ttt;\
(o).attr = v;\
} while (0);
static inline mrb_value
mrb_float_value(mrb_float f)
{
mrb_value v;
MRB_SET_VALUE(v, MRB_TT_FLOAT, value.f, f);
return v;
}
#else /* MRB_NAN_BOXING */
#ifdef MRB_USE_FLOAT
# error ---->> MRB_NAN_BOXING and MRB_USE_FLOAT conflict <<----
#endif
enum mrb_vtype {
MRB_TT_FALSE = 1, /* 1 */
MRB_TT_FREE, /* 2 */
MRB_TT_TRUE, /* 3 */
MRB_TT_FIXNUM, /* 4 */
MRB_TT_SYMBOL, /* 5 */
MRB_TT_UNDEF, /* 6 */
MRB_TT_FLOAT, /* 7 */
MRB_TT_OBJECT, /* 8 */
MRB_TT_CLASS, /* 9 */
MRB_TT_MODULE, /* 10 */
MRB_TT_ICLASS, /* 11 */
MRB_TT_SCLASS, /* 12 */
MRB_TT_PROC, /* 13 */
MRB_TT_ARRAY, /* 14 */
MRB_TT_HASH, /* 15 */
MRB_TT_STRING, /* 16 */
MRB_TT_RANGE, /* 17 */
MRB_TT_REGEX, /* 18 */
MRB_TT_STRUCT, /* 19 */
MRB_TT_EXCEPTION, /* 20 */
MRB_TT_MATCH, /* 21 */
MRB_TT_FILE, /* 22 */
MRB_TT_ENV, /* 23 */
MRB_TT_DATA, /* 24 */
MRB_TT_MAXDEFINE /* 25 */
};
#ifdef MRB_ENDIAN_BIG
#define MRB_ENDIAN_LOHI(a,b) a b
#else
#define MRB_ENDIAN_LOHI(a,b) b a
#endif
typedef struct mrb_value {
union {
mrb_float f;
struct {
MRB_ENDIAN_LOHI(
uint32_t ttt;
,union {
void *p;
mrb_int i;
mrb_sym sym;
} value;
)
};
};
} mrb_value;
#define mrb_tt(o) ((o).ttt & 0xff)
#define mrb_mktt(tt) (0xfff00000|(tt))
#define mrb_type(o) ((uint32_t)0xfff00000 < (o).ttt ? mrb_tt(o) : MRB_TT_FLOAT)
#define mrb_float(o) (o).f
#define MRB_SET_VALUE(o, tt, attr, v) do {\
(o).ttt = mrb_mktt(tt);\
(o).attr = v;\
} while (0);
static inline mrb_value
mrb_float_value(mrb_float f)
{
mrb_value v;
if (f != f) {
v.ttt = 0x7ff80000;
v.value.i = 0;
} else {
v.f = f;
}
return v;
}
#endif /* MRB_NAN_BOXING */
#define mrb_fixnum(o) (o).value.i
#define mrb_symbol(o) (o).value.sym
#define mrb_object(o) ((struct RBasic *) (o).value.p)
#define FIXNUM_P(o) (mrb_type(o) == MRB_TT_FIXNUM)
#define mrb_undef_p(o) (mrb_type(o) == MRB_TT_UNDEF)
#define mrb_nil_p(o) (mrb_type(o) == MRB_TT_FALSE && !(o).value.i)
#define mrb_test(o) (mrb_type(o) != MRB_TT_FALSE)
#include "mruby/object.h"
#define IMMEDIATE_P(x) (mrb_type(x) <= MRB_TT_FLOAT)
#define SPECIAL_CONST_P(x) IMMEDIATE_P(x)
#define SYMBOL_P(o) (mrb_type(o) == MRB_TT_SYMBOL)
#define RTEST(o) mrb_test(o)
#define FL_ABLE(x) (!SPECIAL_CONST_P(x))
#define FL_TEST(x,f) (FL_ABLE(x)?(RBASIC(x)->flags&(f)):0)
#define FL_ANY(x,f) FL_TEST(x,f)
#define FL_ALL(x,f) (FL_TEST(x,f) == (f))
#define FL_SET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags |= (f);} while (0)
#define FL_UNSET(x,f) do {if (FL_ABLE(x)) RBASIC(x)->flags &= ~(f);} while (0)
static inline mrb_int
mrb_special_const_p(mrb_value obj)
{
if (SPECIAL_CONST_P(obj)) return 1;
return 0;
}
static inline mrb_value
mrb_fixnum_value(mrb_int i)
{
mrb_value v;
MRB_SET_VALUE(v, MRB_TT_FIXNUM, value.i, i);
return v;
}
static inline mrb_value
mrb_symbol_value(mrb_sym i)
{
mrb_value v;
MRB_SET_VALUE(v, MRB_TT_SYMBOL, value.sym, i);
return v;
}
static inline mrb_value
mrb_obj_value(void *p)
{
mrb_value v;
struct RBasic *b = (struct RBasic*) p;
MRB_SET_VALUE(v, b->tt, value.p, p);
return v;
}
static inline mrb_value
mrb_false_value(void)
{
mrb_value v;
MRB_SET_VALUE(v, MRB_TT_FALSE, value.i, 1);
return v;
}
static inline mrb_value
mrb_nil_value(void)
{
mrb_value v;
MRB_SET_VALUE(v, MRB_TT_FALSE, value.i, 0);
return v;
}
static inline mrb_value
mrb_true_value(void)
{
mrb_value v;
MRB_SET_VALUE(v, MRB_TT_TRUE, value.i, 1);
return v;
}
static inline mrb_value
mrb_undef_value(void)
{
mrb_value v;
MRB_SET_VALUE(v, MRB_TT_UNDEF, value.i, 0);
return v;
}
#endif /* MRUBY_OBJECT_H */
/* /*
** variable.h - mruby variables ** mruby/variable.h - mruby variables
** **
** See Copyright Notice in mruby.h ** See Copyright Notice in mruby.h
*/ */
......
...@@ -135,11 +135,11 @@ make_cdump_irep(mrb_state *mrb, int irep_no, FILE *f) ...@@ -135,11 +135,11 @@ make_cdump_irep(mrb_state *mrb, int irep_no, FILE *f)
if(irep->plen > 0) { if(irep->plen > 0) {
SOURCE_CODE (" irep->pool = mrb_malloc(mrb, sizeof(mrb_value)*%d);", irep->plen); SOURCE_CODE (" irep->pool = mrb_malloc(mrb, sizeof(mrb_value)*%d);", irep->plen);
for (n=0; n<irep->plen; n++) { for (n=0; n<irep->plen; n++) {
switch (irep->pool[n].tt) { switch (mrb_type(irep->pool[n])) {
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
SOURCE_CODE(" irep->pool[%d] = mrb_float_value(%.16e);", n, irep->pool[n].value.f); break; SOURCE_CODE(" irep->pool[%d] = mrb_float_value(%.16e);", n, mrb_float(irep->pool[n])); break;
case MRB_TT_FIXNUM: case MRB_TT_FIXNUM:
SOURCE_CODE(" irep->pool[%d] = mrb_fixnum_value(%d);", n, irep->pool[n].value.i); break; SOURCE_CODE(" irep->pool[%d] = mrb_fixnum_value(%d);", n, mrb_fixnum(irep->pool[n])); break;
case MRB_TT_STRING: case MRB_TT_STRING:
str_len = str_format_len(irep->pool[n]) + 1; str_len = str_format_len(irep->pool[n]) + 1;
if ( str_len > buf_len ) { if ( str_len > buf_len ) {
......
...@@ -204,7 +204,7 @@ class_from_sym(mrb_state *mrb, struct RClass *klass, mrb_sym id) ...@@ -204,7 +204,7 @@ class_from_sym(mrb_state *mrb, struct RClass *klass, mrb_sym id)
{ {
mrb_value c = mrb_const_get(mrb, mrb_obj_value(klass), id); mrb_value c = mrb_const_get(mrb, mrb_obj_value(klass), id);
if (c.tt != MRB_TT_MODULE && c.tt != MRB_TT_CLASS) { if (mrb_type(c) != MRB_TT_MODULE && mrb_type(c) != MRB_TT_CLASS) {
mrb_raise(mrb, E_TYPE_ERROR, "%s is not a class/module", mrb_sym2name(mrb, id)); mrb_raise(mrb, E_TYPE_ERROR, "%s is not a class/module", mrb_sym2name(mrb, id));
} }
return mrb_class_ptr(c); return mrb_class_ptr(c);
...@@ -496,7 +496,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) ...@@ -496,7 +496,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
p = va_arg(ap, mrb_float*); p = va_arg(ap, mrb_float*);
if (i < argc) { if (i < argc) {
switch (sp->tt) { switch (mrb_type(*sp)) {
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
*p = mrb_float(*sp); *p = mrb_float(*sp);
break; break;
...@@ -526,7 +526,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...) ...@@ -526,7 +526,7 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
p = va_arg(ap, mrb_int*); p = va_arg(ap, mrb_int*);
if (i < argc) { if (i < argc) {
switch (sp->tt) { switch (mrb_type(*sp)) {
case MRB_TT_FIXNUM: case MRB_TT_FIXNUM:
*p = mrb_fixnum(*sp); *p = mrb_fixnum(*sp);
break; break;
...@@ -1264,8 +1264,7 @@ undef_method(mrb_state *mrb, struct RClass *c, mrb_sym a) ...@@ -1264,8 +1264,7 @@ undef_method(mrb_state *mrb, struct RClass *c, mrb_sym a)
{ {
mrb_value m; mrb_value m;
m.tt = MRB_TT_PROC; MRB_SET_VALUE(m, MRB_TT_PROC, value.p, 0);
m.value.p = 0;
mrb_define_method_vm(mrb, c, a, m); mrb_define_method_vm(mrb, c, a, m);
} }
...@@ -1317,10 +1316,10 @@ mod_define_method(mrb_state *mrb, mrb_value self) ...@@ -1317,10 +1316,10 @@ mod_define_method(mrb_state *mrb, mrb_value self)
static mrb_sym static mrb_sym
mrb_sym_value(mrb_state *mrb, mrb_value val) mrb_sym_value(mrb_state *mrb, mrb_value val)
{ {
if(val.tt == MRB_TT_STRING) { if(mrb_type(val) == MRB_TT_STRING) {
return mrb_intern_str(mrb, val); return mrb_intern_str(mrb, val);
} }
else if(val.tt != MRB_TT_SYMBOL) { else if(mrb_type(val) != MRB_TT_SYMBOL) {
mrb_value obj = mrb_funcall(mrb, val, "inspect", 0); mrb_value obj = mrb_funcall(mrb, val, "inspect", 0);
mrb_raise(mrb, E_TYPE_ERROR, "%s is not a symbol", mrb_raise(mrb, E_TYPE_ERROR, "%s is not a symbol",
mrb_string_value_ptr(mrb, obj)); mrb_string_value_ptr(mrb, obj));
......
...@@ -224,13 +224,13 @@ get_pool_block_size(mrb_state *mrb, mrb_irep *irep, int type) ...@@ -224,13 +224,13 @@ get_pool_block_size(mrb_state *mrb, mrb_irep *irep, int type)
uint16_t nlen =0; uint16_t nlen =0;
int len; int len;
switch (irep->pool[pool_no].tt) { switch (mrb_type(irep->pool[pool_no])) {
case MRB_TT_FIXNUM: case MRB_TT_FIXNUM:
len = sprintf( buf, "%d", irep->pool[pool_no].value.i); len = sprintf( buf, "%d", mrb_fixnum(irep->pool[pool_no]));
size += (uint32_t)len; size += (uint32_t)len;
break; break;
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
len = sprintf( buf, "%.16e", irep->pool[pool_no].value.f); len = sprintf( buf, "%.16e", mrb_float(irep->pool[pool_no]));
size += (uint32_t)len; size += (uint32_t)len;
break; break;
case MRB_TT_STRING: case MRB_TT_STRING:
...@@ -343,16 +343,16 @@ write_pool_block(mrb_state *mrb, mrb_irep *irep, char *buf, int type) ...@@ -343,16 +343,16 @@ write_pool_block(mrb_state *mrb, mrb_irep *irep, char *buf, int type)
for (pool_no = 0; pool_no < irep->plen; pool_no++) { for (pool_no = 0; pool_no < irep->plen; pool_no++) {
uint16_t nlen =0; uint16_t nlen =0;
buf += uint8_dump(irep->pool[pool_no].tt, buf, type); /* data type */ buf += uint8_dump(mrb_type(irep->pool[pool_no]), buf, type); /* data type */
memset(char_buf, 0, buf_size); memset(char_buf, 0, buf_size);
switch (irep->pool[pool_no].tt) { switch (mrb_type(irep->pool[pool_no])) {
case MRB_TT_FIXNUM: case MRB_TT_FIXNUM:
sprintf(char_buf, "%d", irep->pool[pool_no].value.i); sprintf(char_buf, "%d", mrb_fixnum(irep->pool[pool_no]));
break; break;
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
sprintf(char_buf, "%.16e", irep->pool[pool_no].value.f); sprintf(char_buf, "%.16e", mrb_float(irep->pool[pool_no]));
break; break;
case MRB_TT_STRING: case MRB_TT_STRING:
......
...@@ -140,7 +140,7 @@ float_id(mrb_float f) ...@@ -140,7 +140,7 @@ float_id(mrb_float f)
mrb_int mrb_int
mrb_obj_id(mrb_value obj) mrb_obj_id(mrb_value obj)
{ {
mrb_int tt = obj.tt; mrb_int tt = mrb_type(obj);
#define MakeID2(p,t) (((intptr_t)(p))^(t)) #define MakeID2(p,t) (((intptr_t)(p))^(t))
#define MakeID(p) MakeID2(p,tt) #define MakeID(p) MakeID2(p,tt)
......
...@@ -344,7 +344,7 @@ mrb_obj_clone(mrb_state *mrb, mrb_value self) ...@@ -344,7 +344,7 @@ mrb_obj_clone(mrb_state *mrb, mrb_value self)
if (mrb_special_const_p(self)) { if (mrb_special_const_p(self)) {
mrb_raise(mrb, E_TYPE_ERROR, "can't clone %s", mrb_obj_classname(mrb, self)); mrb_raise(mrb, E_TYPE_ERROR, "can't clone %s", mrb_obj_classname(mrb, self));
} }
clone = (struct RObject*)mrb_obj_alloc(mrb, self.tt, mrb_obj_class(mrb, self)); clone = (struct RObject*)mrb_obj_alloc(mrb, mrb_type(self), mrb_obj_class(mrb, self));
clone->c = mrb_singleton_class_clone(mrb, self); clone->c = mrb_singleton_class_clone(mrb, self);
init_copy(mrb, mrb_obj_value(clone), self); init_copy(mrb, mrb_obj_value(clone), self);
......
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
int int
mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2) mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
{ {
if (v1.tt != v2.tt) return FALSE; if (mrb_type(v1) != mrb_type(v2)) return FALSE;
switch (v1.tt) { switch (mrb_type(v1)) {
case MRB_TT_TRUE: case MRB_TT_TRUE:
return 1; return 1;
...@@ -26,7 +26,7 @@ mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2) ...@@ -26,7 +26,7 @@ mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
return (v1.value.sym == v2.value.sym); return (v1.value.sym == v2.value.sym);
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
return (v1.value.f == v2.value.f); return (mrb_float(v1) == mrb_float(v2));
default: default:
return (v1.value.p == v2.value.p); return (v1.value.p == v2.value.p);
......
...@@ -392,7 +392,7 @@ range_eql(mrb_state *mrb, mrb_value range) ...@@ -392,7 +392,7 @@ range_eql(mrb_state *mrb, mrb_value range)
return mrb_false_value(); return mrb_false_value();
r = mrb_range_ptr(range); r = mrb_range_ptr(range);
if (obj.tt != MRB_TT_RANGE) return mrb_false_value(); if (mrb_type(obj) != MRB_TT_RANGE) return mrb_false_value();
o = mrb_range_ptr(obj); o = mrb_range_ptr(obj);
if (!mrb_eql(mrb, r->edges->beg, o->edges->beg)) if (!mrb_eql(mrb, r->edges->beg, o->edges->beg))
return mrb_false_value(); return mrb_false_value();
......
...@@ -677,7 +677,7 @@ mrb_const_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym) ...@@ -677,7 +677,7 @@ mrb_const_defined(mrb_state *mrb, mrb_value mod, mrb_sym sym)
static void static void
mod_const_check(mrb_state *mrb, mrb_value mod) mod_const_check(mrb_state *mrb, mrb_value mod)
{ {
switch (mod.tt) { switch (mrb_type(mod)) {
case MRB_TT_CLASS: case MRB_TT_CLASS:
case MRB_TT_MODULE: case MRB_TT_MODULE:
break; break;
......
...@@ -78,7 +78,15 @@ stack_extend(mrb_state *mrb, int room, int keep) ...@@ -78,7 +78,15 @@ stack_extend(mrb_state *mrb, int room, int keep)
envadjust(mrb, oldbase, mrb->stbase); envadjust(mrb, oldbase, mrb->stbase);
} }
if (room > keep) { if (room > keep) {
#ifndef MRB_NAN_BOXING
memset(mrb->stack+keep, 0, sizeof(mrb_value) * (room-keep)); memset(mrb->stack+keep, 0, sizeof(mrb_value) * (room-keep));
#else
int i;
for (i=keep; i<room; i++) {
mrb->stack[i] = mrb_nil_value();
}
#endif
} }
} }
...@@ -380,40 +388,12 @@ argnum_error(mrb_state *mrb, int num) ...@@ -380,40 +388,12 @@ argnum_error(mrb_state *mrb, int num)
mrb->exc = (struct RObject*)mrb_object(exc); mrb->exc = (struct RObject*)mrb_object(exc);
} }
#define SET_TRUE_VALUE(r) {\ #define SET_TRUE_VALUE(r) MRB_SET_VALUE(r, MRB_TT_TRUE, value.i, 1)
(r).tt = MRB_TT_TRUE;\ #define SET_FALSE_VALUE(r) MRB_SET_VALUE(r, MRB_TT_FALSE, value.i, 1)
(r).value.i = 1;\ #define SET_NIL_VALUE(r) MRB_SET_VALUE(r, MRB_TT_FALSE, value.i, 0)
} #define SET_INT_VALUE(r,n) MRB_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n))
#define SET_SYM_VALUE(r,v) MRB_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
#define SET_FALSE_VALUE(r) {\ #define SET_OBJ_VALUE(r,v) MRB_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v))
(r).tt = MRB_TT_FALSE;\
(r).value.i = 1;\
}
#define SET_NIL_VALUE(r) { \
(r).tt = MRB_TT_FALSE;\
(r).value.p = 0;\
}
#define SET_INT_VALUE(r,n) {\
(r).tt = MRB_TT_FIXNUM;\
(r).value.i = (n);\
}
#define SET_FLOAT_VALUE(r,v) {\
(r).tt = MRB_TT_FLOAT;\
(r).value.f = (v);\
}
#define SET_SYM_VALUE(r,v) {\
(r).tt = MRB_TT_SYMBOL;\
(r).value.sym = (v);\
}
#define SET_OBJ_VALUE(r,v) {\
(r).tt = (((struct RObject*)(v))->tt);\
(r).value.p = (void*)(v);\
}
#ifdef __GNUC__ #ifdef __GNUC__
#define DIRECT_THREADED #define DIRECT_THREADED
...@@ -496,6 +476,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -496,6 +476,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
mrb->ci->proc = proc; mrb->ci->proc = proc;
mrb->ci->nregs = irep->nregs + 2; mrb->ci->nregs = irep->nregs + 2;
regs = mrb->stack; regs = mrb->stack;
regs[0] = self;
INIT_DISPATCH { INIT_DISPATCH {
CASE(OP_NOP) { CASE(OP_NOP) {
...@@ -978,7 +959,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -978,7 +959,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
struct RArray *rest; struct RArray *rest;
int len = 0; int len = 0;
if (stack[m1].tt == MRB_TT_ARRAY) { if (mrb_type(stack[m1]) == MRB_TT_ARRAY) {
struct RArray *ary = mrb_ary_ptr(stack[m1]); struct RArray *ary = mrb_ary_ptr(stack[m1]);
pp = ary->ptr; pp = ary->ptr;
...@@ -1015,6 +996,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1015,6 +996,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
*/ */
int argc = mrb->ci->argc; int argc = mrb->ci->argc;
mrb_value *argv = regs+1; mrb_value *argv = regs+1;
mrb_value *argv0 = argv;
int len = m1 + o + r + m2; int len = m1 + o + r + m2;
mrb_value *blk = &argv[argc < 0 ? 1 : argc]; mrb_value *blk = &argv[argc < 0 ? 1 : argc];
...@@ -1032,15 +1014,19 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1032,15 +1014,19 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
} }
} }
} }
else if (len > 1 && argc == 1 && argv[0].tt == MRB_TT_ARRAY) { else if (len > 1 && argc == 1 && mrb_type(argv[0]) == MRB_TT_ARRAY) {
argc = mrb_ary_ptr(argv[0])->len; argc = mrb_ary_ptr(argv[0])->len;
argv = mrb_ary_ptr(argv[0])->ptr; argv = mrb_ary_ptr(argv[0])->ptr;
} }
mrb->ci->argc = len; mrb->ci->argc = len;
if (argc < len) { if (argc < len) {
regs[len+1] = *blk; /* move block */ regs[len+1] = *blk; /* move block */
memmove(&regs[1], argv, sizeof(mrb_value)*(argc-m2)); /* m1 + o */ if (argv0 != argv) {
memmove(&regs[len-m2+1], &argv[argc-m2], sizeof(mrb_value)*m2); /* m2 */ memmove(&regs[1], argv, sizeof(mrb_value)*(argc-m2)); /* m1 + o */
}
if (m2) {
memmove(&regs[len-m2+1], &argv[argc-m2], sizeof(mrb_value)*m2); /* m2 */
}
if (r) { /* r */ if (r) { /* r */
regs[m1+o+1] = mrb_ary_new_capa(mrb, 0); regs[m1+o+1] = mrb_ary_new_capa(mrb, 0);
} }
...@@ -1049,11 +1035,15 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1049,11 +1035,15 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
pc += argc - m1 - m2 + 1; pc += argc - m1 - m2 + 1;
} }
else { else {
memmove(&regs[1], argv, sizeof(mrb_value)*(m1+o)); /* m1 + o */ if (argv0 != argv) {
memmove(&regs[1], argv, sizeof(mrb_value)*(m1+o)); /* m1 + o */
}
if (r) { /* r */ if (r) { /* r */
regs[m1+o+1] = mrb_ary_new_elts(mrb, argc-m1-o-m2, argv+m1+o); regs[m1+o+1] = mrb_ary_new_elts(mrb, argc-m1-o-m2, argv+m1+o);
} }
memmove(&regs[m1+o+r+1], &argv[argc-m2], sizeof(mrb_value)*m2); if (m2) {
memmove(&regs[m1+o+r+1], &argv[argc-m2], sizeof(mrb_value)*m2);
}
regs[len+1] = *blk; /* move block */ regs[len+1] = *blk; /* move block */
pc += o + 1; pc += o + 1;
} }
...@@ -1248,9 +1238,16 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1248,9 +1238,16 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
NEXT; NEXT;
} }
#define attr_i value.i
#ifdef MRB_NAN_BOXING
#define attr_f f
#else
#define attr_f value.f
#endif
#define TYPES2(a,b) (((((int)(a))<<8)|((int)(b)))&0xffff) #define TYPES2(a,b) (((((int)(a))<<8)|((int)(b)))&0xffff)
#define OP_MATH_BODY(op,v1,v2) do {\ #define OP_MATH_BODY(op,v1,v2) do {\
regs[a].value.v1 = regs[a].value.v1 op regs[a+1].value.v2;\ regs[a].v1 = regs[a].v1 op regs[a+1].v2;\
} while(0) } while(0)
#define OP_MATH(op,iop,s) do {\ #define OP_MATH(op,iop,s) do {\
...@@ -1262,16 +1259,16 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1262,16 +1259,16 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
break;\ break;\
case TYPES2(MRB_TT_FIXNUM,MRB_TT_FLOAT):\ case TYPES2(MRB_TT_FIXNUM,MRB_TT_FLOAT):\
{\ {\
mrb_int x = regs[a].value.i;\ mrb_int x = mrb_fixnum(regs[a]);\
mrb_float y = regs[a+1].value.f;\ mrb_float y = mrb_float(regs[a+1]);\
SET_FLOAT_VALUE(regs[a], (mrb_float)x op y);\ regs[a] = mrb_float_value((mrb_float)x op y);\
}\ }\
break;\ break;\
case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):\ case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):\
OP_MATH_BODY(op,f,i);\ OP_MATH_BODY(op,attr_f,attr_i);\
break;\ break;\
case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\ case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
OP_MATH_BODY(op,f,f);\ OP_MATH_BODY(op,attr_f,attr_f);\
break;\ break;\
s\ s\
default:\ default:\
...@@ -1316,10 +1313,10 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1316,10 +1313,10 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
/* need to check if + is overridden */ /* need to check if + is overridden */
switch (mrb_type(regs[a])) { switch (mrb_type(regs[a])) {
case MRB_TT_FIXNUM: case MRB_TT_FIXNUM:
regs[a].value.i += GETARG_C(i); regs[a].attr_i += GETARG_C(i);
break; break;
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
regs[a].value.f += GETARG_C(i); regs[a].attr_f += GETARG_C(i);
break; break;
default: default:
SET_NIL_VALUE(regs[a+2]); SET_NIL_VALUE(regs[a+2]);
...@@ -1337,10 +1334,10 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1337,10 +1334,10 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
/* need to check if + is overridden */ /* need to check if + is overridden */
switch (mrb_type(regs[a])) { switch (mrb_type(regs[a])) {
case MRB_TT_FIXNUM: case MRB_TT_FIXNUM:
regs[a].value.i -= GETARG_C(i); regs[a].attr_i -= GETARG_C(i);
break; break;
case MRB_TT_FLOAT: case MRB_TT_FLOAT:
regs[a].value.f -= GETARG_C(i); regs[a].attr_f -= GETARG_C(i);
break; break;
default: default:
SET_NIL_VALUE(regs[a+2]); SET_NIL_VALUE(regs[a+2]);
...@@ -1352,7 +1349,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1352,7 +1349,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
} }
#define OP_CMP_BODY(op,v1,v2) do {\ #define OP_CMP_BODY(op,v1,v2) do {\
if (regs[a].value.v1 op regs[a+1].value.v2) {\ if (regs[a].v1 op regs[a+1].v2) {\
SET_TRUE_VALUE(regs[a]);\ SET_TRUE_VALUE(regs[a]);\
}\ }\
else {\ else {\
...@@ -1365,16 +1362,16 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1365,16 +1362,16 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
/* need to check if - is overridden */\ /* need to check if - is overridden */\
switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\ switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
case TYPES2(MRB_TT_FIXNUM,MRB_TT_FIXNUM):\ case TYPES2(MRB_TT_FIXNUM,MRB_TT_FIXNUM):\
OP_CMP_BODY(op,i,i); \ OP_CMP_BODY(op,attr_i,attr_i);\
break;\ break;\
case TYPES2(MRB_TT_FIXNUM,MRB_TT_FLOAT):\ case TYPES2(MRB_TT_FIXNUM,MRB_TT_FLOAT):\
OP_CMP_BODY(op,i,f);\ OP_CMP_BODY(op,attr_i,attr_f);\
break;\ break;\
case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):\ case TYPES2(MRB_TT_FLOAT,MRB_TT_FIXNUM):\
OP_CMP_BODY(op,f,i);\ OP_CMP_BODY(op,attr_f,attr_i);\
break;\ break;\
case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\ case TYPES2(MRB_TT_FLOAT,MRB_TT_FLOAT):\
OP_CMP_BODY(op,f,f);\ OP_CMP_BODY(op,attr_f,attr_f);\
break;\ break;\
default:\ default:\
SET_NIL_VALUE(regs[a+2]);\ SET_NIL_VALUE(regs[a+2]);\
...@@ -1447,7 +1444,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1447,7 +1444,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
int c = GETARG_C(i); int c = GETARG_C(i);
mrb_value v = regs[GETARG_B(i)]; mrb_value v = regs[GETARG_B(i)];
if (v.tt != MRB_TT_ARRAY) { if (mrb_type(v) != MRB_TT_ARRAY) {
if (c == 0) { if (c == 0) {
regs[GETARG_A(i)] = v; regs[GETARG_A(i)] = v;
} }
...@@ -1474,7 +1471,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ...@@ -1474,7 +1471,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
int pre = GETARG_B(i); int pre = GETARG_B(i);
int post = GETARG_C(i); int post = GETARG_C(i);
if (v.tt != MRB_TT_ARRAY) { if (mrb_type(v) != MRB_TT_ARRAY) {
regs[a++] = mrb_ary_new_capa(mrb, 0); regs[a++] = mrb_ary_new_capa(mrb, 0);
while (post--) { while (post--) {
SET_NIL_VALUE(regs[a]); SET_NIL_VALUE(regs[a]);
......
...@@ -64,8 +64,11 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args) ...@@ -64,8 +64,11 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
char *item; char *item;
if (argv[0][0] != '-') break; if (argv[0][0] != '-') break;
if (strlen(*argv) <= 1) if (strlen(*argv) <= 1) {
return -1; argc--; argv++;
args->rfp = stdin;
break;
}
item = argv[0] + 1; item = argv[0] + 1;
switch (*item++) { switch (*item++) {
...@@ -121,11 +124,10 @@ append_cmdline: ...@@ -121,11 +124,10 @@ append_cmdline:
else return -3; else return -3;
return 0; return 0;
default: default:
break; return -4;
} }
} }
if (args->rfp == NULL && args->cmdline == NULL) { if (args->rfp == NULL && args->cmdline == NULL) {
if (*argv == NULL) args->rfp = stdin; if (*argv == NULL) args->rfp = stdin;
else if ((args->rfp = fopen(*argv, args->mrbfile ? "rb" : "r")) == NULL) { else if ((args->rfp = fopen(*argv, args->mrbfile ? "rb" : "r")) == NULL) {
......
...@@ -833,7 +833,7 @@ ...@@ -833,7 +833,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "cd ../test\ncat ./assert.rb ./t/*.rb > mrbtest.rbtmp\n../Xcode/build/mrbc -Bmrbtest_irep -omrbtest.ctmp mrbtest.rbtmp\ncat init_mrbtest.c mrbtest.ctmp > mrbtest.c"; shellScript = "cd ../test\ncat ./assert.rb ./t/*.rb > mrbtest.rbtmp\n../xcode/bin/mrbc -Bmrbtest_irep -omrbtest.ctmp mrbtest.rbtmp\ncat init_mrbtest.c mrbtest.ctmp > mrbtest.c";
}; };
88760AE015759C3600113BFB /* ShellScript */ = { 88760AE015759C3600113BFB /* ShellScript */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
...@@ -846,7 +846,7 @@ ...@@ -846,7 +846,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "cd ../mrblib\ncat ./*.rb > mrblib.rbtmp\n../Xcode/build/mrbc -Bmrblib_irep -omrblib.ctmp mrblib.rbtmp\ncat init_mrblib.c mrblib.ctmp > mrblib.c"; shellScript = "cd ../mrblib\ncat ./*.rb > mrblib.rbtmp\n../xcode/bin/mrbc -Bmrblib_irep -omrblib.ctmp mrblib.rbtmp\ncat init_mrblib.c mrblib.ctmp > mrblib.c";
}; };
88760AE915759F5E00113BFB /* ShellScript */ = { 88760AE915759F5E00113BFB /* ShellScript */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
...@@ -872,7 +872,7 @@ ...@@ -872,7 +872,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "cd ../mrblib\ncat ./*.rb > mrblib.rbtmp\n../Xcode/build/mrbc -Bmrblib_irep -omrblib.ctmp mrblib.rbtmp\ncat init_mrblib.c mrblib.ctmp > mrblib.c"; shellScript = "cd ../mrblib\ncat ./*.rb > mrblib.rbtmp\n../xcode/bin/mrbc -Bmrblib_irep -omrblib.ctmp mrblib.rbtmp\ncat init_mrblib.c mrblib.ctmp > mrblib.c";
}; };
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
......
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