From 9fbf0ef886b5601c0c6cc8a24145a805283c9982 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 17 Nov 2020 12:38:10 +0900 Subject: Refactoring integer ranges. - Remove `mrb_ssize` - Fix `MRB_FIXNUM_{MIN,MAX}` to 32 bits on `MRB_NAN_BOXING` --- include/mruby/array.h | 6 +++--- include/mruby/boxing_nan.h | 2 ++ include/mruby/boxing_no.h | 2 ++ include/mruby/boxing_word.h | 8 ++++++++ include/mruby/string.h | 6 +++--- include/mruby/value.h | 17 ----------------- 6 files changed, 18 insertions(+), 23 deletions(-) (limited to 'include') diff --git a/include/mruby/array.h b/include/mruby/array.h index 5164efa69..61e3ab8d5 100644 --- a/include/mruby/array.h +++ b/include/mruby/array.h @@ -17,7 +17,7 @@ MRB_BEGIN_DECL typedef struct mrb_shared_array { int refcnt; - mrb_ssize len; + mrb_int len; mrb_value *ptr; } mrb_shared_array; @@ -33,9 +33,9 @@ struct RArray { MRB_OBJECT_HEADER; union { struct { - mrb_ssize len; + mrb_int len; union { - mrb_ssize capa; + mrb_int capa; mrb_shared_array *shared; } aux; mrb_value *ptr; diff --git a/include/mruby/boxing_nan.h b/include/mruby/boxing_nan.h index 96ca46ef3..5f99ced6d 100644 --- a/include/mruby/boxing_nan.h +++ b/include/mruby/boxing_nan.h @@ -21,6 +21,8 @@ #define MRB_FIXNUM_SHIFT 0 #define MRB_SYMBOL_SHIFT 0 +#define MRB_FIXNUM_MIN INT32_MIN +#define MRB_FIXNUM_MAX INT32_MAX /* value representation by nan-boxing: * float : FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF diff --git a/include/mruby/boxing_no.h b/include/mruby/boxing_no.h index 0b14590d9..84908a0d8 100644 --- a/include/mruby/boxing_no.h +++ b/include/mruby/boxing_no.h @@ -9,6 +9,8 @@ #define MRB_FIXNUM_SHIFT 0 #define MRB_SYMBOL_SHIFT 0 +#define MRB_FIXNUM_MIN MRB_INT_MIN +#define MRB_FIXNUM_MAX MRB_INT_MAX union mrb_value_union { #ifndef MRB_NO_FLOAT diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h index afc75c0d9..9e01de4ed 100644 --- a/include/mruby/boxing_word.h +++ b/include/mruby/boxing_word.h @@ -33,6 +33,14 @@ enum mrb_special_consts { #endif #define MRB_SYMBOL_SHIFT BOXWORD_SYMBOL_SHIFT +#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 + #define BOXWORD_FIXNUM_BIT_POS 1 #define BOXWORD_SYMBOL_BIT_POS 2 #define BOXWORD_FIXNUM_SHIFT BOXWORD_FIXNUM_BIT_POS diff --git a/include/mruby/string.h b/include/mruby/string.h index 8384128c7..a847a1804 100644 --- a/include/mruby/string.h +++ b/include/mruby/string.h @@ -23,9 +23,9 @@ struct RString { MRB_OBJECT_HEADER; union { struct { - mrb_ssize len; + mrb_int len; union { - mrb_ssize capa; + mrb_int capa; struct mrb_shared_string *shared; struct RString *fshared; } aux; @@ -54,7 +54,7 @@ struct RStringEmbed { RSTR_SET_EMBED_LEN((s),(n));\ }\ else {\ - (s)->as.heap.len = (mrb_ssize)(n);\ + (s)->as.heap.len = (mrb_int)(n);\ }\ } while (0) #define RSTR_EMBED_PTR(s) (((struct RStringEmbed*)(s))->ary) diff --git a/include/mruby/value.h b/include/mruby/value.h index bafe67ce0..a0d299422 100644 --- a/include/mruby/value.h +++ b/include/mruby/value.h @@ -69,14 +69,6 @@ struct mrb_state; # 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 @@ -175,15 +167,6 @@ struct RCptr { #endif #define MRB_SYMBOL_BIT (sizeof(mrb_sym) * CHAR_BIT - MRB_SYMBOL_SHIFT) -#define MRB_SYMBOL_MAX (UINT32_MAX >> MRB_SYMBOL_SHIFT) - -#if INTPTR_MAX < MRB_INT_MAX - typedef intptr_t mrb_ssize; -# define MRB_SSIZE_MAX (INTPTR_MAX>>MRB_FIXNUM_SHIFT) -#else - typedef mrb_int mrb_ssize; -# define MRB_SSIZE_MAX MRB_INT_MAX -#endif #ifndef mrb_immediate_p #define mrb_immediate_p(o) (mrb_type(o) < MRB_TT_FREE) -- cgit v1.2.3