summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/mruby/boxing_nan.h1
-rw-r--r--include/mruby/boxing_no.h5
-rw-r--r--include/mruby/boxing_word.h13
-rw-r--r--include/mruby/error.h6
-rw-r--r--include/mruby/object.h1
-rw-r--r--include/mruby/value.h13
6 files changed, 19 insertions, 20 deletions
diff --git a/include/mruby/boxing_nan.h b/include/mruby/boxing_nan.h
index 702fa13fb..4b47a3f17 100644
--- a/include/mruby/boxing_nan.h
+++ b/include/mruby/boxing_nan.h
@@ -20,7 +20,6 @@
#endif
#define MRB_FIXNUM_SHIFT 0
-#define MRB_TT_HAS_BASIC MRB_TT_OBJECT
#ifdef MRB_ENDIAN_BIG
#define MRB_ENDIAN_LOHI(a,b) a b
diff --git a/include/mruby/boxing_no.h b/include/mruby/boxing_no.h
index b22580bf6..19372b587 100644
--- a/include/mruby/boxing_no.h
+++ b/include/mruby/boxing_no.h
@@ -8,9 +8,8 @@
#define MRUBY_BOXING_NO_H
#define MRB_FIXNUM_SHIFT 0
-#define MRB_TT_HAS_BASIC MRB_TT_OBJECT
-union mrb_value_value {
+union mrb_value_union {
#ifndef MRB_WITHOUT_FLOAT
mrb_float f;
#endif
@@ -20,7 +19,7 @@ union mrb_value_value {
};
typedef struct mrb_value {
- union mrb_value_value value;
+ union mrb_value_union value;
enum mrb_vtype tt;
} mrb_value;
diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h
index bd8105496..9e4ee456f 100644
--- a/include/mruby/boxing_word.h
+++ b/include/mruby/boxing_word.h
@@ -28,11 +28,6 @@ struct RCptr {
};
#define MRB_FIXNUM_SHIFT 1
-#ifdef MRB_WITHOUT_FLOAT
-#define MRB_TT_HAS_BASIC MRB_TT_CPTR
-#else
-#define MRB_TT_HAS_BASIC MRB_TT_FLOAT
-#endif
enum mrb_special_consts {
MRB_Qnil = 0,
@@ -41,9 +36,10 @@ enum mrb_special_consts {
MRB_Qundef = 6,
};
-#define MRB_FIXNUM_FLAG 0x01
-#define MRB_SYMBOL_FLAG 0x0e
-#define MRB_SPECIAL_SHIFT 8
+#define MRB_IMMEDIATE_MASK 0x07
+#define MRB_FIXNUM_FLAG 0x01
+#define MRB_SYMBOL_FLAG 0x0e
+#define MRB_SPECIAL_SHIFT 8
#if defined(MRB_64BIT)
#define MRB_SYMBOL_BITSIZE (sizeof(mrb_sym) * CHAR_BIT)
@@ -113,6 +109,7 @@ mrb_type(mrb_value o)
}
#define mrb_bool(o) ((o).w != MRB_Qnil && (o).w != MRB_Qfalse)
+#define mrb_immediate_p(o) ((o).w & MRB_IMMEDIATE_MASK || (o).w == MRB_Qnil)
#define mrb_fixnum_p(o) ((o).value.i_flag == MRB_FIXNUM_FLAG)
#define mrb_undef_p(o) ((o).w == MRB_Qundef)
#define mrb_nil_p(o) ((o).w == MRB_Qnil)
diff --git a/include/mruby/error.h b/include/mruby/error.h
index 15855f96e..7e7ef3b71 100644
--- a/include/mruby/error.h
+++ b/include/mruby/error.h
@@ -44,21 +44,21 @@ struct RBreak {
struct RBreak {
MRB_OBJECT_HEADER;
struct RProc *proc;
- union mrb_value_value val_val;
+ union mrb_value_union value;
};
#define RBREAK_VALUE_TT_MASK ((1 << 8) - 1)
static inline mrb_value
mrb_break_value_get(struct RBreak *brk)
{
mrb_value val;
- val.value = brk->val_val;
+ val.value = brk->value;
val.tt = brk->flags & RBREAK_VALUE_TT_MASK;
return val;
}
static inline void
mrb_break_value_set(struct RBreak *brk, mrb_value val)
{
- brk->val_val = val.value;
+ brk->val_union = val.value;
brk->flags &= ~RBREAK_VALUE_TT_MASK;
brk->flags |= val.tt;
}
diff --git a/include/mruby/object.h b/include/mruby/object.h
index 1cb4ca6e8..53511a1bb 100644
--- a/include/mruby/object.h
+++ b/include/mruby/object.h
@@ -32,7 +32,6 @@ struct RObject {
};
#define mrb_obj_ptr(v) ((struct RObject*)(mrb_ptr(v)))
-#define mrb_immediate_p(x) (mrb_type(x) < MRB_TT_HAS_BASIC)
#define mrb_special_const_p(x) mrb_immediate_p(x)
struct RFiber {
diff --git a/include/mruby/value.h b/include/mruby/value.h
index 7dd3dbae2..d2b85078e 100644
--- a/include/mruby/value.h
+++ b/include/mruby/value.h
@@ -108,13 +108,13 @@ static const unsigned int IEEE754_INFINITY_BITS_SINGLE = 0x7F800000;
enum mrb_vtype {
MRB_TT_FALSE = 0, /* 0 */
- MRB_TT_FREE, /* 1 */
- MRB_TT_TRUE, /* 2 */
+ MRB_TT_TRUE, /* 1 */
+ MRB_TT_FLOAT, /* 2 */
MRB_TT_FIXNUM, /* 3 */
MRB_TT_SYMBOL, /* 4 */
MRB_TT_UNDEF, /* 5 */
- MRB_TT_FLOAT, /* 6 */
- MRB_TT_CPTR, /* 7 */
+ MRB_TT_CPTR, /* 6 */
+ MRB_TT_FREE, /* 7 */
MRB_TT_OBJECT, /* 8 */
MRB_TT_CLASS, /* 9 */
MRB_TT_MODULE, /* 10 */
@@ -161,6 +161,11 @@ typedef void mrb_value;
#include "boxing_no.h"
#endif
+#define MRB_TT_HAS_BASIC MRB_TT_FREE
+
+#ifndef mrb_immediate_p
+#define mrb_immediate_p(o) (mrb_type(o) < MRB_TT_HAS_BASIC)
+#endif
#ifndef mrb_fixnum_p
#define mrb_fixnum_p(o) (mrb_type(o) == MRB_TT_FIXNUM)
#endif