summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-11-16 18:10:55 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-11-16 22:49:55 +0900
commit3107d1caaee4faa3a295c503ce4cfe9fd488fea0 (patch)
tree267977b4e3849637fd0de985e064b22033057f6a /include
parent3bb419aeab67ed1802d627144be6628a6e4dc118 (diff)
downloadmruby-3107d1caaee4faa3a295c503ce4cfe9fd488fea0.tar.gz
mruby-3107d1caaee4faa3a295c503ce4cfe9fd488fea0.zip
Allow `int` size combinations for `MRB_WORD_BOXING`.
- `MRB_64BIT` and `MRB_INT32` - `MRB_32BIT` and `MRB_INT64`
Diffstat (limited to 'include')
-rw-r--r--include/mruby/boxing_word.h4
-rw-r--r--include/mruby/irep.h2
-rw-r--r--include/mruby/value.h12
3 files changed, 9 insertions, 9 deletions
diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h
index c0005dffe..afc75c0d9 100644
--- a/include/mruby/boxing_word.h
+++ b/include/mruby/boxing_word.h
@@ -7,10 +7,6 @@
#ifndef MRUBY_BOXING_WORD_H
#define MRUBY_BOXING_WORD_H
-#if defined(MRB_INT64) && !defined(MRB_64BIT)
-#error MRB_INT64 cannot be used with MRB_WORD_BOXING in 32-bit mode.
-#endif
-
#ifndef MRB_NO_FLOAT
struct RFloat {
MRB_OBJECT_HEADER;
diff --git a/include/mruby/irep.h b/include/mruby/irep.h
index 631f16027..a43e854b4 100644
--- a/include/mruby/irep.h
+++ b/include/mruby/irep.h
@@ -31,7 +31,7 @@ typedef struct mrb_pool_value {
union {
const char *str;
int32_t i32;
-#ifdef MRB_64BIT
+#if defined(MRB_64BIT) || defined(MRB_INT64)
int64_t i64;
#endif
mrb_float f;
diff --git a/include/mruby/value.h b/include/mruby/value.h
index 698c83300..bafe67ce0 100644
--- a/include/mruby/value.h
+++ b/include/mruby/value.h
@@ -56,8 +56,6 @@ struct mrb_state;
# define MRB_INT_BIT 64
# define MRB_INT_MIN INT64_MIN
# define MRB_INT_MAX INT64_MAX
-# define MRB_FIXNUM_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT)
-# define MRB_FIXNUM_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT)
# define MRB_PRIo PRIo64
# define MRB_PRId PRId64
# define MRB_PRIx PRIx64
@@ -66,13 +64,19 @@ struct mrb_state;
# define MRB_INT_BIT 32
# define MRB_INT_MIN INT32_MIN
# define MRB_INT_MAX INT32_MAX
-# define MRB_FIXNUM_MIN (INT32_MIN>>MRB_FIXNUM_SHIFT)
-# define MRB_FIXNUM_MAX (INT32_MAX>>MRB_FIXNUM_SHIFT)
# define MRB_PRIo PRIo32
# define MRB_PRId PRId32
# define MRB_PRIx PRIx32
#endif
+#if defined(MRB_64BIT) && defined(MRB_INT64)
+# define MRB_FIXNUM_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT)
+# define MRB_FIXNUM_MAX (INT64_MAX>>MRB_FIXNUM_SHIFT)
+#else
+# define MRB_FIXNUM_MIN (INT32_MIN>>MRB_FIXNUM_SHIFT)
+# define MRB_FIXNUM_MAX (INT32_MAX>>MRB_FIXNUM_SHIFT)
+#endif
+
#ifdef MRB_ENDIAN_BIG
# define MRB_ENDIAN_LOHI(a,b) a b
#else